fix clippy warnings
[nihav.git] / nihav-duck / src / codecs / vp6enc / dsp.rs
index b83cd11e09d5c96f4fb357efdbff07a52627d798..90c76b99c7244cecd8a1a6c56425d4e07ada7d55 100644 (file)
@@ -69,6 +69,21 @@ pub fn vp_fdct(blk: &mut [i16; 64]) {
     }
 }
 
+pub trait MVSearchModeCreate {
+    fn create_search(&self) -> Box<dyn MVSearch + Send>;
+}
+
+impl MVSearchModeCreate for MVSearchMode {
+    fn create_search(&self) -> Box<dyn MVSearch + Send> {
+        match *self {
+            MVSearchMode::Full      => Box::new(FullMVSearch::new()),
+            MVSearchMode::Diamond   => Box::new(DiaSearch::new()),
+            MVSearchMode::Hexagon   => Box::new(HexSearch::new()),
+            _ => unreachable!(),
+        }
+    }
+}
+
 const MAX_DIST: u32 = std::u32::MAX;
 const DIST_THRESH: u32 = 256;
 
@@ -190,10 +205,10 @@ macro_rules! pattern_search {
 
         impl MVSearch for $struct_name {
             fn search_mb(&mut self, mv_est: &mut MVEstimator, cur_blk: &[[u8; 64]; 6], mb_x: usize, mb_y: usize) -> (MV, u32) {
-                search_template!(self, mv_est, cur_blk, mb_x, mb_y, sad_mb)
+                search_template!(self, mv_est, cur_blk, mb_x, mb_y, sad_mb, DIST_THRESH)
             }
             fn search_blk(&mut self, mv_est: &mut MVEstimator, cur_blk: &[u8; 64], xpos: usize, ypos: usize) -> (MV, u32) {
-                search_template!(self, mv_est, cur_blk, xpos, ypos, sad_blk)
+                search_template!(self, mv_est, cur_blk, xpos, ypos, sad_blk, DIST_THRESH)
             }
         }
     }
@@ -311,7 +326,7 @@ impl MVEstimator {
 fn sad(src1: &[u8; 64], src2: &[u8; 64]) -> u32 {
     let mut sum = 0;
     for (&p1, &p2) in src1.iter().zip(src2.iter()) {
-        sum += (i32::from(p1) - i32::from(p2)).abs() as u32;
+        sum += (i32::from(p1) - i32::from(p2)).unsigned_abs();
     }
     sum
 }
@@ -326,7 +341,7 @@ pub fn calc_mb_dist(mb1: &ResidueMB, mb2: &ResidueMB) -> u32 {
     let mut sum = 0;
     for (blk1, blk2) in mb1.coeffs.iter().zip(mb2.coeffs.iter()) {
         for (&c1, &c2) in blk1.iter().zip(blk2.iter()) {
-            sum += (i32::from(c1) - i32::from(c2)).abs() as u32;
+            sum += (i32::from(c1) - i32::from(c2)).unsigned_abs();
         }
     }
     sum