summaryrefslogtreecommitdiff
path: root/vp8/encoder/pickinter.c
diff options
context:
space:
mode:
authorPaul Wilkins <paulwilkins@google.com>2011-11-18 19:44:57 +0000
committerPaul Wilkins <paulwilkins@google.com>2011-11-21 15:46:32 +0000
commit4f792921e74cff85fd130cf482669846fcd809e5 (patch)
tree4dbaa45a52259b0b0ed24e735358102310da22af /vp8/encoder/pickinter.c
parenteb15fe85e088ff7788a39cb0998ece58afd692c2 (diff)
downloadlibvpx-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.c17
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;