Refactor check_txfm_eval()
The function check_txfm_eval() is refactored to use ROUND_POWER_OF_TWO()
and the code corresponding to unused values of txfm_rd_gate_level speed
feature is removed.
Change-Id: Idd8f55fcfa6af87c5a67cd3f4124fe1a05b8d97c
diff --git a/av1/encoder/rdopt_utils.h b/av1/encoder/rdopt_utils.h
index c8520bb..ddd180f 100644
--- a/av1/encoder/rdopt_utils.h
+++ b/av1/encoder/rdopt_utils.h
@@ -334,15 +334,14 @@
// Derive aggressiveness factor for gating the transform search
// Lower value indicates more aggressiveness. Be more conservative (high
// value) for (i) low quantizers (ii) regions where prediction is poor
- const int scale[6] = { INT_MAX, 4, 3, 3, 2, 2 };
+ const int scale[5] = { INT_MAX, 4, 3, 2, 2 };
const int qslope = 2 * (!is_luma_only);
- const int level_to_qindex_map[6] = { 0, 0, 0, 0, 80, 100 };
+ const int level_to_qindex_map[5] = { 0, 0, 0, 80, 100 };
int aggr_factor = 4;
const int pred_qindex_thresh = level_to_qindex_map[level];
- if (!is_luma_only && level <= 3) {
- aggr_factor =
- 4 * AOMMAX(1, ((MAXQ - x->qindex) * qslope + QINDEX_RANGE / 2) >>
- QINDEX_BITS);
+ if (!is_luma_only && level <= 2) {
+ aggr_factor = 4 * AOMMAX(1, ROUND_POWER_OF_TWO((MAXQ - x->qindex) * qslope,
+ QINDEX_BITS));
}
if ((best_skip_rd >
(x->source_variance << (num_pels_log2_lookup[bsize] + RDDIV_BITS))) &&
@@ -357,7 +356,7 @@
// since best_skip_rd is computed after and skip_rd is computed (with 8-bit
// prediction signals blended for WEDGE/DIFFWTD rather than 16-bit) before
// interpolation filter search
- const int luma_mul[6] = { INT_MAX, 32, 29, 20, 17, 17 };
+ const int luma_mul[5] = { INT_MAX, 32, 29, 17, 17 };
int mul_factor = is_luma_only ? luma_mul[level] : 16;
int64_t rd_thresh =
(best_skip_rd == INT64_MAX)
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 2cb28d9..b99f38b 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -880,7 +880,7 @@
sf->part_sf.ml_predict_breakout_level = 3;
sf->inter_sf.alt_ref_search_fp = 1;
- sf->inter_sf.txfm_rd_gate_level = boosted ? 0 : 4;
+ sf->inter_sf.txfm_rd_gate_level = boosted ? 0 : 3;
sf->inter_sf.prune_inter_modes_based_on_tpl = boosted ? 0 : 2;
sf->inter_sf.prune_compound_using_neighbors = 2;
@@ -936,7 +936,7 @@
sf->inter_sf.disable_interinter_wedge_var_thresh = UINT_MAX;
sf->inter_sf.prune_inter_modes_if_skippable = 1;
- sf->inter_sf.txfm_rd_gate_level = boosted ? 0 : 5;
+ sf->inter_sf.txfm_rd_gate_level = boosted ? 0 : 4;
// Enable fast search for all valid compound modes.
sf->inter_sf.enable_fast_compound_mode_search = 2;