vp3: remove debug leftovers
[nihav.git] / nihav-duck / src / codecs / vp3.rs
index 8165e7f2f3e9037ca3a27bb897498288e16c1db3..eace89e0c2383ebb7a77e89bddaa15482e0fb600 100644 (file)
@@ -611,7 +611,6 @@ impl VP34Decoder {
                 validate!(self.version == 3 || self.version == 30);
                 let mb_w                        = br.read(8)? as usize;
                 let mb_h                        = br.read(8)? as usize;
-println!(" VP30 {}x{} ({}x{})", mb_w, mb_h, self.mb_w, self.mb_h);
                 validate!(mb_w == self.mb_w && mb_h == self.mb_h);
                 if self.version == 3 {
                     self.version = 30;
@@ -619,7 +618,6 @@ println!(" VP30 {}x{} ({}x{})", mb_w, mb_h, self.mb_w, self.mb_h);
                 }
             } else {
                 let version                     = br.read(13)?;
-println!("intra, ver {} (self {})", version, self.version);
                 let coding_type                 = br.read(1)?;
                 validate!(coding_type == 0);
                                                   br.skip(2)?;
@@ -633,7 +631,6 @@ println!("intra, ver {} (self {})", version, self.version);
                     validate!(self.version == 4);
                     let mb_h                    = br.read(8)? as usize;
                     let mb_w                    = br.read(8)? as usize;
-//println!(" VP40 {}x{} ({}x{})", mb_w, mb_h, self.mb_w, self.mb_h);
                     validate!(mb_w == self.mb_w && mb_h == self.mb_h);
                     let fact1                   = br.read(5)?;
                     let fact2                   = br.read(3)?;
@@ -652,7 +649,6 @@ println!("intra, ver {} (self {})", version, self.version);
             } else {
                 VP40_LOOP_STRENGTH[self.quant]
             };
-//println!("decode frame({},{},{})", self.is_intra as u8, self.is_intra as u8, self.quant);
         Ok(())
     }
     fn vp30_unpack_sb_info(&mut self, br: &mut BitReader) -> DecoderResult<()> {
@@ -960,15 +956,19 @@ println!("intra, ver {} (self {})", version, self.version);
         let mut cur_blk = 0;
         for _ in 0..self.y_blocks/4 {
             if self.blocks[self.blk_addr[cur_blk] >> 2].btype == VPMBType::InterFourMV {
-                for _ in 0..4 {
-                    let blk = &mut self.blocks[self.blk_addr[cur_blk] >> 2];
-                    if blk.coded {
-                        blk.mv = (read_mv)(br)?;
-                        last2_mv = last_mv;
-                        last_mv = blk.mv;
-                    }
-                    cur_blk += 1;
-                }
+                let a0 = self.blk_addr[cur_blk + 0] >> 2;
+                let a1 = self.blk_addr[cur_blk + 1] >> 2;
+                let a2 = self.blk_addr[cur_blk + 2] >> 2;
+                let a3 = self.blk_addr[cur_blk + 3] >> 2;
+                let first = a0.min(a1).min(a2).min(a3);
+                let last  = a0.max(a1).max(a2).max(a3);
+                self.blocks[first + 0].mv = (read_mv)(br)?;
+                self.blocks[first + 1].mv = (read_mv)(br)?;
+                self.blocks[last  - 1].mv = (read_mv)(br)?;
+                self.blocks[last  + 0].mv = (read_mv)(br)?;
+                last2_mv = last_mv;
+                last_mv = self.blocks[last].mv;
+                cur_blk += 4;
             } else {
                 let cur_mv;
                 match self.blocks[self.blk_addr[cur_blk] >> 2].btype {
@@ -1884,11 +1884,13 @@ mod test {
         let mut dec_reg = RegisteredDecoders::new();
         duck_register_all_codecs(&mut dec_reg);
 
-        let file = "assets/Duck/vp31.avi";
+//        let file = "assets/Duck/vp31.avi";
 //        let file = "assets/Duck/vp31_crash.avi";
 //        let file = "assets/Duck/01-vp31-0500.avi";
-        test_file_decoding("avi", file, Some(3), true, false, None/*Some("vp31")*/, &dmx_reg, &dec_reg);
+//        test_file_decoding("avi", file, Some(3), true, false, None/*Some("vp31")*/, &dmx_reg, &dec_reg);
 //panic!("end");
+        test_decoding("avi", "vp3", "assets/Duck/01-vp31-0500.avi", Some(16), &dmx_reg, &dec_reg,
+                      ExpectedTestResult::MD5([0x65112f7e, 0x2914f29b, 0x2908ed2f, 0xce5fc8c5]));
     }
 
     #[test]