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.