Remove speed features with no quality/speed impact
This removes adaptive_mode_search and disable_filter_search_var_thresh.
BUG=aomedia:2694
Change-Id: I413d8eb4b2a4b58acc07f01f99d0adee1ab5837f
diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c
index 0493d13..8b0efea 100644
--- a/av1/encoder/nonrd_pickmode.c
+++ b/av1/encoder/nonrd_pickmode.c
@@ -1685,10 +1685,9 @@
mi->tx_size = best_pickmode->best_tx_size;
}
-static AOM_INLINE int is_filter_search_enabled(AV1_COMP *cpi, MACROBLOCK *x,
- int mi_row, int mi_col,
- BLOCK_SIZE bsize) {
- AV1_COMMON *const cm = &cpi->common;
+static AOM_INLINE int is_filter_search_enabled(const AV1_COMP *cpi, int mi_row,
+ int mi_col, BLOCK_SIZE bsize) {
+ const AV1_COMMON *const cm = &cpi->common;
int enable_filter_search = 0;
if (cpi->sf.rt_sf.use_nonrd_filter_search) {
@@ -1700,9 +1699,6 @@
get_chessboard_index(cm->current_frame.frame_number)) &
0x1;
}
- if (x->source_variance <=
- cpi->sf.interp_sf.disable_filter_search_var_thresh)
- enable_filter_search = 0;
}
return enable_filter_search;
}
@@ -1879,7 +1875,7 @@
quant_params->base_qindex && cm->seq_params.bit_depth == 8;
const int enable_filter_search =
- is_filter_search_enabled(cpi, x, mi_row, mi_col, bsize);
+ is_filter_search_enabled(cpi, mi_row, mi_col, bsize);
// TODO(marpan): Look into reducing these conditions. For now constrain
// it to avoid significant bdrate loss.
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 5fa48b1..5ce28dc 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -3698,13 +3698,6 @@
}
}
- if (sf->inter_sf.adaptive_mode_search) {
- if (cm->show_frame && !cpi->rc.is_src_frame_alt_ref &&
- cpi->rc.frames_since_golden >= 3)
- if ((x->pred_mv_sad[GOLDEN_FRAME] >> 1) > x->pred_mv_sad[LAST_FRAME])
- mask->pred_modes[GOLDEN_FRAME] |= INTER_ALL;
- }
-
if (bsize > sf->part_sf.max_intra_bsize) {
disable_reference(INTRA_FRAME, mask->ref_combo);
}
@@ -4673,10 +4666,6 @@
if (!cpi->oxcf.intra_mode_cfg.enable_paeth_intra &&
mbmi->mode == PAETH_PRED)
return 1;
- if (sf->inter_sf.adaptive_mode_search > 1)
- if ((x->source_variance << num_pels_log2_lookup[bsize]) >
- args->search_state->best_pred_sse)
- return 1;
// Intra modes will be handled in another loop later.
assert(*args->intra_mode_num < INTRA_MODES);
@@ -5521,9 +5510,7 @@
best_filter = interp_filter;
} else {
best_filter = EIGHTTAP_REGULAR;
- if (av1_is_interp_needed(xd) &&
- x->source_variance >=
- cpi->sf.interp_sf.disable_filter_search_var_thresh) {
+ if (av1_is_interp_needed(xd)) {
int rs;
int best_rs = INT_MAX;
for (i = 0; i < SWITCHABLE_FILTERS; ++i) {
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index d573fe6..0ca6e21 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -271,11 +271,6 @@
sf->rt_sf.use_nonrd_filter_search = 0;
}
}
- if (is_360p_or_larger) {
- if (speed >= 7) {
- sf->interp_sf.disable_filter_search_var_thresh = 0;
- }
- }
if (!is_480p_or_larger) {
if (speed == 7) {
sf->rt_sf.nonrd_check_partition_merge_mode = 2;
@@ -433,7 +428,6 @@
// TODO(Sachin): Enable/Enhance this speed feature for speed 2 & 3
sf->interp_sf.adaptive_interp_filter_search = 1;
sf->interp_sf.disable_dual_filter = 1;
- sf->interp_sf.disable_filter_search_var_thresh = 100;
sf->intra_sf.disable_smooth_intra =
!frame_is_intra_only(&cpi->common) || (cpi->rc.frames_to_key != 1);
@@ -474,7 +468,6 @@
sf->inter_sf.perform_best_rd_based_gating_for_chroma = 1;
sf->inter_sf.prune_inter_modes_based_on_tpl = boosted ? 0 : 1;
sf->inter_sf.prune_comp_search_by_single_result = boosted ? 4 : 2;
- sf->inter_sf.prune_motion_mode_level = boosted ? 2 : 3;
sf->inter_sf.selective_ref_frame = 4;
sf->inter_sf.skip_repeated_ref_mv = 1;
sf->inter_sf.skip_repeated_full_newmv = 1;
@@ -523,7 +516,6 @@
sf->part_sf.simple_motion_search_prune_agg = 2;
sf->part_sf.prune_ab_partition_using_split_info = 1;
- sf->inter_sf.adaptive_mode_search = 1;
sf->inter_sf.alt_ref_search_fp = 1;
sf->inter_sf.prune_ref_mv_idx_search = 1;
sf->inter_sf.txfm_rd_gate_level = boosted ? 0 : 3;
@@ -735,7 +727,6 @@
sf->interp_sf.adaptive_interp_filter_search = 1;
sf->interp_sf.cb_pred_filter_search = 0;
sf->interp_sf.disable_dual_filter = 1;
- sf->interp_sf.disable_filter_search_var_thresh = 100;
sf->tx_sf.inter_tx_size_search_init_depth_rect = 1;
sf->tx_sf.inter_tx_size_search_init_depth_sqr = 1;
@@ -777,7 +768,6 @@
if (speed >= 4) {
sf->mv_sf.subpel_search_method = SUBPEL_TREE_PRUNED;
- sf->inter_sf.adaptive_mode_search = 1;
sf->inter_sf.alt_ref_search_fp = 1;
sf->interp_sf.skip_sharp_interp_filter_search = 1;
@@ -795,7 +785,6 @@
sf->hl_sf.recode_loop = ALLOW_RECODE_KFMAXBW;
sf->inter_sf.adaptive_rd_thresh = 4;
- sf->interp_sf.disable_filter_search_var_thresh = 200;
sf->rd_sf.use_fast_coef_costing = 1;
sf->rd_sf.tx_domain_dist_level = 2;
@@ -822,7 +811,6 @@
sf->mv_sf.use_fullpel_costlist = 1;
sf->mv_sf.subpel_search_method = SUBPEL_TREE_PRUNED_MORE;
- sf->inter_sf.adaptive_mode_search = 2;
sf->inter_sf.inter_mode_rd_model_estimation = 2;
for (int i = 0; i < TX_SIZES; ++i) {
@@ -994,7 +982,6 @@
inter_sf->adaptive_rd_thresh = 0;
inter_sf->model_based_post_interp_filter_breakout = 0;
inter_sf->reduce_inter_modes = 0;
- inter_sf->adaptive_mode_search = 0;
inter_sf->alt_ref_search_fp = 0;
inter_sf->selective_ref_frame = 0;
inter_sf->prune_ref_frame_for_rect_partitions = 0;
@@ -1042,7 +1029,6 @@
interp_sf->adaptive_interp_filter_search = 0;
interp_sf->cb_pred_filter_search = 0;
interp_sf->disable_dual_filter = 0;
- interp_sf->disable_filter_search_var_thresh = 0;
interp_sf->skip_sharp_interp_filter_search = 0;
interp_sf->use_fast_interpolation_filter_search = 0;
interp_sf->use_interp_filter = 0;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index 1c2e903..5608d53 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -496,9 +496,6 @@
// Limit the inter mode tested in the RD loop
int reduce_inter_modes;
- // Adaptive prediction mode search
- int adaptive_mode_search;
-
// This variable is used to cap the maximum number of times we skip testing a
// mode to be evaluated. A high value means we will be faster.
int adaptive_rd_thresh;
@@ -677,10 +674,6 @@
} INTER_MODE_SPEED_FEATURES;
typedef struct INTERP_FILTER_SPEED_FEATURES {
- // A source variance threshold below which filter search is disabled
- // Choose a very large value (UINT_MAX) to use 8-tap always
- unsigned int disable_filter_search_var_thresh;
-
// Do limited interpolation filter search for dual filters, since best choice
// usually includes EIGHTTAP_REGULAR.
int use_fast_interpolation_filter_search;