diff options
author | Paul Wilkins <paulwilkins@google.com> | 2011-11-18 19:44:57 +0000 |
---|---|---|
committer | Paul Wilkins <paulwilkins@google.com> | 2011-11-21 15:46:32 +0000 |
commit | 4f792921e74cff85fd130cf482669846fcd809e5 (patch) | |
tree | 4dbaa45a52259b0b0ed24e735358102310da22af /vp8/encoder/pickinter.c | |
parent | eb15fe85e088ff7788a39cb0998ece58afd692c2 (diff) | |
download | libvpx-4f792921e74cff85fd130cf482669846fcd809e5.tar libvpx-4f792921e74cff85fd130cf482669846fcd809e5.tar.gz libvpx-4f792921e74cff85fd130cf482669846fcd809e5.tar.bz2 libvpx-4f792921e74cff85fd130cf482669846fcd809e5.zip |
CONFIG_T8X8 experiment.:
Block the selection of 4x4 modes in key frames if 8x8 is selected.
Change-Id: Ie5729ec22a999d9a1996f020bd4b941e29514992
Diffstat (limited to 'vp8/encoder/pickinter.c')
-rw-r--r-- | vp8/encoder/pickinter.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/vp8/encoder/pickinter.c b/vp8/encoder/pickinter.c index 4d8c0b97b..73595738b 100644 --- a/vp8/encoder/pickinter.c +++ b/vp8/encoder/pickinter.c @@ -539,12 +539,14 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, { continue; } +#if CONFIG_T8X8 // No 4x4 modes if segment flagged as 8x8 else if ( ( get_seg_tx_type( xd, segment_id ) == TX_8X8 ) && ( (this_mode == B_PRED) || (this_mode == SPLITMV) ) ) { continue; } +#endif //#if !CONFIG_SEGFEATURES // Disable this drop out case if either the mode or ref frame // segment level feature is enabled for this segment. This is to @@ -920,6 +922,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, void vp8_pick_intra_mode(VP8_COMP *cpi, MACROBLOCK *x, int *rate_) { + MACROBLOCKD *xd = &x->e_mbd; int error4x4, error16x16 = INT_MAX; int rate, best_rate = 0, distortion, best_sse; MB_PREDICTION_MODE mode, best_mode = DC_PRED; @@ -951,8 +954,22 @@ void vp8_pick_intra_mode(VP8_COMP *cpi, MACROBLOCK *x, int *rate_) } x->e_mbd.mode_info_context->mbmi.mode = best_mode; +#if CONFIG_T8X8 + if ( get_seg_tx_type( xd, + xd->mode_info_context->mbmi.segment_id ) == TX_4X4 ) + { + error4x4 = pick_intra4x4mby_modes(IF_RTCD(&cpi->rtcd), x, &rate, + &best_sse); + } + else + { + error4x4 = INT_MAX; + } +#else error4x4 = pick_intra4x4mby_modes(IF_RTCD(&cpi->rtcd), x, &rate, &best_sse); +#endif + if (error4x4 < error16x16) { x->e_mbd.mode_info_context->mbmi.mode = B_PRED; |