X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-core%2Fsrc%2Fscale%2Fpalette%2Felbg.rs;h=8b67a513fdc84797b33aa103d6a57f9d7bde4a04;hb=4faa9e7d41eccb3ec29e79d5f960f9ab3c96a16a;hp=09269010aa71843c667d6f499be42d1ee6078038;hpb=4b459d0b9b76cb51c1029e6d1ffb17cf5f2d44d9;p=nihav.git diff --git a/nihav-core/src/scale/palette/elbg.rs b/nihav-core/src/scale/palette/elbg.rs index 0926901..8b67a51 100644 --- a/nihav-core/src/scale/palette/elbg.rs +++ b/nihav-core/src/scale/palette/elbg.rs @@ -8,7 +8,7 @@ impl RNG { fn new() -> Self { Self { seed: 0x1234 } } fn next(&mut self) -> u8 { if (self.seed & 0x8000) != 0 { - self.seed = (self.seed & 0x7FFF) * 2 ^ 0x1B2B; + self.seed = ((self.seed & 0x7FFF) * 2) ^ 0x1B2B; } else { self.seed <<= 1; } @@ -66,9 +66,6 @@ impl Cluster { } } fn calc_dist(&mut self) { - if self.count != 0 { - self.dist = (self.dist + self.count / 2) / self.count; - } } } @@ -198,6 +195,7 @@ impl ELBG { clu1.calc_dist(); clu0.dist + clu1.dist } + #[allow(clippy::cyclomatic_complexity)] pub fn quantise(&mut self, src: &[Pixel], dst: &mut [[u8; 3]; 256]) { if src.len() < 3 { return; @@ -231,7 +229,7 @@ impl ELBG { let mut rng = RNG::new(); let mut iterations = 0usize; let mut do_elbg_step = true; - while (iterations < 20) && (dist < prev_dist - prev_dist / 1000) { + while (iterations < 10) && (dist < prev_dist - prev_dist / 100) { prev_dist = dist; for i in 0..256 { old_cb[i] = self.clusters[i].centroid; @@ -284,7 +282,7 @@ impl ELBG { if do_elbg_step { do_elbg_step = false; for low_idx in low_u.iter() { - if high_u.len() == 0 { + if high_u.is_empty() { break; } let high_idx_idx = (rng.next() as usize) % high_u.len();