diff options
author | Jingning Han <jingning@google.com> | 2014-12-04 14:53:36 -0800 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2014-12-05 09:36:09 -0800 |
commit | 74ded4863e60be648791f20ca9cc1ff456ae40ad (patch) | |
tree | 409de1f704269351f81034a0990386b4e62a61c1 /vp9/encoder/vp9_speed_features.c | |
parent | 07711e9b2733ef89bb6dd87f4008dc7aea39ba1d (diff) | |
download | libvpx-74ded4863e60be648791f20ca9cc1ff456ae40ad.tar libvpx-74ded4863e60be648791f20ca9cc1ff456ae40ad.tar.gz libvpx-74ded4863e60be648791f20ca9cc1ff456ae40ad.tar.bz2 libvpx-74ded4863e60be648791f20ca9cc1ff456ae40ad.zip |
Enable conditional skip path in rd_pick_intra_sby_mode
These speed-up features for key frame coding are only turned on
in the settings of hybrid non-RD and RD mode decision. It provides
about 20% speed-up to the hybrid key frame coding at the expense
of certain compression performance loss. For vidyo1, the key frame
coding statistics are changed
9838F, 35.020 dB, 61677 us -> 9920F, 34.834 dB, 47556 us
Overall rtc set compression performance is down by -0.257%.
Change-Id: I0025447fda26bb7855e982955642b5f55d71b51f
Diffstat (limited to 'vp9/encoder/vp9_speed_features.c')
-rw-r--r-- | vp9/encoder/vp9_speed_features.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index 0fadb7f36..0775b919c 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -106,7 +106,8 @@ static void set_good_speed_feature(VP9_COMP *cpi, VP9_COMMON *cm, : USE_LARGESTALL; sf->reference_masking = 1; - sf->mode_search_skip_flags = FLAG_SKIP_INTRA_DIRMISMATCH | + sf->mode_search_skip_flags = (cm->frame_type == KEY_FRAME) ? 0 : + FLAG_SKIP_INTRA_DIRMISMATCH | FLAG_SKIP_INTRA_BESTINTER | FLAG_SKIP_COMP_BESTINTRA | FLAG_SKIP_INTRA_LOWVAR; @@ -140,7 +141,8 @@ static void set_good_speed_feature(VP9_COMP *cpi, VP9_COMMON *cm, sf->mv.search_method = BIGDIA; sf->mv.subpel_search_method = SUBPEL_TREE_PRUNED_MORE; sf->adaptive_rd_thresh = 4; - sf->mode_search_skip_flags |= FLAG_EARLY_TERMINATE; + if (cm->frame_type != KEY_FRAME) + sf->mode_search_skip_flags |= FLAG_EARLY_TERMINATE; sf->disable_filter_search_var_thresh = 200; sf->use_lp32x32fdct = 1; sf->use_fast_coef_updates = ONE_LOOP_REDUCED; @@ -226,7 +228,8 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, } if (speed >= 2) { - sf->mode_search_skip_flags = FLAG_SKIP_INTRA_DIRMISMATCH | + sf->mode_search_skip_flags = (cm->frame_type == KEY_FRAME) ? 0 : + FLAG_SKIP_INTRA_DIRMISMATCH | FLAG_SKIP_INTRA_BESTINTER | FLAG_SKIP_COMP_BESTINTRA | FLAG_SKIP_INTRA_LOWVAR; @@ -305,6 +308,7 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, sf->partition_search_breakout_rate_thr = 200; sf->coeff_prob_appx_step = 4; sf->use_fast_coef_updates = is_keyframe ? TWO_LOOP : ONE_LOOP_REDUCED; + sf->mode_search_skip_flags = FLAG_SKIP_INTRA_DIRMISMATCH; if (!is_keyframe) { int i; |