X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-duck%2Fsrc%2Fcodecs%2Fvp3.rs;h=ccb0262a38405d7c8585449451c30d1352ed6e94;hb=b8f7343a54df054ed8a0f1d81500af81a404ea3b;hp=08b1e704064b021c7c543ab599d6d2040d945b3c;hpb=67d9297a6d057134f57ecec7cb228d01069984c5;p=nihav.git diff --git a/nihav-duck/src/codecs/vp3.rs b/nihav-duck/src/codecs/vp3.rs index 08b1e70..ccb0262 100644 --- a/nihav-duck/src/codecs/vp3.rs +++ b/nihav-duck/src/codecs/vp3.rs @@ -1131,7 +1131,7 @@ impl VP34Decoder { last2_mv = last_mv; let saddr = (self.blk_addr[cur_blk] >> 2).min(self.blk_addr[cur_blk + 1] >> 2).min(self.blk_addr[cur_blk + 2] >> 2).min(self.blk_addr[cur_blk + 3] >> 2); for i in 0..4 { - let blk = &mut self.blocks[saddr + (i & 1) + (i >> 1) * self.mb_w]; + let blk = &mut self.blocks[saddr + (i & 1) + (i >> 1) * self.mb_w * 2]; blk.mv.x = br.read_cb(x_cb)? as i16; if x_sign { blk.mv.x = -blk.mv.x; @@ -1192,7 +1192,7 @@ impl VP34Decoder { fn vp40_unpack_coeffs(&mut self, br: &mut BitReader, dc_table_y: usize, dc_table_c: usize, ac_table_y: usize, ac_table_c: usize) -> DecoderResult<()> { const VP40_PRED_MASKS: [usize; 16] = [ // top, bottom, left, right 0b1010, 0b1010, 0b1000, 0b1011, - 0b1010, 0b1010, 0b0010, 0b1111, + 0b1010, 0b1010, 0b0010, 0b1110, 0b0010, 0b1010, 0b0010, 0b0110, 0b0100, 0b0111, 0b1110, 0b1110 ]; @@ -1913,9 +1913,8 @@ mod test { let mut dec_reg = RegisteredDecoders::new(); duck_register_all_codecs(&mut dec_reg); - let file = "assets/Duck/ot171_vp40.avi"; - test_file_decoding("avi", file, Some(16), true, false, None/*Some("vp4")*/, &dmx_reg, &dec_reg); -//panic!("end"); + test_decoding("avi", "vp3", "assets/Duck/ot171_vp40.avi", Some(86), &dmx_reg, &dec_reg, + ExpectedTestResult::MD5([0xd41d8cd9, 0x8f00b204, 0xe9800998, 0xecf8427e])); } }