diff options
author | Paul Wilkins <paulwilkins@google.com> | 2011-11-04 18:29:51 +0000 |
---|---|---|
committer | Paul Wilkins <paulwilkins@google.com> | 2011-11-08 12:21:08 +0000 |
commit | a9df4183a6587719c9530d45d5dbd81530be9e7b (patch) | |
tree | 8365dc0ee269bb85de4354f5e65dd2b3f25e7890 /vp8/encoder/encodeintra.c | |
parent | f82d601f94a2fef69a0a12790c5fcdf49bbbdf2c (diff) | |
download | libvpx-a9df4183a6587719c9530d45d5dbd81530be9e7b.tar libvpx-a9df4183a6587719c9530d45d5dbd81530be9e7b.tar.gz libvpx-a9df4183a6587719c9530d45d5dbd81530be9e7b.tar.bz2 libvpx-a9df4183a6587719c9530d45d5dbd81530be9e7b.zip |
Segment signaling of TX size
Initial attempt at using new segment feature signaling
to indicate 4x4 or 8x8 transform.
needs --enable-experimental --enable-t8x8
Note this is work in progress.
Change-Id: Ib160d46a5d810307bfcbc79853ce1a65b5b870b7
Diffstat (limited to 'vp8/encoder/encodeintra.c')
-rw-r--r-- | vp8/encoder/encodeintra.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/vp8/encoder/encodeintra.c b/vp8/encoder/encodeintra.c index 424dc72db..ee1e87847 100644 --- a/vp8/encoder/encodeintra.c +++ b/vp8/encoder/encodeintra.c @@ -97,18 +97,24 @@ void vp8_encode_intra16x16mby(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) { BLOCK *b = &x->block[0]; +#if CONFIG_T8X8 + int tx_type = get_seg_tx_type(&x->e_mbd, + x->e_mbd.mode_info_context->mbmi.segment_id); +#endif + RECON_INVOKE(&rtcd->common->recon, build_intra_predictors_mby)(&x->e_mbd); ENCODEMB_INVOKE(&rtcd->encodemb, submby)(x->src_diff, *(b->base_src), x->e_mbd.predictor, b->src_stride); + #if CONFIG_T8X8 - if(x->e_mbd.mode_info_context->mbmi.segment_id >= 2) + if( tx_type == TX_8X8 ) vp8_transform_intra_mby_8x8(x); else #endif vp8_transform_intra_mby(x); #if CONFIG_T8X8 - if(x->e_mbd.mode_info_context->mbmi.segment_id >= 2) + if(tx_type == TX_8X8) vp8_quantize_mby_8x8(x); else #endif @@ -117,7 +123,7 @@ void vp8_encode_intra16x16mby(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) if (x->optimize) { #if CONFIG_T8X8 - if(x->e_mbd.mode_info_context->mbmi.segment_id >= 2) + if( tx_type == TX_8X8 ) vp8_optimize_mby_8x8(x, rtcd); else #endif @@ -125,7 +131,7 @@ void vp8_encode_intra16x16mby(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) } #if CONFIG_T8X8 - if(x->e_mbd.mode_info_context->mbmi.segment_id >= 2) + if(tx_type == TX_8X8) vp8_inverse_transform_mby_8x8(IF_RTCD(&rtcd->common->idct), &x->e_mbd); else #endif @@ -169,18 +175,23 @@ void vp8_encode_intra16x16mby(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) void vp8_encode_intra16x16mbuv(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) { +#if CONFIG_T8X8 + int tx_type = get_seg_tx_type(&x->e_mbd, + x->e_mbd.mode_info_context->mbmi.segment_id); +#endif + RECON_INVOKE(&rtcd->common->recon, build_intra_predictors_mbuv)(&x->e_mbd); ENCODEMB_INVOKE(&rtcd->encodemb, submbuv)(x->src_diff, x->src.u_buffer, x->src.v_buffer, x->e_mbd.predictor, x->src.uv_stride); #if CONFIG_T8X8 - if(x->e_mbd.mode_info_context->mbmi.segment_id >= 2) + if(tx_type == TX_8X8) vp8_transform_mbuv_8x8(x); else #endif vp8_transform_mbuv(x); #if CONFIG_T8X8 - if(x->e_mbd.mode_info_context->mbmi.segment_id >= 2) + if(tx_type == TX_8X8) vp8_quantize_mbuv_8x8(x); else #endif @@ -220,7 +231,7 @@ void vp8_encode_intra16x16mbuv(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) if (x->optimize) { #if CONFIG_T8X8 - if(x->e_mbd.mode_info_context->mbmi.segment_id >= 2) + if(tx_type == TX_8X8) vp8_optimize_mbuv_8x8(x, rtcd); else #endif @@ -228,7 +239,7 @@ void vp8_encode_intra16x16mbuv(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) } #if CONFIG_T8X8 - if(x->e_mbd.mode_info_context->mbmi.segment_id >= 2) + if(tx_type == TX_8X8) vp8_inverse_transform_mbuv_8x8(IF_RTCD(&rtcd->common->idct), &x->e_mbd); else #endif |