shithub: libvpx

Download patch

ref: 403f6b5846df2a7c83984f73e58f40b3df884132
parent: fbf2ac111e2bf104cefe6080e822c626f65753f2
author: Ronald S. Bultje <rbultje@google.com>
date: Thu Oct 25 08:46:26 EDT 2012

Always extend macroblock edges in the decoder.

This fixes edge extension if SB [0,1] doesn't use B_PRED but [1,1] does.

Change-Id: I48354a9dba0de16472938824f5e6db87ce61979f

--- a/vp8/decoder/decodframe.c
+++ b/vp8/decoder/decodframe.c
@@ -202,7 +202,7 @@
 }
 
 static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
-                              int mb_row, unsigned int mb_col,
+                              unsigned int mb_col,
                               BOOL_DECODER* const bc) {
   int eobtotal = 0;
   MB_PREDICTION_MODE mode;
@@ -355,8 +355,6 @@
                                               b->dst_stride);
     }
   } else if (mode == B_PRED) {
-    vp8_intra_prediction_down_copy(xd, mb_col == pc->mb_cols - 1 &&
-                                       !(mb_row & 1));
     for (i = 0; i < 16; i++) {
       BLOCKD *b = &xd->block[i];
       int b_mode = xd->mode_info_context->bmi[i].as_mode.first;
@@ -660,7 +658,9 @@
         mi[pc->mode_info_stride + 1] = mi[0];
       }
 #endif
-      decode_macroblock(pbi, xd, mb_row, mb_col, bc);
+      vp8_intra_prediction_down_copy(xd, mb_col == pc->mb_cols - 1 &&
+                                     !(mb_row & 1));
+      decode_macroblock(pbi, xd, mb_col, bc);
 #if CONFIG_SUPERBLOCKS
       if (xd->mode_info_context->mbmi.encoded_as_sb) {
         mi[1].mbmi.txfm_size = mi[0].mbmi.txfm_size;