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)
         {