Factor out code to record the best compound mode

No change in performance.
BUG=aomedia:2615

Change-Id: I8dc063e25c1491268624305a2e1991fbfaa70119
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 268f08f..aa1948f 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -4187,6 +4187,40 @@
 // Indicates number of winner simple translation modes to be used
 static unsigned int num_winner_motion_modes[3] = { 0, 10, 3 };
 
+static void record_best_compound(REFERENCE_MODE reference_mode,
+                                 RD_STATS *rd_stats, int comp_pred, int rdmult,
+                                 InterModeSearchState *search_state,
+                                 int compmode_cost) {
+  int64_t single_rd, hybrid_rd, single_rate, hybrid_rate;
+
+  if (reference_mode == REFERENCE_MODE_SELECT) {
+    single_rate = rd_stats->rate - compmode_cost;
+    hybrid_rate = rd_stats->rate;
+  } else {
+    single_rate = rd_stats->rate;
+    hybrid_rate = rd_stats->rate + compmode_cost;
+  }
+
+  single_rd = RDCOST(rdmult, single_rate, rd_stats->dist);
+  hybrid_rd = RDCOST(rdmult, hybrid_rate, rd_stats->dist);
+
+  if (!comp_pred) {
+    if (single_rd <
+        search_state->intra_search_state.best_pred_rd[SINGLE_REFERENCE])
+      search_state->intra_search_state.best_pred_rd[SINGLE_REFERENCE] =
+          single_rd;
+  } else {
+    if (single_rd <
+        search_state->intra_search_state.best_pred_rd[COMPOUND_REFERENCE])
+      search_state->intra_search_state.best_pred_rd[COMPOUND_REFERENCE] =
+          single_rd;
+  }
+  if (hybrid_rd <
+      search_state->intra_search_state.best_pred_rd[REFERENCE_MODE_SELECT])
+    search_state->intra_search_state.best_pred_rd[REFERENCE_MODE_SELECT] =
+        hybrid_rd;
+}
+
 void av1_rd_pick_inter_mode_sb(AV1_COMP *cpi, TileDataEnc *tile_data,
                                MACROBLOCK *x, RD_STATS *rd_cost,
                                const BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx,
@@ -4567,34 +4601,8 @@
 
     /* keep record of best compound/single-only prediction */
     if (!disable_skip) {
-      int64_t single_rd, hybrid_rd, single_rate, hybrid_rate;
-
-      if (cm->current_frame.reference_mode == REFERENCE_MODE_SELECT) {
-        single_rate = rd_stats.rate - compmode_cost;
-        hybrid_rate = rd_stats.rate;
-      } else {
-        single_rate = rd_stats.rate;
-        hybrid_rate = rd_stats.rate + compmode_cost;
-      }
-
-      single_rd = RDCOST(x->rdmult, single_rate, rd_stats.dist);
-      hybrid_rd = RDCOST(x->rdmult, hybrid_rate, rd_stats.dist);
-
-      if (!comp_pred) {
-        if (single_rd <
-            search_state.intra_search_state.best_pred_rd[SINGLE_REFERENCE])
-          search_state.intra_search_state.best_pred_rd[SINGLE_REFERENCE] =
-              single_rd;
-      } else {
-        if (single_rd <
-            search_state.intra_search_state.best_pred_rd[COMPOUND_REFERENCE])
-          search_state.intra_search_state.best_pred_rd[COMPOUND_REFERENCE] =
-              single_rd;
-      }
-      if (hybrid_rd <
-          search_state.intra_search_state.best_pred_rd[REFERENCE_MODE_SELECT])
-        search_state.intra_search_state.best_pred_rd[REFERENCE_MODE_SELECT] =
-            hybrid_rd;
+      record_best_compound(cm->current_frame.reference_mode, &rd_stats,
+                           comp_pred, x->rdmult, &search_state, compmode_cost);
     }
   }