diff options
Diffstat (limited to 'vp8/encoder')
-rw-r--r-- | vp8/encoder/encodeframe.c | 7 | ||||
-rw-r--r-- | vp8/encoder/encodeintra.c | 2 | ||||
-rw-r--r-- | vp8/encoder/rdopt.c | 10 |
3 files changed, 8 insertions, 11 deletions
diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c index c92ec0253..619695c33 100644 --- a/vp8/encoder/encodeframe.c +++ b/vp8/encoder/encodeframe.c @@ -1945,10 +1945,12 @@ void vp8cx_encode_intra_macro_block(VP8_COMP *cpi, if (mbmi->mode == I8X8_PRED) { vp8_encode_intra8x8mby(IF_RTCD(&cpi->rtcd), x); vp8_encode_intra8x8mbuv(IF_RTCD(&cpi->rtcd), x); - } else if (mbmi->mode == B_PRED) + } else if (mbmi->mode == B_PRED) { + vp8_intra_prediction_down_copy(&x->e_mbd); vp8_encode_intra4x4mby(IF_RTCD(&cpi->rtcd), x); - else + } else { vp8_encode_intra16x16mby(IF_RTCD(&cpi->rtcd), x); + } if (mbmi->mode != I8X8_PRED) { vp8_encode_intra16x16mbuv(IF_RTCD(&cpi->rtcd), x); @@ -2049,6 +2051,7 @@ void vp8cx_encode_inter_macroblock (VP8_COMP *cpi, MACROBLOCK *x, if (mbmi->ref_frame == INTRA_FRAME) { if (mbmi->mode == B_PRED) { + vp8_intra_prediction_down_copy(xd); vp8_encode_intra16x16mbuv(IF_RTCD(&cpi->rtcd), x); vp8_encode_intra4x4mby(IF_RTCD(&cpi->rtcd), x); } else if (mbmi->mode == I8X8_PRED) { diff --git a/vp8/encoder/encodeintra.c b/vp8/encoder/encodeintra.c index 9ff39c6f1..9076780d9 100644 --- a/vp8/encoder/encodeintra.c +++ b/vp8/encoder/encodeintra.c @@ -218,7 +218,7 @@ void vp8_encode_intra8x8(const VP8_ENCODER_RTCD *rtcd, vp8_subtract_4b_c(be, b, 16); #if CONFIG_HYBRIDTRANSFORM8X8 - tx_type = get_tx_type(xd, &xd->block[idx]); + tx_type = get_tx_type(xd, xd->block + idx); if (tx_type != DCT_DCT) { vp8_fht_c(be->src_diff, (x->block + idx)->coeff, 32, tx_type, 8); diff --git a/vp8/encoder/rdopt.c b/vp8/encoder/rdopt.c index 6dcc189a6..b08002692 100644 --- a/vp8/encoder/rdopt.c +++ b/vp8/encoder/rdopt.c @@ -1175,11 +1175,6 @@ static int64_t rd_pick_intra4x4block(VP8_COMP *cpi, MACROBLOCK *x, BLOCK *be, int64_t this_rd; int ratey; - // TODO Temporarily ignore modes that need the above-right data. SB - // encoding means this data is not available for the bottom right MB - // Do we need to do this for mode2 also? - if (mode == B_LD_PRED || mode == B_VL_PRED) - continue; b->bmi.as_mode.first = mode; rate = bmode_costs[mode]; @@ -1293,12 +1288,11 @@ static int64_t rd_pick_intra4x4mby_modes(VP8_COMP *cpi, MACROBLOCK *mb, int *Rat tl = (ENTROPY_CONTEXT *)&t_left; } - // TODO(agrange) - // vp8_intra_prediction_down_copy(xd); - xd->mode_info_context->mbmi.mode = B_PRED; bmode_costs = mb->inter_bmode_costs; + vp8_intra_prediction_down_copy(xd); + for (i = 0; i < 16; i++) { MODE_INFO *const mic = xd->mode_info_context; const int mis = xd->mode_info_stride; |