diff --git a/av1/common/enums.h b/av1/common/enums.h
index 530e304..5fe3b2d 100644
--- a/av1/common/enums.h
+++ b/av1/common/enums.h
@@ -458,7 +458,7 @@
 typedef uint8_t TXFM_CONTEXT;
 #endif
 
-#define NONE -1
+#define NONE_FRAME -1
 #define INTRA_FRAME 0
 #define LAST_FRAME 1
 
diff --git a/av1/common/mvref_common.c b/av1/common/mvref_common.c
index 9427b97..8975da6 100644
--- a/av1/common/mvref_common.c
+++ b/av1/common/mvref_common.c
@@ -28,7 +28,7 @@
   const int unify_bsize = 0;
 #endif
 
-  if (rf[1] == NONE) {
+  if (rf[1] == NONE_FRAME) {
     // single reference frame
     for (ref = 0; ref < 2; ++ref) {
       if (candidate->ref_frame[ref] == rf[0]) {
@@ -419,7 +419,7 @@
     ref_mv_stack[idx].weight += REF_CAT_LEVEL;
 
   if (prev_frame_mvs_base && cm->show_frame && cm->last_show_frame &&
-      rf[1] == NONE) {
+      rf[1] == NONE_FRAME) {
     int blk_row, blk_col;
     int coll_blk_count = 0;
 #if CONFIG_CB4X4
@@ -514,7 +514,7 @@
     len = nr_len;
   }
 
-  if (rf[1] > NONE) {
+  if (rf[1] > NONE_FRAME) {
     for (idx = 0; idx < *refmv_count; ++idx) {
       clamp_mv_ref(&ref_mv_stack[idx].this_mv.as_mv, xd->n8_w << MI_SIZE_LOG2,
                    xd->n8_h << MI_SIZE_LOG2, xd);
@@ -819,7 +819,7 @@
   zeromv[0].as_int = gm_get_motion_vector(&cm->global_motion[rf[0]],
                                           cm->allow_high_precision_mv)
                          .as_int;
-  zeromv[1].as_int = (rf[1] != NONE)
+  zeromv[1].as_int = (rf[1] != NONE_FRAME)
                          ? gm_get_motion_vector(&cm->global_motion[rf[1]],
                                                 cm->allow_high_precision_mv)
                                .as_int
@@ -899,7 +899,7 @@
   CANDIDATE_MV tmp_mv;
   uint8_t idx;
   uint8_t above_count = 0, left_count = 0;
-  MV_REFERENCE_FRAME rf[2] = { mi->mbmi.ref_frame[ref], NONE };
+  MV_REFERENCE_FRAME rf[2] = { mi->mbmi.ref_frame[ref], NONE_FRAME };
   *ref_mv_count = 0;
 #endif
 
@@ -1026,7 +1026,7 @@
 
       mi_step = AOMMIN(xd->n8_w, num_8x8_blocks_wide_lookup[mbmi->sb_type]);
 
-      if (mbmi->ref_frame[0] == ref_frame && mbmi->ref_frame[1] == NONE) {
+      if (mbmi->ref_frame[0] == ref_frame && mbmi->ref_frame[1] == NONE_FRAME) {
         int bw = block_size_wide[mbmi->sb_type];
         int bh = block_size_high[mbmi->sb_type];
         int cr_offset = -AOMMAX(bh, 8) / 2 - 1;
@@ -1068,7 +1068,7 @@
 
       mi_step = AOMMIN(xd->n8_h, num_8x8_blocks_high_lookup[mbmi->sb_type]);
 
-      if (mbmi->ref_frame[0] == ref_frame && mbmi->ref_frame[1] == NONE) {
+      if (mbmi->ref_frame[0] == ref_frame && mbmi->ref_frame[1] == NONE_FRAME) {
         int bw = block_size_wide[mbmi->sb_type];
         int bh = block_size_high[mbmi->sb_type];
         int cr_offset = i * 8 + AOMMAX(bh, 8) / 2 - 1;
@@ -1106,7 +1106,7 @@
     MODE_INFO *mi = xd->mi[mi_col_offset + mi_row_offset * xd->mi_stride];
     MB_MODE_INFO *mbmi = &mi->mbmi;
 
-    if (mbmi->ref_frame[0] == ref_frame && mbmi->ref_frame[1] == NONE) {
+    if (mbmi->ref_frame[0] == ref_frame && mbmi->ref_frame[1] == NONE_FRAME) {
       int bw = block_size_wide[mbmi->sb_type];
       int bh = block_size_high[mbmi->sb_type];
       int cr_offset = -AOMMAX(bh, 8) / 2 - 1;
diff --git a/av1/common/mvref_common.h b/av1/common/mvref_common.h
index 94b256b..930abaa 100644
--- a/av1/common/mvref_common.h
+++ b/av1/common/mvref_common.h
@@ -411,7 +411,7 @@
     rf[1] = ref_frame_map[ref_frame_type - TOTAL_REFS_PER_FRAME][1];
   } else {
     rf[0] = ref_frame_type;
-    rf[1] = NONE;
+    rf[1] = NONE_FRAME;
     assert(ref_frame_type > INTRA_FRAME &&
            ref_frame_type < TOTAL_REFS_PER_FRAME);
   }
diff --git a/av1/common/pred_common.c b/av1/common/pred_common.c
index 9ad204c..66b1fd1 100644
--- a/av1/common/pred_common.c
+++ b/av1/common/pred_common.c
@@ -575,9 +575,9 @@
       const int a_comp = has_second_ref(above_mbmi);
 
       const MV_REFERENCE_FRAME l_brf =
-          l_comp ? left_mbmi->ref_frame[bwd_ref_sign_idx] : NONE;
+          l_comp ? left_mbmi->ref_frame[bwd_ref_sign_idx] : NONE_FRAME;
       const MV_REFERENCE_FRAME a_brf =
-          a_comp ? above_mbmi->ref_frame[bwd_ref_sign_idx] : NONE;
+          a_comp ? above_mbmi->ref_frame[bwd_ref_sign_idx] : NONE_FRAME;
 
       const MV_REFERENCE_FRAME l_frf =
           !l_comp ? left_mbmi->ref_frame[0]
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c
index 39435e2..26a34a8 100644
--- a/av1/common/reconinter.c
+++ b/av1/common/reconinter.c
@@ -1602,11 +1602,11 @@
 #if CONFIG_EXT_INTER
 void modify_neighbor_predictor_for_obmc(MB_MODE_INFO *mbmi) {
   if (is_interintra_pred(mbmi)) {
-    mbmi->ref_frame[1] = NONE;
+    mbmi->ref_frame[1] = NONE_FRAME;
   } else if (has_second_ref(mbmi) &&
              is_masked_compound_type(mbmi->interinter_compound_data.type)) {
     mbmi->interinter_compound_data.type = COMPOUND_AVERAGE;
-    mbmi->ref_frame[1] = NONE;
+    mbmi->ref_frame[1] = NONE_FRAME;
   }
   return;
 }
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index 254f9c6..5abda10 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -834,7 +834,7 @@
 
   mbmi->tx_size = read_tx_size(cm, xd, 0, 1, r);
   mbmi->ref_frame[0] = INTRA_FRAME;
-  mbmi->ref_frame[1] = NONE;
+  mbmi->ref_frame[1] = NONE_FRAME;
 
 #if CONFIG_CB4X4
   (void)i;
@@ -1010,7 +1010,7 @@
   if (segfeature_active(&cm->seg, segment_id, SEG_LVL_REF_FRAME)) {
     ref_frame[0] = (MV_REFERENCE_FRAME)get_segdata(&cm->seg, segment_id,
                                                    SEG_LVL_REF_FRAME);
-    ref_frame[1] = NONE;
+    ref_frame[1] = NONE_FRAME;
   } else {
     const REFERENCE_MODE mode = read_block_reference_mode(cm, xd, r);
     // FIXME(rbultje) I'm pretty sure this breaks segmentation ref frame coding
@@ -1093,7 +1093,7 @@
       }
 #endif  // CONFIG_EXT_REFS
 
-      ref_frame[1] = NONE;
+      ref_frame[1] = NONE_FRAME;
     } else {
       assert(0 && "Invalid prediction mode.");
     }
@@ -1170,7 +1170,7 @@
   int i;
 
   mbmi->ref_frame[0] = INTRA_FRAME;
-  mbmi->ref_frame[1] = NONE;
+  mbmi->ref_frame[1] = NONE_FRAME;
 
 #if CONFIG_CB4X4
   (void)i;
@@ -1559,7 +1559,7 @@
       zeromv[0].as_int = gm_get_motion_vector(&cm->global_motion[rf[0]],
                                               cm->allow_high_precision_mv)
                              .as_int;
-      zeromv[1].as_int = (rf[1] != NONE)
+      zeromv[1].as_int = (rf[1] != NONE_FRAME)
                              ? gm_get_motion_vector(&cm->global_motion[rf[1]],
                                                     cm->allow_high_precision_mv)
                                    .as_int
@@ -1849,7 +1849,7 @@
     const int interintra =
         aom_read(r, cm->fc->interintra_prob[bsize_group], ACCT_STR);
     if (xd->counts) xd->counts->interintra[bsize_group][interintra]++;
-    assert(mbmi->ref_frame[1] == NONE);
+    assert(mbmi->ref_frame[1] == NONE_FRAME);
     if (interintra) {
       const INTERINTRA_MODE interintra_mode =
           read_interintra_mode(cm, xd, r, bsize_group);
@@ -2079,8 +2079,8 @@
       MV_REF *const frame_mv = frame_mvs + h * cm->mi_cols;
       for (w = 0; w < x_mis; ++w) {
         MV_REF *const mv = frame_mv + w;
-        mv->ref_frame[0] = NONE;
-        mv->ref_frame[1] = NONE;
+        mv->ref_frame[0] = NONE_FRAME;
+        mv->ref_frame[1] = NONE_FRAME;
       }
     }
 #endif
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index c6b9f85..55cbcaa 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -898,7 +898,7 @@
     av1_setup_pre_planes(xd, 0, yv12, mi_row, mi_col,
                          &cm->frame_refs[LAST_FRAME - 1].sf);
     mbmi->ref_frame[0] = LAST_FRAME;
-    mbmi->ref_frame[1] = NONE;
+    mbmi->ref_frame[1] = NONE_FRAME;
     mbmi->sb_type = cm->sb_size;
     mbmi->mv[0].as_int = 0;
 #if CONFIG_DUAL_FILTER
@@ -981,7 +981,7 @@
   int dir;
   for (dir = 0; dir < 2; ++dir) {
     if (!has_subpel_mv_component(xd->mi[0], xd, dir) &&
-        (mbmi->ref_frame[1] == NONE ||
+        (mbmi->ref_frame[1] == NONE_FRAME ||
          !has_subpel_mv_component(xd->mi[0], xd, dir + 2)))
       mbmi->interp_filter[dir] = (cm->interp_filter == SWITCHABLE)
                                      ? EIGHTTAP_REGULAR
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index c545eab..3434d86 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -2674,7 +2674,7 @@
 
 static YV12_BUFFER_CONFIG *get_av1_ref_frame_buffer(
     AV1_COMP *cpi, AOM_REFFRAME ref_frame_flag) {
-  MV_REFERENCE_FRAME ref_frame = NONE;
+  MV_REFERENCE_FRAME ref_frame = NONE_FRAME;
   if (ref_frame_flag == AOM_LAST_FLAG) ref_frame = LAST_FRAME;
 #if CONFIG_EXT_REFS
   else if (ref_frame_flag == AOM_LAST2_FLAG)
@@ -2691,7 +2691,7 @@
   else if (ref_frame_flag == AOM_ALT_FLAG)
     ref_frame = ALTREF_FRAME;
 
-  return ref_frame == NONE ? NULL : get_ref_frame_buffer(cpi, ref_frame);
+  return ref_frame == NONE_FRAME ? NULL : get_ref_frame_buffer(cpi, ref_frame);
 }
 
 int av1_copy_reference_enc(AV1_COMP *cpi, AOM_REFFRAME ref_frame_flag,
diff --git a/av1/encoder/firstpass.c b/av1/encoder/firstpass.c
index 9971c66..32f1c5d 100644
--- a/av1/encoder/firstpass.c
+++ b/av1/encoder/firstpass.c
@@ -866,7 +866,7 @@
           xd->mi[0]->mbmi.mv[0].as_mv = mv;
           xd->mi[0]->mbmi.tx_size = TX_4X4;
           xd->mi[0]->mbmi.ref_frame[0] = LAST_FRAME;
-          xd->mi[0]->mbmi.ref_frame[1] = NONE;
+          xd->mi[0]->mbmi.ref_frame[1] = NONE_FRAME;
           av1_build_inter_predictors_sby(xd, mb_row * mb_scale,
                                          mb_col * mb_scale, NULL, bsize);
           av1_encode_sby_pass1(cm, x, bsize);
diff --git a/av1/encoder/mbgraph.c b/av1/encoder/mbgraph.c
index 1f63222..52974e2 100644
--- a/av1/encoder/mbgraph.c
+++ b/av1/encoder/mbgraph.c
@@ -71,7 +71,7 @@
 
   xd->mi[0]->mbmi.mv[0] = x->best_mv;
 #if CONFIG_EXT_INTER
-  xd->mi[0]->mbmi.ref_frame[1] = NONE;
+  xd->mi[0]->mbmi.ref_frame[1] = NONE_FRAME;
 #endif  // CONFIG_EXT_INTER
 
   av1_build_inter_predictors_sby(xd, mb_row, mb_col, NULL, BLOCK_16X16);
@@ -246,7 +246,7 @@
   xd->mi[0] = &mi_local;
   mi_local.mbmi.sb_type = BLOCK_16X16;
   mi_local.mbmi.ref_frame[0] = LAST_FRAME;
-  mi_local.mbmi.ref_frame[1] = NONE;
+  mi_local.mbmi.ref_frame[1] = NONE_FRAME;
 
   for (mb_row = 0; mb_row < cm->mb_rows; mb_row++) {
     MV gld_left_mv = gld_top_mv;
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index da412fb..d2e9950 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -138,54 +138,54 @@
 
 #define LAST_NEW_MV_INDEX 6
 static const MODE_DEFINITION av1_mode_order[MAX_MODES] = {
-  { NEARESTMV, { LAST_FRAME, NONE } },
+  { NEARESTMV, { LAST_FRAME, NONE_FRAME } },
 #if CONFIG_EXT_REFS
-  { NEARESTMV, { LAST2_FRAME, NONE } },
-  { NEARESTMV, { LAST3_FRAME, NONE } },
-  { NEARESTMV, { BWDREF_FRAME, NONE } },
+  { NEARESTMV, { LAST2_FRAME, NONE_FRAME } },
+  { NEARESTMV, { LAST3_FRAME, NONE_FRAME } },
+  { NEARESTMV, { BWDREF_FRAME, NONE_FRAME } },
 #endif  // CONFIG_EXT_REFS
-  { NEARESTMV, { ALTREF_FRAME, NONE } },
-  { NEARESTMV, { GOLDEN_FRAME, NONE } },
+  { NEARESTMV, { ALTREF_FRAME, NONE_FRAME } },
+  { NEARESTMV, { GOLDEN_FRAME, NONE_FRAME } },
 
-  { DC_PRED, { INTRA_FRAME, NONE } },
+  { DC_PRED, { INTRA_FRAME, NONE_FRAME } },
 
-  { NEWMV, { LAST_FRAME, NONE } },
+  { NEWMV, { LAST_FRAME, NONE_FRAME } },
 #if CONFIG_EXT_REFS
-  { NEWMV, { LAST2_FRAME, NONE } },
-  { NEWMV, { LAST3_FRAME, NONE } },
-  { NEWMV, { BWDREF_FRAME, NONE } },
+  { NEWMV, { LAST2_FRAME, NONE_FRAME } },
+  { NEWMV, { LAST3_FRAME, NONE_FRAME } },
+  { NEWMV, { BWDREF_FRAME, NONE_FRAME } },
 #endif  // CONFIG_EXT_REFS
-  { NEWMV, { ALTREF_FRAME, NONE } },
-  { NEWMV, { GOLDEN_FRAME, NONE } },
+  { NEWMV, { ALTREF_FRAME, NONE_FRAME } },
+  { NEWMV, { GOLDEN_FRAME, NONE_FRAME } },
 
-  { NEARMV, { LAST_FRAME, NONE } },
+  { NEARMV, { LAST_FRAME, NONE_FRAME } },
 #if CONFIG_EXT_REFS
-  { NEARMV, { LAST2_FRAME, NONE } },
-  { NEARMV, { LAST3_FRAME, NONE } },
-  { NEARMV, { BWDREF_FRAME, NONE } },
+  { NEARMV, { LAST2_FRAME, NONE_FRAME } },
+  { NEARMV, { LAST3_FRAME, NONE_FRAME } },
+  { NEARMV, { BWDREF_FRAME, NONE_FRAME } },
 #endif  // CONFIG_EXT_REFS
-  { NEARMV, { ALTREF_FRAME, NONE } },
-  { NEARMV, { GOLDEN_FRAME, NONE } },
+  { NEARMV, { ALTREF_FRAME, NONE_FRAME } },
+  { NEARMV, { GOLDEN_FRAME, NONE_FRAME } },
 
 #if CONFIG_EXT_INTER
-  { NEWFROMNEARMV, { LAST_FRAME, NONE } },
+  { NEWFROMNEARMV, { LAST_FRAME, NONE_FRAME } },
 #if CONFIG_EXT_REFS
-  { NEWFROMNEARMV, { LAST2_FRAME, NONE } },
-  { NEWFROMNEARMV, { LAST3_FRAME, NONE } },
-  { NEWFROMNEARMV, { BWDREF_FRAME, NONE } },
+  { NEWFROMNEARMV, { LAST2_FRAME, NONE_FRAME } },
+  { NEWFROMNEARMV, { LAST3_FRAME, NONE_FRAME } },
+  { NEWFROMNEARMV, { BWDREF_FRAME, NONE_FRAME } },
 #endif  // CONFIG_EXT_REFS
-  { NEWFROMNEARMV, { ALTREF_FRAME, NONE } },
-  { NEWFROMNEARMV, { GOLDEN_FRAME, NONE } },
+  { NEWFROMNEARMV, { ALTREF_FRAME, NONE_FRAME } },
+  { NEWFROMNEARMV, { GOLDEN_FRAME, NONE_FRAME } },
 #endif  // CONFIG_EXT_INTER
 
-  { ZEROMV, { LAST_FRAME, NONE } },
+  { ZEROMV, { LAST_FRAME, NONE_FRAME } },
 #if CONFIG_EXT_REFS
-  { ZEROMV, { LAST2_FRAME, NONE } },
-  { ZEROMV, { LAST3_FRAME, NONE } },
-  { ZEROMV, { BWDREF_FRAME, NONE } },
+  { ZEROMV, { LAST2_FRAME, NONE_FRAME } },
+  { ZEROMV, { LAST3_FRAME, NONE_FRAME } },
+  { ZEROMV, { BWDREF_FRAME, NONE_FRAME } },
 #endif  // CONFIG_EXT_REFS
-  { ZEROMV, { GOLDEN_FRAME, NONE } },
-  { ZEROMV, { ALTREF_FRAME, NONE } },
+  { ZEROMV, { GOLDEN_FRAME, NONE_FRAME } },
+  { ZEROMV, { ALTREF_FRAME, NONE_FRAME } },
 
 // TODO(zoeliu): May need to reconsider the order on the modes to check
 
@@ -219,10 +219,10 @@
 #endif  // CONFIG_EXT_REFS
 #endif  // CONFIG_EXT_INTER
 
-  { TM_PRED, { INTRA_FRAME, NONE } },
+  { TM_PRED, { INTRA_FRAME, NONE_FRAME } },
 
 #if CONFIG_ALT_INTRA
-  { SMOOTH_PRED, { INTRA_FRAME, NONE } },
+  { SMOOTH_PRED, { INTRA_FRAME, NONE_FRAME } },
 #endif  // CONFIG_ALT_INTRA
 
 #if CONFIG_EXT_INTER
@@ -350,14 +350,14 @@
 
 #endif  // CONFIG_EXT_INTER
 
-  { H_PRED, { INTRA_FRAME, NONE } },
-  { V_PRED, { INTRA_FRAME, NONE } },
-  { D135_PRED, { INTRA_FRAME, NONE } },
-  { D207_PRED, { INTRA_FRAME, NONE } },
-  { D153_PRED, { INTRA_FRAME, NONE } },
-  { D63_PRED, { INTRA_FRAME, NONE } },
-  { D117_PRED, { INTRA_FRAME, NONE } },
-  { D45_PRED, { INTRA_FRAME, NONE } },
+  { H_PRED, { INTRA_FRAME, NONE_FRAME } },
+  { V_PRED, { INTRA_FRAME, NONE_FRAME } },
+  { D135_PRED, { INTRA_FRAME, NONE_FRAME } },
+  { D207_PRED, { INTRA_FRAME, NONE_FRAME } },
+  { D153_PRED, { INTRA_FRAME, NONE_FRAME } },
+  { D63_PRED, { INTRA_FRAME, NONE_FRAME } },
+  { D117_PRED, { INTRA_FRAME, NONE_FRAME } },
+  { D45_PRED, { INTRA_FRAME, NONE_FRAME } },
 
 #if CONFIG_EXT_INTER
   { ZEROMV, { LAST_FRAME, INTRA_FRAME } },
@@ -397,12 +397,12 @@
 };
 
 static const REF_DEFINITION av1_ref_order[MAX_REFS] = {
-  { { LAST_FRAME, NONE } },
+  { { LAST_FRAME, NONE_FRAME } },
 #if CONFIG_EXT_REFS
-  { { LAST2_FRAME, NONE } },          { { LAST3_FRAME, NONE } },
-  { { BWDREF_FRAME, NONE } },
+  { { LAST2_FRAME, NONE_FRAME } },    { { LAST3_FRAME, NONE_FRAME } },
+  { { BWDREF_FRAME, NONE_FRAME } },
 #endif  // CONFIG_EXT_REFS
-  { { GOLDEN_FRAME, NONE } },         { { ALTREF_FRAME, NONE } },
+  { { GOLDEN_FRAME, NONE_FRAME } },   { { ALTREF_FRAME, NONE_FRAME } },
 
   { { LAST_FRAME, ALTREF_FRAME } },
 #if CONFIG_EXT_REFS
@@ -415,7 +415,7 @@
   { { LAST3_FRAME, BWDREF_FRAME } },  { { GOLDEN_FRAME, BWDREF_FRAME } },
 #endif  // CONFIG_EXT_REFS
 
-  { { INTRA_FRAME, NONE } },
+  { { INTRA_FRAME, NONE_FRAME } },
 };
 
 #if CONFIG_EXT_INTRA || CONFIG_FILTER_INTRA || CONFIG_PALETTE
@@ -8338,7 +8338,7 @@
 #endif  // CONFIG_AOM_HIGHBITDEPTH
       intrapred = intrapred_;
 
-    mbmi->ref_frame[1] = NONE;
+    mbmi->ref_frame[1] = NONE_FRAME;
     for (j = 0; j < MAX_MB_PLANE; j++) {
       xd->plane[j].dst.buf = tmp_buf + j * MAX_SB_SQUARE;
       xd->plane[j].dst.stride = bw;
@@ -8866,7 +8866,7 @@
 
   ctx->skip = 0;
   xd->mi[0]->mbmi.ref_frame[0] = INTRA_FRAME;
-  xd->mi[0]->mbmi.ref_frame[1] = NONE;
+  xd->mi[0]->mbmi.ref_frame[1] = NONE_FRAME;
 
   if (bsize >= BLOCK_8X8 || unify_bsize) {
     if (rd_pick_intra_sby_mode(cpi, x, &rate_y, &rate_y_tokenonly, &dist_y,
@@ -9067,7 +9067,7 @@
   mbmi->mode = DC_PRED;
   mbmi->uv_mode = DC_PRED;
   mbmi->ref_frame[0] = INTRA_FRAME;
-  mbmi->ref_frame[1] = NONE;
+  mbmi->ref_frame[1] = NONE_FRAME;
   if (!rd_pick_filter_intra_sby(cpi, x, &rate_dummy, &rate_y, &distortion_y,
                                 &skippable, bsize, intra_mode_cost[mbmi->mode],
                                 &this_rd, 0)) {
@@ -9694,7 +9694,7 @@
           ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK;
 #endif  // CONFIG_EXT_REFS
           break;
-        case NONE:
+        case NONE_FRAME:
         case TOTAL_REFS_PER_FRAME:
           assert(0 && "Invalid Reference frame");
           break;
@@ -10327,7 +10327,7 @@
         best_intra_mode = mbmi->mode;
       }
 #if CONFIG_EXT_INTER
-    } else if (second_ref_frame == NONE) {
+    } else if (second_ref_frame == NONE_FRAME) {
       if (this_rd < best_single_inter_rd) {
         best_single_inter_rd = this_rd;
         best_single_inter_ref = mbmi->ref_frame[0];
@@ -10564,7 +10564,7 @@
     mbmi->mode = DC_PRED;
     mbmi->uv_mode = DC_PRED;
     mbmi->ref_frame[0] = INTRA_FRAME;
-    mbmi->ref_frame[1] = NONE;
+    mbmi->ref_frame[1] = NONE_FRAME;
     rate_overhead_palette = rd_pick_palette_intra_sby(
         cpi, x, bsize, palette_ctx, intra_mode_cost[DC_PRED], &mbmi_dummy,
         best_palette_color_map, &dummy_rd, NULL, NULL, NULL, NULL);
@@ -10847,7 +10847,7 @@
 #if CONFIG_EXT_INTER
           (best_mbmode.ref_frame[1] <= INTRA_FRAME)
 #else
-          (best_mbmode.ref_frame[1] == NONE ||
+          (best_mbmode.ref_frame[1] == NONE_FRAME ||
            best_mbmode.mv[1].as_int == zeromv[1].as_int)
 #endif  // CONFIG_EXT_INTER
               ) {
@@ -10966,7 +10966,7 @@
   mbmi->motion_mode = SIMPLE_TRANSLATION;
   mbmi->uv_mode = DC_PRED;
   mbmi->ref_frame[0] = LAST_FRAME;
-  mbmi->ref_frame[1] = NONE;
+  mbmi->ref_frame[1] = NONE_FRAME;
 #if CONFIG_GLOBAL_MOTION
   mbmi->mv[0].as_int =
       gm_get_motion_vector(&cm->global_motion[mbmi->ref_frame[0]],
@@ -11279,7 +11279,7 @@
             ref_frame_skip_mask[1] |= (1 << BWDREF_FRAME) | 0x01;
 #endif  // CONFIG_EXT_REFS
             break;
-          case NONE:
+          case NONE_FRAME:
           case TOTAL_REFS_PER_FRAME:
             assert(0 && "Invalid Reference frame");
             break;
