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
This commit is contained in:
Ronald S. Bultje
2012-10-25 12:46:26 -07:00
parent fbf2ac111e
commit 403f6b5846

View File

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