Commit 74ded486 authored by Jingning Han's avatar Jingning Han Committed by Gerrit Code Review

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
parent 07711e9b
...@@ -1072,6 +1072,16 @@ static int64_t rd_pick_intra_sby_mode(VP9_COMP *cpi, MACROBLOCK *x, ...@@ -1072,6 +1072,16 @@ static int64_t rd_pick_intra_sby_mode(VP9_COMP *cpi, MACROBLOCK *x,
/* Y Search for intra prediction mode */ /* Y Search for intra prediction mode */
for (mode = DC_PRED; mode <= TM_PRED; mode++) { for (mode = DC_PRED; mode <= TM_PRED; mode++) {
int64_t local_tx_cache[TX_MODES]; int64_t local_tx_cache[TX_MODES];
if (cpi->sf.use_nonrd_pick_mode) {
// These speed features are turned on in hybrid non-RD and RD mode
// for key frame coding in the context of real-time setting.
if (conditional_skipintra(mode, mode_selected))
continue;
if (*skippable)
break;
}
mic->mbmi.mode = mode; mic->mbmi.mode = mode;
super_block_yrd(cpi, x, &this_rate_tokenonly, &this_distortion, super_block_yrd(cpi, x, &this_rate_tokenonly, &this_distortion,
......
...@@ -106,7 +106,8 @@ static void set_good_speed_feature(VP9_COMP *cpi, VP9_COMMON *cm, ...@@ -106,7 +106,8 @@ static void set_good_speed_feature(VP9_COMP *cpi, VP9_COMMON *cm,
: USE_LARGESTALL; : USE_LARGESTALL;
sf->reference_masking = 1; 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_INTRA_BESTINTER |
FLAG_SKIP_COMP_BESTINTRA | FLAG_SKIP_COMP_BESTINTRA |
FLAG_SKIP_INTRA_LOWVAR; FLAG_SKIP_INTRA_LOWVAR;
...@@ -140,7 +141,8 @@ static void set_good_speed_feature(VP9_COMP *cpi, VP9_COMMON *cm, ...@@ -140,7 +141,8 @@ static void set_good_speed_feature(VP9_COMP *cpi, VP9_COMMON *cm,
sf->mv.search_method = BIGDIA; sf->mv.search_method = BIGDIA;
sf->mv.subpel_search_method = SUBPEL_TREE_PRUNED_MORE; sf->mv.subpel_search_method = SUBPEL_TREE_PRUNED_MORE;
sf->adaptive_rd_thresh = 4; 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->disable_filter_search_var_thresh = 200;
sf->use_lp32x32fdct = 1; sf->use_lp32x32fdct = 1;
sf->use_fast_coef_updates = ONE_LOOP_REDUCED; sf->use_fast_coef_updates = ONE_LOOP_REDUCED;
...@@ -226,7 +228,8 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, ...@@ -226,7 +228,8 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf,
} }
if (speed >= 2) { 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_INTRA_BESTINTER |
FLAG_SKIP_COMP_BESTINTRA | FLAG_SKIP_COMP_BESTINTRA |
FLAG_SKIP_INTRA_LOWVAR; FLAG_SKIP_INTRA_LOWVAR;
...@@ -305,6 +308,7 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, ...@@ -305,6 +308,7 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf,
sf->partition_search_breakout_rate_thr = 200; sf->partition_search_breakout_rate_thr = 200;
sf->coeff_prob_appx_step = 4; sf->coeff_prob_appx_step = 4;
sf->use_fast_coef_updates = is_keyframe ? TWO_LOOP : ONE_LOOP_REDUCED; sf->use_fast_coef_updates = is_keyframe ? TWO_LOOP : ONE_LOOP_REDUCED;
sf->mode_search_skip_flags = FLAG_SKIP_INTRA_DIRMISMATCH;
if (!is_keyframe) { if (!is_keyframe) {
int i; int i;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment