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;
