diff options
author | Ronald S. Bultje <rbultje@google.com> | 2012-10-10 17:18:22 -0700 |
---|---|---|
committer | Ronald S. Bultje <rbultje@google.com> | 2012-10-11 09:26:00 -0700 |
commit | f39b0f192fed13cc788f76877dd2a6495cfe8dd4 (patch) | |
tree | 9a548c6d0f23ef74553130669fda64b515d4fca1 /vp8/encoder/encodeintra.c | |
parent | a7333b0a5b9f9d435bba7b1dce72632ae70c0330 (diff) | |
download | libvpx-f39b0f192fed13cc788f76877dd2a6495cfe8dd4.tar libvpx-f39b0f192fed13cc788f76877dd2a6495cfe8dd4.tar.gz libvpx-f39b0f192fed13cc788f76877dd2a6495cfe8dd4.tar.bz2 libvpx-f39b0f192fed13cc788f76877dd2a6495cfe8dd4.zip |
Use transform-size selection for i8x8_pred also.
Change-Id: Iecb282fc89f9b5145ef31c5eda294ad42bc32a5d
Diffstat (limited to 'vp8/encoder/encodeintra.c')
-rw-r--r-- | vp8/encoder/encodeintra.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/vp8/encoder/encodeintra.c b/vp8/encoder/encodeintra.c index eee8efdd2..323df005b 100644 --- a/vp8/encoder/encodeintra.c +++ b/vp8/encoder/encodeintra.c @@ -238,7 +238,8 @@ void vp8_encode_intra16x16mbuv(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) { void vp8_encode_intra8x8(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x, int ib) { - BLOCKD *b = &x->e_mbd.block[ib]; + MACROBLOCKD *xd = &x->e_mbd; + BLOCKD *b = &xd->block[ib]; BLOCK *be = &x->block[ib]; const int iblock[4] = {0, 1, 4, 5}; int i; @@ -255,8 +256,7 @@ void vp8_encode_intra8x8(const VP8_ENCODER_RTCD *rtcd, } #endif - { - MACROBLOCKD *xd = &x->e_mbd; + if (x->e_mbd.mode_info_context->mbmi.txfm_size == TX_8X8) { int idx = (ib & 0x02) ? (ib + 2) : ib; // generate residual blocks @@ -274,14 +274,23 @@ void vp8_encode_intra8x8(const VP8_ENCODER_RTCD *rtcd, x->quantize_b_8x8(x->block + idx, xd->block + idx); vp8_idct_idct8(xd->block[idx].dqcoeff, xd->block[ib].diff, 32); #endif - - // reconstruct submacroblock + } else { for (i = 0; i < 4; i++) { b = &xd->block[ib + iblock[i]]; - vp8_recon_b_c(b->predictor, b->diff, *(b->base_dst) + b->dst, - b->dst_stride); + be = &x->block[ib + iblock[i]]; + ENCODEMB_INVOKE(&rtcd->encodemb, subb)(be, b, 16); + x->vp8_short_fdct4x4(be->src_diff, be->coeff, 32); + x->quantize_b(be, b); + vp8_inverse_transform_b(IF_RTCD(&rtcd->common->idct), b, 32); } } + + // reconstruct submacroblock + for (i = 0; i < 4; i++) { + b = &xd->block[ib + iblock[i]]; + vp8_recon_b_c(b->predictor, b->diff, *(b->base_dst) + b->dst, + b->dst_stride); + } } void vp8_encode_intra8x8mby(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) { |