Refine R-D optimization of coeffs for boosted frames
For speed = 3 and 4 presets, BD-rate impact is seen as 0.07% and -0.01% (as per AWCY runs),
with encode time reduction of 5.70% and 1.50% (averaged across multiple test cases) respectively.
STATS_CHANGED
Change-Id: I86ca2f54e7f5f086df4d2fd91aa0ae3044acf0c2
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 1615085..bbb6842 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -204,6 +204,8 @@
const AV1_COMP *const cpi, SPEED_FEATURES *const sf, int speed) {
const AV1_COMMON *const cm = &cpi->common;
const int boosted = frame_is_boosted(cpi);
+ const int is_boosted_arf2_bwd_type =
+ boosted || cpi->refresh_bwd_ref_frame || cpi->refresh_alt2_ref_frame;
// Speed 0 for all speed features that give neutral coding performance change.
sf->reduce_inter_modes = 1;
@@ -221,8 +223,7 @@
// TODO(debargha): Test, tweak and turn on either 1 or 2
sf->inter_mode_rd_model_estimation = 1;
- sf->prune_ref_frame_for_rect_partitions =
- !(boosted || cpi->refresh_bwd_ref_frame || cpi->refresh_alt2_ref_frame);
+ sf->prune_ref_frame_for_rect_partitions = !is_boosted_arf2_bwd_type;
sf->prune_ref_mode_for_partitions = sf->prune_ref_frame_for_rect_partitions;
sf->less_rectangular_check_level = 1;
sf->gm_search_type = GM_REDUCED_REF_SEARCH_SKIP_L2_L3;
@@ -331,7 +332,7 @@
// TODO(yunqing): evaluate this speed feature for speed 1 & 2, and combine
// it with cpi->sf.disable_wedge_search_var_thresh.
sf->disable_wedge_interintra_search = 1;
- sf->perform_coeff_opt = boosted ? 0 : 3;
+ sf->perform_coeff_opt = is_boosted_arf2_bwd_type ? 2 : 3;
}
if (speed >= 4) {
@@ -345,7 +346,7 @@
sf->cb_partition_search = !boosted;
sf->alt_ref_search_fp = 1;
sf->skip_sharp_interp_filter_search = 1;
- sf->perform_coeff_opt = boosted ? 0 : 4;
+ sf->perform_coeff_opt = is_boosted_arf2_bwd_type ? 2 : 4;
sf->adaptive_txb_search_level = boosted ? 2 : 3;
}