Enable winner mode speed features in allintra encode
Enabled winner mode speed features, enable_winner_mode_for_coeff_opt,
enable_winner_mode_for_use_tx_domain_dist, enable_winner_mode_for_tx_size_srch
and multi_winner_mode_type, in allintra encoding for speed >= 4.
For AVIF still image encode,
Instruction Count BD-Rate Loss(%)
cpu-used Reduction(%) psnr psnrCb psnrCr ssim
4 16.775 0.3118 0.9665 1.0637 0.3965
5 22.750 0.5559 1.0946 0.9724 0.5730
6 7.771 0.5332 0.9001 0.7253 0.6243
BUG=aomedia:2959
STATS_CHANGED
Change-Id: Ied9d7d6b1ed40a17a8779b32db5fb75bec7b4bc3
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 12fe2bf..39050e6 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -420,6 +420,11 @@
sf->lpf_sf.cdef_pick_method = CDEF_FAST_SEARCH_LVL3;
sf->mv_sf.reduce_search_range = 1;
+
+ sf->winner_mode_sf.enable_winner_mode_for_coeff_opt = 1;
+ sf->winner_mode_sf.enable_winner_mode_for_use_tx_domain_dist = 1;
+ sf->winner_mode_sf.multi_winner_mode_type = MULTI_WINNER_MODE_DEFAULT;
+ sf->winner_mode_sf.enable_winner_mode_for_tx_size_srch = 1;
}
if (speed >= 5) {
@@ -433,6 +438,8 @@
sf->lpf_sf.disable_lr_filter = 1;
sf->mv_sf.prune_mesh_search = 1;
+
+ sf->winner_mode_sf.multi_winner_mode_type = MULTI_WINNER_MODE_FAST;
}
if (speed >= 6) {
@@ -459,7 +466,15 @@
sf->rd_sf.perform_coeff_opt = 6;
sf->lpf_sf.cdef_pick_method = CDEF_FAST_SEARCH_LVL4;
+
+ sf->winner_mode_sf.multi_winner_mode_type = MULTI_WINNER_MODE_OFF;
}
+
+ // Intra txb hash is currently not compatible with multi-winner mode as the
+ // hashes got reset during multi-winner mode processing.
+ assert(IMPLIES(
+ sf->winner_mode_sf.multi_winner_mode_type != MULTI_WINNER_MODE_OFF,
+ !sf->tx_sf.use_intra_txb_hash));
}
static void set_good_speed_feature_framesize_dependent(