fix clippy warnings
[nihav.git] / nihav-qt / src / codecs / svq3.rs
index c900d3ca5386379a5cbb3eadaa23b32bd3c4bcc3..1a87ca62200fd76958a8f8ba898789ef0f38a2c2 100644 (file)
@@ -140,13 +140,13 @@ impl MVInfo {
     }
     fn reset(&mut self) {
         let size = self.w * self.h;
-        self.mv_f.truncate(0);
+        self.mv_f.clear();
         self.mv_f.resize(size, ZERO_MV);
-        self.mv_b.truncate(0);
+        self.mv_b.clear();
         self.mv_b.resize(size, ZERO_MV);
-        self.has_f.truncate(0);
+        self.has_f.clear();
         self.has_f.resize(size >> 4, false);
-        self.has_b.truncate(0);
+        self.has_b.clear();
         self.has_b.resize(size >> 4, false);
     }
     fn fill(&mut self, mb_x: usize, mb_y: usize, fwd: bool, mv: MV) {
@@ -261,7 +261,7 @@ fn decode_alt_slice(br: &mut BitReader, blk: &mut [i16; 16], mut idx: usize, end
                 SVQ3_RUNLEVEL_ALT[val as usize]
             } else {
                 let run = (val & 0x7) as usize;
-                (run, ((val >> 3) as i16) + RUN_ADD_ALT[(run as usize).min(RUN_ADD_ALT.len() - 1)])
+                (run, ((val >> 3) as i16) + RUN_ADD_ALT[run.min(RUN_ADD_ALT.len() - 1)])
             };
         idx += run;
         validate!(idx < end);
@@ -289,7 +289,7 @@ fn decode_block(br: &mut BitReader, blk: &mut [i16; 16], start: usize, alt: bool
                     SVQ3_RUNLEVEL[val as usize]
                 } else {
                     let run = (val & 0xF) as usize;
-                    (run, ((val >> 4) as i16) + RUN_ADD[(run as usize).min(RUN_ADD.len() - 1)])
+                    (run, ((val >> 4) as i16) + RUN_ADD[run.min(RUN_ADD.len() - 1)])
                 };
             idx += run;
             validate!(idx < blk.len());
@@ -434,7 +434,7 @@ fn mc_part(dframe: &mut NASimpleVideoFrame<u8>, src: NAVideoBufferRef<u8>, ebuf:
 
     copy_block(dframe, src.clone(), ebuf, 0, xoff,     yoff,     mx,  my,  bw * 4, bh * 4, 0, post, mode, ifuncs);
     copy_block(dframe, src.clone(), ebuf, 1, xoff / 2, yoff / 2, cmx, cmy, bw * 2, bh * 2, 0, post, mode, ifuncs);
-    copy_block(dframe, src.clone(), ebuf, 2, xoff / 2, yoff / 2, cmx, cmy, bw * 2, bh * 2, 0, post, mode, ifuncs);
+    copy_block(dframe, src,         ebuf, 2, xoff / 2, yoff / 2, cmx, cmy, bw * 2, bh * 2, 0, post, mode, ifuncs);
 }
 
 impl SVQ3Decoder {
@@ -518,7 +518,7 @@ unimplemented!();
             };
         let slice_len = length + llen + 1;
         validate!(src.len() >= slice_len);
-        self.slice_buf.truncate(0);
+        self.slice_buf.clear();
         if llen > 1 {
             self.slice_buf.extend_from_slice(&src[slice_len - llen + 1..][..llen - 1]);
         }
@@ -540,7 +540,7 @@ unimplemented!();
             let mbs = self.mb_w * self.mb_h;
             let mb_bits = if mbs < 64 { 6 } else { 32 - (mbs - 1).leading_zeros() } as u8;
             let _offset                 = br.read(mb_bits)?;
-println!("slice offset {}", _offset);
+//println!("slice offset {}", _offset);
         }
         let ts                          = br.read(8)? as u8;
         let quant                       = br.read(5)? as u8;
@@ -602,7 +602,7 @@ println!("slice offset {}", _offset);
         if !is_4x4 || (hdr.dquant && hdr.ftype != FrameType::I && cbp != 0) {
             let dq                      = br.read_code_signed(IntCodeType::Gamma)?;
             let new_q = i32::from(sstate.q) + dq;
-            validate!(new_q >= 0 && new_q < 32);
+            validate!((0..32).contains(&new_q));
             sstate.q = new_q as u8;
         }
         if !is_4x4 {
@@ -674,7 +674,7 @@ println!("slice offset {}", _offset);
             } else {
                 MCMode::Pixel
             };
-        let (bw, bh) = SVQ3_PART_SIZES[mb_type as usize];
+        let (bw, bh) = SVQ3_PART_SIZES[mb_type];
         let bw = (bw >> 2) as usize;
         let bh = (bh >> 2) as usize;
 
@@ -813,7 +813,7 @@ println!("slice offset {}", _offset);
         if let (Some(bwd_ref), true, true) = (self.ipbs.get_b_bwdref(), has_fwd, has_bwd) {
             let mut aframe = NASimpleVideoFrame::from_video_buf(&mut self.avg_buf).unwrap();
             let amv = MV { x: bmv.x + (self.mb_x as i16) * 16 * 6, y: bmv.y + (self.mb_y as i16) * 16 * 6 };
-            mc_part(&mut aframe, bwd_ref.clone(), &mut self.ebuf, 0, 0, 4, 4, amv, bmode, ifuncs);
+            mc_part(&mut aframe, bwd_ref, &mut self.ebuf, 0, 0, 4, 4, amv, bmode, ifuncs);
 
             let dstride = dframe.stride[0];
             let dst = &mut dframe.data[dframe.offset[0] + self.mb_x * 16 + self.mb_y * 16 * dstride..];
@@ -857,7 +857,7 @@ println!("slice offset {}", _offset);
         if hdr.dquant && cbp != 0 {
             let dq                      = br.read_code_signed(IntCodeType::Gamma)?;
             let new_q = i32::from(sstate.q) + dq;
-            validate!(new_q >= 0 && new_q < 32);
+            validate!((0..32).contains(&new_q));
             sstate.q = new_q as u8;
         }
         for sb in 0..4 {
@@ -1167,9 +1167,7 @@ impl NADecoder for SVQ3Decoder {
             }
             let ret = self.decode_slice(&mut br, &hdr, &mut dframe);
             std::mem::swap(&mut sbuf, &mut self.slice_buf);
-            if let Err(err) = ret {
-                return Err(err);
-            }
+            ret?;
             slice_prepared = false;
             off += slice_len;
         }
@@ -1230,6 +1228,7 @@ mod test {
 //let file = "assets/QT/broken_sword_Large.mov";
 //test_file_decoding("mov", file, Some(264), true, false, Some("svq3"), &dmx_reg, &dec_reg);
 //panic!("end");
+        // sample: https://samples.mplayerhq.hu/V-codecs/SVQ3/broken_sword_Large.mov
         test_decoding("mov", "sorenson-video3", "assets/QT/broken_sword_Large.mov", Some(40), &dmx_reg, &dec_reg,
                       ExpectedTestResult::MD5Frames(vec![
                         [0x16924d18, 0xccc5a0b4, 0xc2bb9412, 0x93d41f10],