rdopt.c: Create a function to dedupe some code.

BUG=aomedia:442

Change-Id: I08b336915a0fd24bc9beb51ec7bbf5cce753ea11
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 733230a..f65df2f 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -5719,6 +5719,31 @@
   }
 }
 
+#if CONFIG_REF_MV && !CONFIG_EXT_INTER
+static void update_mv_search_and_seg_mvs(
+    int *const run_mv_search, int_mv *const seg_mvs, int has_second_rf,
+    const MV_REFERENCE_FRAME *const ref_frame,
+    const SEG_RDSTAT *const ref_rdstat, int_mv *const bsi_ref_mv[2]) {
+  if (has_second_rf) {
+    if (seg_mvs[ref_frame[0]].as_int == ref_rdstat->mvs[0].as_int &&
+        ref_rdstat->mvs[0].as_int != INVALID_MV)
+      if (bsi_ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int)
+        --*run_mv_search;
+
+    if (seg_mvs[ref_frame[1]].as_int == ref_rdstat->mvs[1].as_int &&
+        ref_rdstat->mvs[1].as_int != INVALID_MV)
+      if (bsi_ref_mv[1]->as_int == ref_rdstat->pred_mv[1].as_int)
+        --*run_mv_search;
+  } else {
+    if (bsi_ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int &&
+        ref_rdstat->mvs[0].as_int != INVALID_MV) {
+      *run_mv_search = 0;
+      seg_mvs[ref_frame[0]].as_int = ref_rdstat->mvs[0].as_int;
+    }
+  }
+}
+#endif  // CONFIG_REF_MV && !CONFIG_EXT_INTER
+
 static int64_t rd_pick_inter_best_sub8x8_mode(
     const AV1_COMP *const cpi, MACROBLOCK *x, int_mv *best_ref_mv,
     int_mv *second_best_ref_mv, int64_t best_rd, int *returntotrate,
@@ -5928,55 +5953,20 @@
         run_mv_search = 2;
 #if !CONFIG_EXT_INTER
         if (filter_idx > 0 && this_mode == NEWMV) {
-          BEST_SEG_INFO *ref_bsi = bsi_buf;
-          SEG_RDSTAT *ref_rdstat = &ref_bsi->rdstat[index][mode_idx];
+          const BEST_SEG_INFO *ref_bsi = bsi_buf;
+          const SEG_RDSTAT *ref_rdstat = &ref_bsi->rdstat[index][mode_idx];
 
-          if (has_second_rf) {
-            if (seg_mvs[index][mbmi->ref_frame[0]].as_int ==
-                    ref_rdstat->mvs[0].as_int &&
-                ref_rdstat->mvs[0].as_int != INVALID_MV)
-              if (bsi->ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int)
-                --run_mv_search;
-
-            if (seg_mvs[index][mbmi->ref_frame[1]].as_int ==
-                    ref_rdstat->mvs[1].as_int &&
-                ref_rdstat->mvs[1].as_int != INVALID_MV)
-              if (bsi->ref_mv[1]->as_int == ref_rdstat->pred_mv[1].as_int)
-                --run_mv_search;
-          } else {
-            if (bsi->ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int &&
-                ref_rdstat->mvs[0].as_int != INVALID_MV) {
-              run_mv_search = 0;
-              seg_mvs[index][mbmi->ref_frame[0]].as_int =
-                  ref_rdstat->mvs[0].as_int;
-            }
-          }
+          update_mv_search_and_seg_mvs(&run_mv_search, seg_mvs[index],
+                                       has_second_rf, mbmi->ref_frame,
+                                       ref_rdstat, bsi->ref_mv);
 
           if (run_mv_search != 0 && filter_idx > 1) {
             ref_bsi = bsi_buf + 1;
             ref_rdstat = &ref_bsi->rdstat[index][mode_idx];
             run_mv_search = 2;
-
-            if (has_second_rf) {
-              if (seg_mvs[index][mbmi->ref_frame[0]].as_int ==
-                      ref_rdstat->mvs[0].as_int &&
-                  ref_rdstat->mvs[0].as_int != INVALID_MV)
-                if (bsi->ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int)
-                  --run_mv_search;
-
-              if (seg_mvs[index][mbmi->ref_frame[1]].as_int ==
-                      ref_rdstat->mvs[1].as_int &&
-                  ref_rdstat->mvs[1].as_int != INVALID_MV)
-                if (bsi->ref_mv[1]->as_int == ref_rdstat->pred_mv[1].as_int)
-                  --run_mv_search;
-            } else {
-              if (bsi->ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int &&
-                  ref_rdstat->mvs[0].as_int != INVALID_MV) {
-                run_mv_search = 0;
-                seg_mvs[index][mbmi->ref_frame[0]].as_int =
-                    ref_rdstat->mvs[0].as_int;
-              }
-            }
+            update_mv_search_and_seg_mvs(&run_mv_search, seg_mvs[index],
+                                         has_second_rf, mbmi->ref_frame,
+                                         ref_rdstat, bsi->ref_mv);
           }
         }
 #endif  // !CONFIG_EXT_INTER