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