Remove TOTAL_REFS_PER_FRAME

In the codebase, TOTAL_REFS_PER_FRAME in fact completely overlaps
with REF_FRAMES, as both are valued 8 and both indicate the maximum
total number of reference frames that can be buffered and then can
be used for each inter coded frame. This CL keeps REF_FRAMES and
removes TOTAL_REFS_PER_FRAME to avoid unnecessary confusion due to
duplicate definitions.

Change-Id: Ia9761194d7223cc7d3c1a974bf7b782c06e8b224
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 9ab8a6b..92d7580 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1993,14 +1993,14 @@
       const int prime_idx = cm->primary_ref_frame;
       const int buf_idx =
           prime_idx == PRIMARY_REF_NONE ? -1 : cm->frame_refs[prime_idx].idx;
-      int8_t last_ref_deltas[TOTAL_REFS_PER_FRAME];
+      int8_t last_ref_deltas[REF_FRAMES];
       if (prime_idx == PRIMARY_REF_NONE || buf_idx < 0) {
         av1_set_default_ref_deltas(last_ref_deltas);
       } else {
         memcpy(last_ref_deltas, cm->buffer_pool->frame_bufs[buf_idx].ref_deltas,
-               TOTAL_REFS_PER_FRAME);
+               REF_FRAMES);
       }
-      for (i = 0; i < TOTAL_REFS_PER_FRAME; i++) {
+      for (i = 0; i < REF_FRAMES; i++) {
         const int delta = lf->ref_deltas[i];
         const int changed = delta != last_ref_deltas[i];
         aom_wb_write_bit(wb, changed);
@@ -2579,8 +2579,7 @@
   if (!pars->update_parameters) {
     RefCntBuffer *const frame_bufs = cm->buffer_pool->frame_bufs;
     int ref_frame, ref_idx, buf_idx;
-    for (ref_frame = LAST_FRAME; ref_frame < TOTAL_REFS_PER_FRAME;
-         ref_frame++) {
+    for (ref_frame = LAST_FRAME; ref_frame < REF_FRAMES; ref_frame++) {
       ref_idx = get_ref_frame_map_idx(cpi, ref_frame);
       assert(ref_idx != INVALID_IDX);
       buf_idx = cm->ref_frame_map[ref_idx];
@@ -2589,7 +2588,7 @@
         break;
       }
     }
-    assert(ref_frame < TOTAL_REFS_PER_FRAME);
+    assert(ref_frame < REF_FRAMES);
     aom_wb_write_literal(wb, ref_idx, 3);
     return;
   }
diff --git a/av1/encoder/block.h b/av1/encoder/block.h
index 096f024..63c99b9 100644
--- a/av1/encoder/block.h
+++ b/av1/encoder/block.h
@@ -195,11 +195,11 @@
   BLOCK_SIZE min_partition_size;
   BLOCK_SIZE max_partition_size;
 
-  int mv_best_ref_index[TOTAL_REFS_PER_FRAME];
-  unsigned int max_mv_context[TOTAL_REFS_PER_FRAME];
+  int mv_best_ref_index[REF_FRAMES];
+  unsigned int max_mv_context[REF_FRAMES];
   unsigned int source_variance;
-  unsigned int pred_sse[TOTAL_REFS_PER_FRAME];
-  int pred_mv_sad[TOTAL_REFS_PER_FRAME];
+  unsigned int pred_sse[REF_FRAMES];
+  int pred_mv_sad[REF_FRAMES];
 
   int *nmvjointcost;
   int nmv_vec_cost[MV_JOINTS];
@@ -300,7 +300,7 @@
   int intrabc_cost[2];
 
   // Used to store sub partition's choices.
-  MV pred_mv[TOTAL_REFS_PER_FRAME];
+  MV pred_mv[REF_FRAMES];
 
   // Store the best motion vector during motion search
   int_mv best_mv;
diff --git a/av1/encoder/context_tree.c b/av1/encoder/context_tree.c
index 75bdfc1..d6e556b 100644
--- a/av1/encoder/context_tree.c
+++ b/av1/encoder/context_tree.c
@@ -207,7 +207,7 @@
   dst_ctx->rdcost = src_ctx->rdcost;
   dst_ctx->rd_mode_is_ready = src_ctx->rd_mode_is_ready;
 
-  memcpy(dst_ctx->pred_mv, src_ctx->pred_mv, sizeof(MV) * TOTAL_REFS_PER_FRAME);
+  memcpy(dst_ctx->pred_mv, src_ctx->pred_mv, sizeof(MV) * REF_FRAMES);
   dst_ctx->pred_interp_filter = src_ctx->pred_interp_filter;
 
   dst_ctx->partition = src_ctx->partition;
diff --git a/av1/encoder/context_tree.h b/av1/encoder/context_tree.h
index ee3fb11..d44c72d 100644
--- a/av1/encoder/context_tree.h
+++ b/av1/encoder/context_tree.h
@@ -67,7 +67,7 @@
 
   // motion vector cache for adaptive motion search control in partition
   // search loop
-  MV pred_mv[TOTAL_REFS_PER_FRAME];
+  MV pred_mv[REF_FRAMES];
   InterpFilter pred_interp_filter;
   PARTITION_TYPE partition;
 } PICK_MODE_CONTEXT;
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index faf1187..3968b47 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -3855,14 +3855,14 @@
 // (INTER_REFS_PER_FRAME - 1)
 static void enforce_max_ref_frames(AV1_COMP *cpi) {
   AV1_COMMON *const cm = &cpi->common;
-  static const int flag_list[TOTAL_REFS_PER_FRAME] = { 0,
-                                                       AOM_LAST_FLAG,
-                                                       AOM_LAST2_FLAG,
-                                                       AOM_LAST3_FLAG,
-                                                       AOM_GOLD_FLAG,
-                                                       AOM_BWD_FLAG,
-                                                       AOM_ALT2_FLAG,
-                                                       AOM_ALT_FLAG };
+  static const int flag_list[REF_FRAMES] = { 0,
+                                             AOM_LAST_FLAG,
+                                             AOM_LAST2_FLAG,
+                                             AOM_LAST3_FLAG,
+                                             AOM_GOLD_FLAG,
+                                             AOM_BWD_FLAG,
+                                             AOM_ALT2_FLAG,
+                                             AOM_ALT_FLAG };
   MV_REFERENCE_FRAME ref_frame;
   int total_valid_refs = 0;
 
@@ -4006,14 +4006,14 @@
   // High Latency: Turn off skip mode if all refs are fwd.
   if (cpi->all_one_sided_refs && cpi->oxcf.lag_in_frames > 0) return 0;
 
-  static const int flag_list[TOTAL_REFS_PER_FRAME] = { 0,
-                                                       AOM_LAST_FLAG,
-                                                       AOM_LAST2_FLAG,
-                                                       AOM_LAST3_FLAG,
-                                                       AOM_GOLD_FLAG,
-                                                       AOM_BWD_FLAG,
-                                                       AOM_ALT2_FLAG,
-                                                       AOM_ALT_FLAG };
+  static const int flag_list[REF_FRAMES] = { 0,
+                                             AOM_LAST_FLAG,
+                                             AOM_LAST2_FLAG,
+                                             AOM_LAST3_FLAG,
+                                             AOM_GOLD_FLAG,
+                                             AOM_BWD_FLAG,
+                                             AOM_ALT2_FLAG,
+                                             AOM_ALT_FLAG };
   const int ref_frame[2] = { cm->ref_frame_idx_0 + LAST_FRAME,
                              cm->ref_frame_idx_1 + LAST_FRAME };
   if (!(cpi->ref_frame_flags & flag_list[ref_frame[0]]) ||
@@ -4193,10 +4193,10 @@
     av1_set_default_ref_deltas(cm->lf.ref_deltas);
     av1_set_default_mode_deltas(cm->lf.mode_deltas);
   } else if (cm->prev_frame) {
-    memcpy(cm->lf.ref_deltas, cm->prev_frame->ref_deltas, TOTAL_REFS_PER_FRAME);
+    memcpy(cm->lf.ref_deltas, cm->prev_frame->ref_deltas, REF_FRAMES);
     memcpy(cm->lf.mode_deltas, cm->prev_frame->mode_deltas, MAX_MODE_LF_DELTAS);
   }
-  memcpy(cm->cur_frame->ref_deltas, cm->lf.ref_deltas, TOTAL_REFS_PER_FRAME);
+  memcpy(cm->cur_frame->ref_deltas, cm->lf.ref_deltas, REF_FRAMES);
   memcpy(cm->cur_frame->mode_deltas, cm->lf.mode_deltas, MAX_MODE_LF_DELTAS);
 
   // Special case: set prev_mi to NULL when the previous mode info
@@ -4210,7 +4210,7 @@
   av1_zero(cpi->gmparams_cost);
   if (cpi->common.frame_type == INTER_FRAME && cpi->source &&
       !cpi->global_motion_search_done) {
-    YV12_BUFFER_CONFIG *ref_buf[TOTAL_REFS_PER_FRAME];
+    YV12_BUFFER_CONFIG *ref_buf[REF_FRAMES];
     int frame;
     double params_by_motion[RANSAC_NUM_MOTIONS * (MAX_PARAMDIM - 1)];
     const double *params_this_motion;
@@ -4323,7 +4323,7 @@
     cpi->global_motion_search_done = 1;
   }
   memcpy(cm->cur_frame->global_motion, cm->global_motion,
-         TOTAL_REFS_PER_FRAME * sizeof(WarpedMotionParams));
+         REF_FRAMES * sizeof(WarpedMotionParams));
 
   av1_setup_motion_field(cm);
 
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 33d54fb..fd8414d 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -3617,7 +3617,7 @@
   AV1_COMMON *cm = &cpi->common;
   int i;
   // TODO(isbs): only refresh the necessary frames, rather than all of them
-  for (i = 0; i < TOTAL_REFS_PER_FRAME; ++i) {
+  for (i = 0; i < REF_FRAMES; ++i) {
     const int idx = cpi->scaled_ref_idx[i];
     RefCntBuffer *const buf =
         idx != INVALID_IDX ? &cm->buffer_pool->frame_bufs[idx] : NULL;
@@ -4574,7 +4574,7 @@
 
 static int setup_interp_filter_search_mask(AV1_COMP *cpi) {
   InterpFilter ifilter;
-  int ref_total[TOTAL_REFS_PER_FRAME] = { 0 };
+  int ref_total[REF_FRAMES] = { 0 };
   MV_REFERENCE_FRAME ref;
   int mask = 0;
   int arf_idx = ALTREF_FRAME;
@@ -4626,14 +4626,14 @@
     return;
   }
 
-  static const int flag_list[TOTAL_REFS_PER_FRAME] = { 0,
-                                                       AOM_LAST_FLAG,
-                                                       AOM_LAST2_FLAG,
-                                                       AOM_LAST3_FLAG,
-                                                       AOM_GOLD_FLAG,
-                                                       AOM_BWD_FLAG,
-                                                       AOM_ALT2_FLAG,
-                                                       AOM_ALT_FLAG };
+  static const int flag_list[REF_FRAMES] = { 0,
+                                             AOM_LAST_FLAG,
+                                             AOM_LAST2_FLAG,
+                                             AOM_LAST3_FLAG,
+                                             AOM_GOLD_FLAG,
+                                             AOM_BWD_FLAG,
+                                             AOM_ALT2_FLAG,
+                                             AOM_ALT_FLAG };
   printf(
       "\n***Frame=%d (frame_offset=%d, show_frame=%d, "
       "show_existing_frame=%d) "
@@ -5873,8 +5873,7 @@
   }
 
   if (cpi->oxcf.pass != 0 || frame_is_intra_only(cm) == 1) {
-    for (i = 0; i < TOTAL_REFS_PER_FRAME; ++i)
-      cpi->scaled_ref_idx[i] = INVALID_IDX;
+    for (i = 0; i < REF_FRAMES; ++i) cpi->scaled_ref_idx[i] = INVALID_IDX;
   }
 
   cm->using_qmatrix = cpi->oxcf.using_qm;
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 88e594e..cec3238 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -318,7 +318,7 @@
 typedef struct RD_COUNTS {
   int64_t comp_pred_diff[REFERENCE_MODES];
   // Stores number of 4x4 blocks using global motion per reference frame.
-  int global_motion_used[TOTAL_REFS_PER_FRAME];
+  int global_motion_used[REF_FRAMES];
   int compound_ref_used_flag;
   int skip_mode_used_flag;
 } RD_COUNTS;
@@ -397,7 +397,7 @@
   int cur_poc;  // DebugInfo
 #endif
 
-  int scaled_ref_idx[TOTAL_REFS_PER_FRAME];
+  int scaled_ref_idx[REF_FRAMES];
   int lst_fb_idxes[LAST_REF_FRAMES];
   int gld_fb_idx;
   int bwd_fb_idx;   // BWDREF_FRAME
@@ -435,7 +435,7 @@
   CODING_CONTEXT coding_context;
 
   int gmtype_cost[TRANS_TYPES];
-  int gmparams_cost[TOTAL_REFS_PER_FRAME];
+  int gmparams_cost[REF_FRAMES];
 
   int nmv_costs[2][MV_VALS];
   int nmv_costs_hp[2][MV_VALS];
diff --git a/av1/encoder/ethread.c b/av1/encoder/ethread.c
index 1dc7caa..bc83440 100644
--- a/av1/encoder/ethread.c
+++ b/av1/encoder/ethread.c
@@ -18,7 +18,7 @@
   for (int i = 0; i < REFERENCE_MODES; i++)
     td->rd_counts.comp_pred_diff[i] += td_t->rd_counts.comp_pred_diff[i];
 
-  for (int i = 0; i < TOTAL_REFS_PER_FRAME; i++)
+  for (int i = 0; i < REF_FRAMES; i++)
     td->rd_counts.global_motion_used[i] +=
         td_t->rd_counts.global_motion_used[i];
 
diff --git a/av1/encoder/mbgraph.h b/av1/encoder/mbgraph.h
index e5c84a2..3e0a4fa 100644
--- a/av1/encoder/mbgraph.h
+++ b/av1/encoder/mbgraph.h
@@ -23,7 +23,7 @@
       int_mv mv;
       PREDICTION_MODE mode;
     } m;
-  } ref[TOTAL_REFS_PER_FRAME];
+  } ref[REF_FRAMES];
 } MBGRAPH_MB_STATS;
 
 typedef struct {
diff --git a/av1/encoder/rd.h b/av1/encoder/rd.h
index c67d054..47194d4 100644
--- a/av1/encoder/rd.h
+++ b/av1/encoder/rd.h
@@ -282,7 +282,7 @@
 
   int threshes[MAX_SEGMENTS][BLOCK_SIZES_ALL][MAX_MODES];
 
-  int64_t prediction_type_threshes[TOTAL_REFS_PER_FRAME][REFERENCE_MODES];
+  int64_t prediction_type_threshes[REF_FRAMES][REFERENCE_MODES];
 
   int RDMULT;
 } RD_OPT;
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index ec03137..89560bb 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -5114,12 +5114,13 @@
 
 // Check if NEARESTMV/NEARMV/GLOBALMV is the cheapest way encode zero motion.
 // TODO(aconverse): Find out if this is still productive then clean up or remove
-static int check_best_zero_mv(
-    const AV1_COMP *const cpi, const MACROBLOCK *const x,
-    const int16_t mode_context[TOTAL_REFS_PER_FRAME],
-    int_mv frame_mv[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME], int this_mode,
-    const MV_REFERENCE_FRAME ref_frames[2], const BLOCK_SIZE bsize, int mi_row,
-    int mi_col) {
+static int check_best_zero_mv(const AV1_COMP *const cpi,
+                              const MACROBLOCK *const x,
+                              const int16_t mode_context[REF_FRAMES],
+                              int_mv frame_mv[MB_MODE_COUNT][REF_FRAMES],
+                              int this_mode,
+                              const MV_REFERENCE_FRAME ref_frames[2],
+                              const BLOCK_SIZE bsize, int mi_row, int mi_col) {
   int_mv zeromv[2] = { { .as_int = 0 } };
   int comp_pred_mode = ref_frames[1] > INTRA_FRAME;
   if (this_mode == GLOBALMV || this_mode == GLOBAL_GLOBALMV) {
@@ -5390,16 +5391,15 @@
 static void estimate_ref_frame_costs(
     const AV1_COMMON *cm, const MACROBLOCKD *xd, const MACROBLOCK *x,
     int segment_id, unsigned int *ref_costs_single,
-    unsigned int (*ref_costs_comp)[TOTAL_REFS_PER_FRAME]) {
+    unsigned int (*ref_costs_comp)[REF_FRAMES]) {
   int seg_ref_active =
       segfeature_active(&cm->seg, segment_id, SEG_LVL_REF_FRAME);
   if (seg_ref_active) {
-    memset(ref_costs_single, 0,
-           TOTAL_REFS_PER_FRAME * sizeof(*ref_costs_single));
+    memset(ref_costs_single, 0, REF_FRAMES * sizeof(*ref_costs_single));
     int ref_frame;
-    for (ref_frame = 0; ref_frame < TOTAL_REFS_PER_FRAME; ++ref_frame)
+    for (ref_frame = 0; ref_frame < REF_FRAMES; ++ref_frame)
       memset(ref_costs_comp[ref_frame], 0,
-             TOTAL_REFS_PER_FRAME * sizeof((*ref_costs_comp)[0]));
+             REF_FRAMES * sizeof((*ref_costs_comp)[0]));
   } else {
     int intra_inter_ctx = av1_get_intra_inter_context(xd);
     ref_costs_single[INTRA_FRAME] = x->intra_inter_cost[intra_inter_ctx][0];
@@ -5450,7 +5450,7 @@
       const int ref_comp_ctx_p2 = av1_get_pred_context_comp_ref_p2(xd);
 
       const int comp_ref_type_ctx = av1_get_comp_reference_type_context(xd);
-      unsigned int ref_bicomp_costs[TOTAL_REFS_PER_FRAME] = { 0 };
+      unsigned int ref_bicomp_costs[REF_FRAMES] = { 0 };
 
       ref_bicomp_costs[LAST_FRAME] = ref_bicomp_costs[LAST2_FRAME] =
           ref_bicomp_costs[LAST3_FRAME] = ref_bicomp_costs[GOLDEN_FRAME] =
@@ -5544,9 +5544,8 @@
 static void setup_buffer_inter(
     const AV1_COMP *const cpi, MACROBLOCK *x, MV_REFERENCE_FRAME ref_frame,
     BLOCK_SIZE block_size, int mi_row, int mi_col,
-    int_mv frame_nearest_mv[TOTAL_REFS_PER_FRAME],
-    int_mv frame_near_mv[TOTAL_REFS_PER_FRAME],
-    struct buf_2d yv12_mb[TOTAL_REFS_PER_FRAME][MAX_MB_PLANE]) {
+    int_mv frame_nearest_mv[REF_FRAMES], int_mv frame_near_mv[REF_FRAMES],
+    struct buf_2d yv12_mb[REF_FRAMES][MAX_MB_PLANE]) {
   const AV1_COMMON *cm = &cpi->common;
   const int num_planes = av1_num_planes(cm);
   const YV12_BUFFER_CONFIG *yv12 = get_ref_frame_buffer(cpi, ref_frame);
@@ -6053,7 +6052,7 @@
 
   mask = av1_get_compound_type_mask(comp_data, sb_type);
 
-  int_mv frame_mv[TOTAL_REFS_PER_FRAME];
+  int_mv frame_mv[REF_FRAMES];
   MV_REFERENCE_FRAME rf[2] = { mbmi->ref_frame[0], mbmi->ref_frame[1] };
 
   frame_mv[rf[0]].as_int = cur_mv[0].as_int;
@@ -6078,8 +6077,7 @@
 // near mv modes to reduce distortion in subsequent blocks and also improve
 // visual quality.
 static int discount_newmv_test(const AV1_COMP *const cpi, int this_mode,
-                               int_mv this_mv,
-                               int_mv (*mode_mv)[TOTAL_REFS_PER_FRAME],
+                               int_mv this_mv, int_mv (*mode_mv)[REF_FRAMES],
                                int ref_frame) {
   return (!cpi->rc.is_src_frame_alt_ref && (this_mode == NEWMV) &&
           (this_mv.as_int != 0) &&
@@ -6509,13 +6507,13 @@
   int *single_newmv_valid;
   // Pointer to array of predicted rate-distortion
   // Should point to first of 2 arrays in 2D array
-  int64_t (*modelled_rd)[TOTAL_REFS_PER_FRAME];
-  InterpFilter single_filter[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME];
+  int64_t (*modelled_rd)[REF_FRAMES];
+  InterpFilter single_filter[MB_MODE_COUNT][REF_FRAMES];
 } HandleInterModeArgs;
 
 static int64_t handle_newmv(const AV1_COMP *const cpi, MACROBLOCK *const x,
                             const BLOCK_SIZE bsize,
-                            int_mv (*const mode_mv)[TOTAL_REFS_PER_FRAME],
+                            int_mv (*const mode_mv)[REF_FRAMES],
                             const int mi_row, const int mi_col,
                             int *const rate_mv, int_mv *const single_newmv,
                             HandleInterModeArgs *const args) {
@@ -6607,8 +6605,7 @@
 static int64_t interpolation_filter_search(
     MACROBLOCK *const x, const AV1_COMP *const cpi, BLOCK_SIZE bsize,
     int mi_row, int mi_col, const BUFFER_SET *const tmp_dst,
-    BUFFER_SET *const orig_dst,
-    InterpFilter (*const single_filter)[TOTAL_REFS_PER_FRAME],
+    BUFFER_SET *const orig_dst, InterpFilter (*const single_filter)[REF_FRAMES],
     int64_t *const rd, int *const switchable_rate, int *const skip_txfm_sb,
     int64_t *const skip_sse_sb) {
   const AV1_COMMON *cm = &cpi->common;
@@ -6775,12 +6772,14 @@
 
 // TODO(afergs): Refactor the MBMI references in here - there's four
 // TODO(afergs): Refactor optional args - add them to a struct or remove
-static int64_t motion_mode_rd(
-    const AV1_COMP *const cpi, MACROBLOCK *const x, BLOCK_SIZE bsize,
-    RD_STATS *rd_stats, RD_STATS *rd_stats_y, RD_STATS *rd_stats_uv,
-    int *disable_skip, int_mv (*mode_mv)[TOTAL_REFS_PER_FRAME], int mi_row,
-    int mi_col, HandleInterModeArgs *const args, const int64_t ref_best_rd,
-    const int *refs, int rate_mv, BUFFER_SET *orig_dst) {
+static int64_t motion_mode_rd(const AV1_COMP *const cpi, MACROBLOCK *const x,
+                              BLOCK_SIZE bsize, RD_STATS *rd_stats,
+                              RD_STATS *rd_stats_y, RD_STATS *rd_stats_uv,
+                              int *disable_skip, int_mv (*mode_mv)[REF_FRAMES],
+                              int mi_row, int mi_col,
+                              HandleInterModeArgs *const args,
+                              const int64_t ref_best_rd, const int *refs,
+                              int rate_mv, BUFFER_SET *orig_dst) {
   const AV1_COMMON *const cm = &cpi->common;
   const int num_planes = av1_num_planes(cm);
   MACROBLOCKD *xd = &x->e_mbd;
@@ -7279,11 +7278,13 @@
   return 0;
 }
 
-static int64_t handle_inter_mode(
-    const AV1_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize,
-    RD_STATS *rd_stats, RD_STATS *rd_stats_y, RD_STATS *rd_stats_uv,
-    int *disable_skip, int_mv (*mode_mv)[TOTAL_REFS_PER_FRAME], int mi_row,
-    int mi_col, HandleInterModeArgs *args, const int64_t ref_best_rd) {
+static int64_t handle_inter_mode(const AV1_COMP *const cpi, MACROBLOCK *x,
+                                 BLOCK_SIZE bsize, RD_STATS *rd_stats,
+                                 RD_STATS *rd_stats_y, RD_STATS *rd_stats_uv,
+                                 int *disable_skip,
+                                 int_mv (*mode_mv)[REF_FRAMES], int mi_row,
+                                 int mi_col, HandleInterModeArgs *args,
+                                 const int64_t ref_best_rd) {
   const AV1_COMMON *cm = &cpi->common;
   const int num_planes = av1_num_planes(cm);
   MACROBLOCKD *xd = &x->e_mbd;
@@ -7300,7 +7301,7 @@
   int rate_mv = 0;
   int pred_exists = 1;
   const int bw = block_size_wide[bsize];
-  int_mv single_newmv[TOTAL_REFS_PER_FRAME];
+  int_mv single_newmv[REF_FRAMES];
   uint8_t ref_frame_type = av1_ref_frame_type(mbmi->ref_frame);
   DECLARE_ALIGNED(32, uint8_t, tmp_buf_[2 * MAX_MB_PLANE * MAX_SB_SQUARE]);
   uint8_t *tmp_buf;
@@ -8173,8 +8174,8 @@
 static void estimate_skip_mode_rdcost(
     const AV1_COMP *const cpi, TileDataEnc *tile_data, MACROBLOCK *const x,
     BLOCK_SIZE bsize, int mi_row, int mi_col,
-    int_mv frame_mv[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME],
-    struct buf_2d yv12_mb[TOTAL_REFS_PER_FRAME][MAX_MB_PLANE]) {
+    int_mv frame_mv[MB_MODE_COUNT][REF_FRAMES],
+    struct buf_2d yv12_mb[REF_FRAMES][MAX_MB_PLANE]) {
   const AV1_COMMON *const cm = &cpi->common;
   const int num_planes = av1_num_planes(cm);
   MACROBLOCKD *const xd = &x->e_mbd;
@@ -8182,14 +8183,14 @@
   MB_MODE_INFO_EXT *const mbmi_ext = x->mbmi_ext;
 
   int *mode_map = tile_data->mode_map[bsize];
-  static const int flag_list[TOTAL_REFS_PER_FRAME] = { 0,
-                                                       AOM_LAST_FLAG,
-                                                       AOM_LAST2_FLAG,
-                                                       AOM_LAST3_FLAG,
-                                                       AOM_GOLD_FLAG,
-                                                       AOM_BWD_FLAG,
-                                                       AOM_ALT2_FLAG,
-                                                       AOM_ALT_FLAG };
+  static const int flag_list[REF_FRAMES] = { 0,
+                                             AOM_LAST_FLAG,
+                                             AOM_LAST2_FLAG,
+                                             AOM_LAST3_FLAG,
+                                             AOM_GOLD_FLAG,
+                                             AOM_BWD_FLAG,
+                                             AOM_ALT2_FLAG,
+                                             AOM_ALT_FLAG };
   int i;
 
   for (int midx = 0; midx < MAX_MODES; ++midx) {
@@ -8308,21 +8309,21 @@
   MV_REFERENCE_FRAME ref_frame, second_ref_frame;
   unsigned char segment_id = mbmi->segment_id;
   int comp_pred, i, k;
-  int_mv frame_mv[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME];
-  struct buf_2d yv12_mb[TOTAL_REFS_PER_FRAME][MAX_MB_PLANE];
+  int_mv frame_mv[MB_MODE_COUNT][REF_FRAMES];
+  struct buf_2d yv12_mb[REF_FRAMES][MAX_MB_PLANE];
   // Save a set of single_newmv for each checked ref_mv.
-  int_mv single_newmv[MAX_REF_MV_SERCH][TOTAL_REFS_PER_FRAME] = { { { 0 } } };
-  int single_newmv_rate[MAX_REF_MV_SERCH][TOTAL_REFS_PER_FRAME] = { { 0 } };
-  int single_newmv_valid[MAX_REF_MV_SERCH][TOTAL_REFS_PER_FRAME] = { { 0 } };
-  int64_t modelled_rd[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME];
-  static const int flag_list[TOTAL_REFS_PER_FRAME] = { 0,
-                                                       AOM_LAST_FLAG,
-                                                       AOM_LAST2_FLAG,
-                                                       AOM_LAST3_FLAG,
-                                                       AOM_GOLD_FLAG,
-                                                       AOM_BWD_FLAG,
-                                                       AOM_ALT2_FLAG,
-                                                       AOM_ALT_FLAG };
+  int_mv single_newmv[MAX_REF_MV_SERCH][REF_FRAMES] = { { { 0 } } };
+  int single_newmv_rate[MAX_REF_MV_SERCH][REF_FRAMES] = { { 0 } };
+  int single_newmv_valid[MAX_REF_MV_SERCH][REF_FRAMES] = { { 0 } };
+  int64_t modelled_rd[MB_MODE_COUNT][REF_FRAMES];
+  static const int flag_list[REF_FRAMES] = { 0,
+                                             AOM_LAST_FLAG,
+                                             AOM_LAST2_FLAG,
+                                             AOM_LAST3_FLAG,
+                                             AOM_GOLD_FLAG,
+                                             AOM_BWD_FLAG,
+                                             AOM_ALT2_FLAG,
+                                             AOM_ALT_FLAG };
   int64_t best_rd = best_rd_so_far;
   int best_rate_y = INT_MAX, best_rate_uv = INT_MAX;
   int64_t best_pred_diff[REFERENCE_MODES];
@@ -8333,8 +8334,8 @@
   int rate_skip1 = x->skip_cost[skip_ctx][1];
   int best_mode_skippable = 0;
   int midx, best_mode_index = -1;
-  unsigned int ref_costs_single[TOTAL_REFS_PER_FRAME];
-  unsigned int ref_costs_comp[TOTAL_REFS_PER_FRAME][TOTAL_REFS_PER_FRAME];
+  unsigned int ref_costs_single[REF_FRAMES];
+  unsigned int ref_costs_comp[REF_FRAMES][REF_FRAMES];
   int *comp_inter_cost = x->comp_inter_cost[av1_get_reference_mode_context(xd)];
   int64_t best_intra_rd = INT64_MAX;
   unsigned int best_pred_sse = UINT_MAX;
@@ -8352,7 +8353,7 @@
   const int *const intra_mode_cost = x->mbmode_cost[size_group_lookup[bsize]];
   int best_skip2 = 0;
   uint16_t ref_frame_skip_mask[2] = { 0 };
-  uint32_t mode_skip_mask[TOTAL_REFS_PER_FRAME] = { 0 };
+  uint32_t mode_skip_mask[REF_FRAMES] = { 0 };
   int mode_skip_start = sf->mode_skip_start + 1;
   const int *const rd_threshes = rd_opt->threshes[segment_id][bsize];
   const int *const rd_thresh_freq_fact = tile_data->thresh_freq_fact[bsize];
@@ -8399,8 +8400,8 @@
     args.left_pred_buf[2] = x->left_pred_buf + MAX_SB_SQUARE;
   }
 
-  int64_t dist_refs[TOTAL_REFS_PER_FRAME];
-  int dist_order_refs[TOTAL_REFS_PER_FRAME];
+  int64_t dist_refs[REF_FRAMES];
+  int dist_order_refs[REF_FRAMES];
   int num_available_refs = 0;
   memset(dist_refs, -1, sizeof(dist_refs));
   memset(dist_order_refs, -1, sizeof(dist_order_refs));
@@ -8415,9 +8416,9 @@
 
   for (i = 0; i < REFERENCE_MODES; ++i) best_pred_rd[i] = INT64_MAX;
   for (i = 0; i < TX_SIZES_ALL; i++) rate_uv_intra[i] = INT_MAX;
-  for (i = 0; i < TOTAL_REFS_PER_FRAME; ++i) x->pred_sse[i] = INT_MAX;
+  for (i = 0; i < REF_FRAMES; ++i) x->pred_sse[i] = INT_MAX;
   for (i = 0; i < MB_MODE_COUNT; ++i) {
-    for (k = 0; k < TOTAL_REFS_PER_FRAME; ++k) {
+    for (k = 0; k < REF_FRAMES; ++k) {
       args.single_filter[i][k] = SWITCHABLE;
     }
   }
@@ -8603,7 +8604,7 @@
     x->use_default_inter_tx_type = 0;
 
   for (i = 0; i < MB_MODE_COUNT; ++i)
-    for (ref_frame = 0; ref_frame < TOTAL_REFS_PER_FRAME; ++ref_frame)
+    for (ref_frame = 0; ref_frame < REF_FRAMES; ++ref_frame)
       modelled_rd[i][ref_frame] = INT64_MAX;
 
   x->skip_mode_rdcost = -1;
@@ -8692,9 +8693,7 @@
           ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK;
           break;
         case NONE_FRAME:
-        case TOTAL_REFS_PER_FRAME:
-          assert(0 && "Invalid Reference frame");
-          break;
+        case REF_FRAMES: assert(0 && "Invalid Reference frame"); break;
       }
     }
 
@@ -9394,8 +9393,8 @@
         // Reach the last single ref prediction mode
         if (ref_frame == ALTREF_FRAME && this_mode == GLOBALMV) {
           // bubble sort dist_refs and the order index
-          for (i = 0; i < TOTAL_REFS_PER_FRAME; ++i) {
-            for (k = i + 1; k < TOTAL_REFS_PER_FRAME; ++k) {
+          for (i = 0; i < REF_FRAMES; ++i) {
+            for (k = i + 1; k < REF_FRAMES; ++k) {
               if (dist_refs[i] < dist_refs[k]) {
                 int64_t tmp_dist = dist_refs[i];
                 dist_refs[i] = dist_refs[k];
@@ -9408,7 +9407,7 @@
             }
           }
 
-          for (i = 0; i < TOTAL_REFS_PER_FRAME; ++i) {
+          for (i = 0; i < REF_FRAMES; ++i) {
             if (dist_refs[i] == -1) break;
             num_available_refs = i;
           }
@@ -9853,8 +9852,8 @@
   const int comp_pred = 0;
   int i;
   int64_t best_pred_diff[REFERENCE_MODES];
-  unsigned int ref_costs_single[TOTAL_REFS_PER_FRAME];
-  unsigned int ref_costs_comp[TOTAL_REFS_PER_FRAME][TOTAL_REFS_PER_FRAME];
+  unsigned int ref_costs_single[REF_FRAMES];
+  unsigned int ref_costs_comp[REF_FRAMES][REF_FRAMES];
   int *comp_inter_cost = x->comp_inter_cost[av1_get_reference_mode_context(xd)];
   InterpFilter best_filter = SWITCHABLE;
   int64_t this_rd = INT64_MAX;
@@ -9868,9 +9867,8 @@
   estimate_ref_frame_costs(cm, xd, x, segment_id, ref_costs_single,
                            ref_costs_comp);
 
-  for (i = 0; i < TOTAL_REFS_PER_FRAME; ++i) x->pred_sse[i] = INT_MAX;
-  for (i = LAST_FRAME; i < TOTAL_REFS_PER_FRAME; ++i)
-    x->pred_mv_sad[i] = INT_MAX;
+  for (i = 0; i < REF_FRAMES; ++i) x->pred_sse[i] = INT_MAX;
+  for (i = LAST_FRAME; i < REF_FRAMES; ++i) x->pred_mv_sad[i] = INT_MAX;
 
   rd_cost->rate = INT_MAX;