X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-duck%2Fsrc%2Fcodecs%2Fvp3.rs;h=8c72f7ff0677e540b397a9abd228aa2891b531f2;hb=d24468d9dbd54f5cbe414649ff061699337fa7fe;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..8c72f7f 100644 --- a/nihav-duck/src/codecs/vp3.rs +++ b/nihav-duck/src/codecs/vp3.rs @@ -243,7 +243,7 @@ impl BitRunDecoder { self.run = (self.read_run)(br)?; } self.run -= 1; - Ok(self.value) + Ok(self.value) } } @@ -1108,7 +1108,7 @@ impl VP34Decoder { cur_blk += 1; } } - } + } } Ok(()) } else { @@ -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 ]; @@ -1824,7 +1824,7 @@ impl NADecoder for VP34Decoder { fn decode(&mut self, supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult { let src = pkt.get_buffer(); validate!(src.len() > 0); - let mut br = BitReader::new(&src, src.len(), BitReaderMode::BE); + let mut br = BitReader::new(&src, BitReaderMode::BE); self.parse_header(&mut br)?; if self.is_intra { @@ -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])); } }