diff --git a/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c index 95985082f780ac6ce81be654396631e774ce7af2..aaee911708e989b464f6f029dcd47080925a064c 100644 --- a/vp8/decoder/decodframe.c +++ b/vp8/decoder/decodframe.c @@ -198,6 +198,11 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd) xd->mode_info_context->mbmi.mode == SPLITMV); if (!eobtotal) { + /* Special case: Force the loopfilter to skip when eobtotal and + * mb_skip_coeff are zero. + * */ + xd->mode_info_context->mbmi.mb_skip_coeff = 1; + skip_recon_mb(pbi, xd); return; } diff --git a/vp8/decoder/threading.c b/vp8/decoder/threading.c index 06109e125ac0fe94094abc2f461b048685313eb5..16afd591d54c4cd4f549b7246227a4aaa057daef 100644 --- a/vp8/decoder/threading.c +++ b/vp8/decoder/threading.c @@ -112,6 +112,11 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int m xd->mode_info_context->mbmi.mode == SPLITMV); if (!eobtotal) { + /* Special case: Force the loopfilter to skip when eobtotal and + * mb_skip_coeff are zero. + * */ + xd->mode_info_context->mbmi.mb_skip_coeff = 1; + /*mt_skip_recon_mb(pbi, xd, mb_row, mb_col);*/ if (xd->frame_type == KEY_FRAME || xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME) {