Remove unused motion mode speed features
Cleaned up the code base and removed unused speed features.
Change-Id: Iab1e943e1a85270e34b41fd57bd2b583fec4d764
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 0009b47..196a34b 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -9743,55 +9743,6 @@
return is_valid_warp;
}
-struct obmc_check_mv_field_ctxt {
- MB_MODE_INFO *current_mi;
- int mv_field_check_result;
-};
-
-static INLINE void obmc_check_identical_mv(MACROBLOCKD *xd, int rel_mi_row,
- int rel_mi_col, uint8_t op_mi_size,
- int dir, MB_MODE_INFO *nb_mi,
- void *fun_ctxt,
- const int num_planes) {
- (void)xd;
- (void)rel_mi_row;
- (void)rel_mi_col;
- (void)op_mi_size;
- (void)dir;
- (void)num_planes;
- struct obmc_check_mv_field_ctxt *ctxt =
- (struct obmc_check_mv_field_ctxt *)fun_ctxt;
- const MB_MODE_INFO *current_mi = ctxt->current_mi;
-
- if (ctxt->mv_field_check_result == 0) return;
-
- if (nb_mi->ref_frame[0] != current_mi->ref_frame[0] ||
- nb_mi->mv[0].as_int != current_mi->mv[0].as_int ||
- nb_mi->interp_filters.as_int != current_mi->interp_filters.as_int) {
- ctxt->mv_field_check_result = 0;
- }
-}
-
-// Check if the neighbors' motions used by obmc have same parameters as for
-// the current block. If all the parameters are identical, obmc will produce
-// the same prediction as from regular bmc, therefore we can skip the
-// overlapping operations for less complexity. The parameters checked include
-// reference frame, motion vector, and interpolation filter.
-static int check_identical_obmc_mv_field(const AV1_COMMON *cm,
- MACROBLOCKD *xd) {
- const BLOCK_SIZE bsize = xd->mi[0]->sb_type;
- struct obmc_check_mv_field_ctxt mv_field_check_ctxt = { xd->mi[0], 1 };
-
- foreach_overlappable_nb_above(cm, xd,
- max_neighbor_obmc[mi_size_wide_log2[bsize]],
- obmc_check_identical_mv, &mv_field_check_ctxt);
- foreach_overlappable_nb_left(cm, xd,
- max_neighbor_obmc[mi_size_high_log2[bsize]],
- obmc_check_identical_mv, &mv_field_check_ctxt);
-
- return mv_field_check_ctxt.mv_field_check_result;
-}
-
static INLINE void update_mode_start_end_index(const AV1_COMP *const cpi,
int *mode_index_start,
int *mode_index_end,
@@ -9864,11 +9815,6 @@
av1_is_interp_needed(xd) ? av1_get_switchable_rate(cm, x, xd) : 0;
int64_t best_rd = INT64_MAX;
int best_rate_mv = rate_mv0;
- const int identical_obmc_mv_field_detected =
- (cpi->sf.skip_obmc_in_uniform_mv_field ||
- cpi->sf.skip_wm_in_uniform_mv_field)
- ? check_identical_obmc_mv_field(cm, xd)
- : 0;
const int mi_row = xd->mi_row;
const int mi_col = xd->mi_col;
int mode_index_start, mode_index_end;
@@ -9901,15 +9847,6 @@
mbmi->motion_mode == OBMC_CAUSAL)
continue;
- if (identical_obmc_mv_field_detected) {
- if (cpi->sf.skip_obmc_in_uniform_mv_field &&
- mbmi->motion_mode == OBMC_CAUSAL)
- continue;
- if (cpi->sf.skip_wm_in_uniform_mv_field &&
- mbmi->motion_mode == WARPED_CAUSAL)
- continue;
- }
-
if (mbmi->motion_mode == SIMPLE_TRANSLATION && !is_interintra_mode) {
// SIMPLE_TRANSLATION mode: no need to recalculate.
// The prediction is calculated before motion_mode_rd() is called in
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 76bdbae..9f10dc9 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -853,8 +853,6 @@
sf->use_dist_wtd_comp_flag = DIST_WTD_COMP_ENABLED;
sf->reuse_inter_intra_mode = 0;
sf->intra_pruning_with_hog = 0;
- sf->skip_obmc_in_uniform_mv_field = 0;
- sf->skip_wm_in_uniform_mv_field = 0;
sf->adaptive_interp_filter_search = 0;
sf->src_var_thresh_intra_skip = 1;
sf->reduce_high_precision_mv_usage = 0;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index e4a7d08..2d6aff7 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -545,11 +545,6 @@
// Disable one sided compound modes.
int disable_onesided_comp;
- // Skip obmc or warped motion mode when neighborhood motion field is
- // identical
- int skip_obmc_in_uniform_mv_field;
- int skip_wm_in_uniform_mv_field;
-
// Prune/gate motion mode evaluation based on token based rd
// during transform search for inter blocks
// Values are 0 (not used) , 1 - 3 with progressively increasing