fixed a decoder bug

When 8x8 transform is enabled, the decoder does an extra reconstruct
on MBs that are coded using 8x8. This commit fixed the logic around
the decoding of mb encoded with 8x8 transform.

Change-Id: I6926557c9ef00eecb375f62946f7e140c660bf6f
This commit is contained in:
Yaowu Xu
2011-10-08 15:48:53 -07:00
parent 156b221a7f
commit 3ca849691c

View File

@@ -449,6 +449,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
else else
#endif #endif
{
if (xd->eobs[24] > 1) if (xd->eobs[24] > 1)
{ {
IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0], b->diff); IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0], b->diff);
@@ -472,6 +473,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
xd->predictor, xd->dst.y_buffer, xd->predictor, xd->dst.y_buffer,
xd->dst.y_stride, xd->eobs, xd->block[24].diff); xd->dst.y_stride, xd->eobs, xd->block[24].diff);
} }
}
#if CONFIG_T8X8 #if CONFIG_T8X8
if(xd->mode_info_context->mbmi.segment_id >= 2) if(xd->mode_info_context->mbmi.segment_id >= 2)
{ {
@@ -604,7 +606,7 @@ decode_mb_row(VP8D_COMP *pbi, VP8_COMMON *pc, int mb_row, MACROBLOCKD *xd)
} }
#ifdef DEC_DEBUG #ifdef DEC_DEBUG
dec_debug = (pc->current_video_frame==5 && mb_row==2 && mb_col==3); dec_debug = (pc->current_video_frame==0 && mb_row==1 && mb_col==11);
#endif #endif
decode_macroblock(pbi, xd, mb_row * pc->mb_cols + mb_col); decode_macroblock(pbi, xd, mb_row * pc->mb_cols + mb_col);