X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fcodecs%2Fh263%2Fdecoder.rs;h=420f6f8039343d1ed9467113ead3367dd9dd9e8f;hb=6f21f5f488f8a82bcb156ff763ddf1737a7fd4a8;hp=15e18fc7ce491e26927863d76612861669706c78;hpb=42a593529b69f5b4cac9e2e7fd8b4863c57e3caf;p=nihav.git diff --git a/src/codecs/h263/decoder.rs b/src/codecs/h263/decoder.rs index 15e18fc..420f6f8 100644 --- a/src/codecs/h263/decoder.rs +++ b/src/codecs/h263/decoder.rs @@ -215,8 +215,11 @@ impl H263BaseDecoder { if slice.is_at_end(mb_pos) || (slice.needs_check() && mb_pos > 0 && bd.is_slice_end()) { slice = bd.decode_slice_header(&pinfo)?; - //mvi.reset(self.mb_w, mb_x, pinfo.get_mvmode()); - //cbpi.reset(self.mb_w); + if !self.is_gob { + mvi.reset(self.mb_w, mb_x, pinfo.get_mvmode()); + cbpi.reset(self.mb_w); + sstate.first_line = true; + } } let binfo = bd.decode_block_header(&pinfo, &slice, &sstate)?; @@ -228,7 +231,7 @@ impl H263BaseDecoder { bd.decode_block_intra(&binfo, &sstate, binfo.get_q(), i, (cbp & (1 << (5 - i))) != 0, &mut blk[i])?; if apply_acpred && (binfo.acpred != ACPredMode::None) { let has_b = (i == 1) || (i == 3) || (mb_x > 0); - let has_a = (i == 2) || (i == 3) || (mb_y > 0); + let has_a = (i == 2) || (i == 3) || !sstate.first_line; let (b_mb, b_blk) = if has_b { if (i == 1) || (i == 3) { (mb_pos, i - 1)