X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fcodecs%2Fh263%2Fdecoder.rs;h=85d9eeaa5cbe510935c4273571b8ee710e45f30a;hb=5a3ac1b7ad4ea52f43b0464ecedffdad9db643fe;hp=4f2dbe94479ebe49438d9aded9fa451b9f1d49e8;hpb=15facd16efa3d982dcab59ca8b20cdf577b8e3e0;p=nihav.git diff --git a/src/codecs/h263/decoder.rs b/src/codecs/h263/decoder.rs index 4f2dbe9..85d9eea 100644 --- a/src/codecs/h263/decoder.rs +++ b/src/codecs/h263/decoder.rs @@ -3,7 +3,7 @@ use frame::*; use super::super::*; use super::super::blockdsp; use super::*; -use super::code::*; +//use super::code::*; use formats; #[allow(dead_code)] @@ -330,7 +330,7 @@ impl H263BaseDecoder { for t in 0..8 { self.pred_coeffs[mb_pos].hor[i][t] = blk[i][t * 8]; } for t in 0..8 { self.pred_coeffs[mb_pos].ver[i][t] = blk[i][t]; } } - h263_idct(&mut blk[i]); + bdsp.idct(&mut blk[i]); } blockdsp::put_blocks(&mut buf, mb_x, mb_y, &blk); mvi.set_zero_mv(mb_x); @@ -362,12 +362,18 @@ impl H263BaseDecoder { } for i in 0..6 { bd.decode_block_inter(&binfo, &sstate, binfo.get_q(), i, ((cbp >> (5 - i)) & 1) != 0, &mut blk[i])?; - h263_idct(&mut blk[i]); + bdsp.idct(&mut blk[i]); } blockdsp::add_blocks(&mut buf, mb_x, mb_y, &blk); + if is_b { + mvi2.set_zero_mv(mb_x); + } } else if binfo.mode != Type::B { self.mv_data.push(BlockMVInfo::Inter_1MV(ZERO_MV)); mvi.set_zero_mv(mb_x); + if is_b { + mvi2.set_zero_mv(mb_x); + } if let Some(ref srcbuf) = self.ipbs.get_lastref() { bdsp.copy_blocks(&mut buf, srcbuf, mb_x * 16, mb_y * 16, 16, 16, ZERO_MV); } @@ -430,7 +436,7 @@ impl H263BaseDecoder { if cbp != 0 { for i in 0..6 { bd.decode_block_inter(&binfo, &sstate, binfo.get_q(), i, ((cbp >> (5 - i)) & 1) != 0, &mut blk[i])?; - h263_idct(&mut blk[i]); + bdsp.idct(&mut blk[i]); } blockdsp::add_blocks(&mut buf, mb_x, mb_y, &blk); } @@ -447,7 +453,7 @@ impl H263BaseDecoder { b_mb.cbp = cbp; for i in 0..6 { bd.decode_block_inter(&binfo, &sstate, bquant, i, (cbp & (1 << (5 - i))) != 0, &mut b_mb.blk[i])?; - h263_idct(&mut b_mb.blk[i]); + bdsp.idct(&mut b_mb.blk[i]); } let is_fwd = !binfo.is_b_fwd(); @@ -483,6 +489,9 @@ impl H263BaseDecoder { } } mvi.update_row(); + if is_b { + mvi2.update_row(); + } cbpi.update_row(); sstate.new_row(); }