Add a speed feature to turn off dual_filter
The speed feature is turned on for speeds 2+.
There seems to be about 5-6% speedup at speed 2.
STATS_CHANGED
Coding performance loss:
lowres, 30 frames, end-usage=q: +0.210% AvPSNR, +0.131% SSIM
midres, 30 frames, end-usage=q: +0.164% AvPSNR, +0.055% SSIM
Change-Id: Iec2e1adfe01129c453d0e7cbdaaf83bd090f3c06
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 2bb5cff..ceef7fe 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -252,6 +252,7 @@
sf->allow_partition_search_skip = 1;
sf->disable_wedge_search_var_thresh = 100;
sf->fast_wedge_sign_estimate = 1;
+ sf->disable_dual_filter = 1;
}
if (speed >= 3) {
@@ -480,6 +481,7 @@
sf->gm_search_type = GM_FULL_SEARCH;
sf->gm_disable_recode = 0;
sf->use_fast_interpolation_filter_search = 0;
+ sf->disable_dual_filter = 0;
sf->skip_repeat_interpolation_filter_search = 0;
sf->use_hash_based_trellis = 0;
sf->prune_comp_search_by_single_result = 0;
@@ -495,6 +497,10 @@
if (oxcf->mode == GOOD)
set_good_speed_features_framesize_independent(cpi, sf, oxcf->speed);
+ if (!cpi->seq_params_locked) {
+ cpi->common.seq_params.enable_dual_filter &= !sf->disable_dual_filter;
+ }
+
// sf->partition_search_breakout_dist_thr is set assuming max 64x64
// blocks. Normalise this if the blocks are bigger.
if (MAX_SB_SIZE_LOG2 > 6) {
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index d8b3d36..318e513 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -495,6 +495,9 @@
// usually includes EIGHTTAP_REGULAR.
int use_fast_interpolation_filter_search;
+ // Disable dual filter
+ int disable_dual_filter;
+
// Save results of interpolation_filter_search for a block
// Check mv and ref_frames before search, if they are same with previous
// saved results, it can be skipped.