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:
@@ -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);
|
||||||
@@ -471,6 +472,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||||||
(xd->qcoeff, xd->block[0].dequant,
|
(xd->qcoeff, xd->block[0].dequant,
|
||||||
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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user