Remove and refactor code in rdopt.c Change-Id: Ie35949c803a39717162d2a304d58f68dbcfc1f45
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index ab37ec8..23e1729 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -6907,6 +6907,7 @@ uint8_t *tmp_buf; #if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION + MOTION_MODE motion_mode; int allow_motvar = #if CONFIG_EXT_INTER !is_comp_interintra_pred && @@ -6918,7 +6919,7 @@ uint8_t best_blk_skip[MAX_MB_PLANE][MAX_MIB_SIZE * MAX_MIB_SIZE * 4]; #endif // CONFIG_VAR_TX int64_t best_rd = INT64_MAX; - MB_MODE_INFO best_mbmi; + MB_MODE_INFO base_mbmi, best_mbmi; #if CONFIG_EXT_INTER int rate2_bmc_nocoeff; int rate_mv_bmc; @@ -7685,37 +7686,25 @@ if (cm->interp_filter == SWITCHABLE) rd_stats->rate += rs; #if CONFIG_MOTION_VAR rate2_nocoeff = rd_stats->rate; + base_mbmi = *mbmi; #endif // CONFIG_MOTION_VAR #if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION best_rd = INT64_MAX; - for (mbmi->motion_mode = SIMPLE_TRANSLATION; - mbmi->motion_mode < (allow_motvar ? MOTION_MODES : 1); - mbmi->motion_mode++) { - int64_t tmp_rd = INT64_MAX; + for (motion_mode = SIMPLE_TRANSLATION; + motion_mode < (allow_motvar ? MOTION_MODES : 1); motion_mode++) { + int64_t tmp_rd = INT64_MAX, tmp_dist; + int tmp_rate; #if CONFIG_EXT_INTER - int tmp_rate2 = mbmi->motion_mode != SIMPLE_TRANSLATION ? rate2_bmc_nocoeff - : rate2_nocoeff; + int tmp_rate2 = + motion_mode != SIMPLE_TRANSLATION ? rate2_bmc_nocoeff : rate2_nocoeff; #else int tmp_rate2 = rate2_nocoeff; #endif // CONFIG_EXT_INTER -#if CONFIG_EXT_INTERP -#if CONFIG_DUAL_FILTER - InterpFilter obmc_interp_filter[2][2] = { - { mbmi->interp_filter[0], mbmi->interp_filter[1] }, // obmc == 0 - { mbmi->interp_filter[0], mbmi->interp_filter[1] } // obmc == 1 - }; -#else - InterpFilter obmc_interp_filter[2] = { - mbmi->interp_filter, // obmc == 0 - mbmi->interp_filter // obmc == 1 - }; -#endif // CONFIG_DUAL_FILTER -#endif // CONFIG_EXT_INTERP + *mbmi = base_mbmi; + mbmi->motion_mode = motion_mode; #if CONFIG_MOTION_VAR - int tmp_rate; - int64_t tmp_dist; if (mbmi->motion_mode == OBMC_CAUSAL) { #if CONFIG_EXT_INTER *mbmi = best_bmc_mbmi; @@ -7742,12 +7731,11 @@ #if CONFIG_EXT_INTERP #if CONFIG_DUAL_FILTER if (!has_subpel_mv_component(xd->mi[0], xd, 0)) - obmc_interp_filter[1][0] = mbmi->interp_filter[0] = EIGHTTAP_REGULAR; + mbmi->interp_filter[0] = EIGHTTAP_REGULAR; if (!has_subpel_mv_component(xd->mi[0], xd, 1)) - obmc_interp_filter[1][1] = mbmi->interp_filter[1] = EIGHTTAP_REGULAR; + mbmi->interp_filter[1] = EIGHTTAP_REGULAR; #else - if (!av1_is_interp_needed(xd)) - obmc_interp_filter[1] = mbmi->interp_filter = EIGHTTAP_REGULAR; + if (!av1_is_interp_needed(xd)) mbmi->interp_filter = EIGHTTAP_REGULAR; #endif // CONFIG_DUAL_FILTER // This is not quite correct with CONFIG_DUAL_FILTER when a filter // is needed in only one direction @@ -7909,14 +7897,6 @@ #if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION tmp_rd = RDCOST(x->rdmult, x->rddiv, rd_stats->rate, rd_stats->dist); if (mbmi->motion_mode == SIMPLE_TRANSLATION || (tmp_rd < best_rd)) { -#if CONFIG_EXT_INTERP -#if CONFIG_DUAL_FILTER - mbmi->interp_filter[0] = obmc_interp_filter[mbmi->motion_mode][0]; - mbmi->interp_filter[1] = obmc_interp_filter[mbmi->motion_mode][1]; -#else - mbmi->interp_filter = obmc_interp_filter[mbmi->motion_mode]; -#endif // CONFIG_DUAL_FILTER -#endif // CONFIG_EXT_INTERP best_mbmi = *mbmi; best_rd = tmp_rd; best_rd_stats = *rd_stats;