From 2be9ea610f039273a915a5e04879744e7054353a Mon Sep 17 00:00:00 2001 From: Alex Converse Date: Fri, 18 Jul 2014 15:10:56 -0700 Subject: [PATCH] Use INTER_ALL for VAR based partitions for screencast material. This offers 25% more compression on my HD screencast testset. Change-Id: I85eaef95fd8f2e03e326443e9514482b2ee35cef --- vp9/encoder/vp9_speed_features.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index 6ca1bc5..e770f33 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -160,7 +160,7 @@ static void set_good_speed_feature(VP9_COMP *cpi, VP9_COMMON *cm, } static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, - int speed) { + int speed, vp9e_tune_content content) { VP9_COMMON *const cm = &cpi->common; const int frames_since_key = cm->frame_type == KEY_FRAME ? 0 : cpi->rc.frames_since_key; @@ -275,6 +275,13 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, } if (speed >= 6) { + if (content == VP9E_CONTENT_SCREEN) { + int i; + // Allow fancy modes at all sizes since SOURCE_VAR_BASED_PARTITION is used + for (i = 0; i < BLOCK_SIZES; ++i) + sf->inter_mode_mask[i] = INTER_ALL; + } + // Adaptively switch between SOURCE_VAR_BASED_PARTITION and FIXED_PARTITION. sf->partition_search_type = SOURCE_VAR_BASED_PARTITION; sf->search_type_check_frequency = 50; @@ -392,7 +399,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) { set_good_speed_feature(cpi, cm, sf, oxcf->speed); break; case REALTIME: - set_rt_speed_feature(cpi, sf, oxcf->speed); + set_rt_speed_feature(cpi, sf, oxcf->speed, oxcf->content); break; } -- 2.7.4