Remove filter_intra mode info for UV plane

Change-Id: I92f73b78dfd0e25a61897e8b6e9e28ff210376d5
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 5076708..d011e1b 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -194,9 +194,8 @@
 
 #if CONFIG_FILTER_INTRA
 typedef struct {
-  // 1: an ext intra mode is used; 0: otherwise.
-  uint8_t use_filter_intra_mode[PLANE_TYPES];
-  FILTER_INTRA_MODE filter_intra_mode[PLANE_TYPES];
+  uint8_t use_filter_intra;
+  FILTER_INTRA_MODE filter_intra_mode;
 } FILTER_INTRA_MODE_INFO;
 
 static const PREDICTION_MODE fimode_to_intradir[FILTER_INTRA_MODES] = {
diff --git a/av1/common/reconintra.c b/av1/common/reconintra.c
index 6cdea0e..bc9d522 100644
--- a/av1/common/reconintra.c
+++ b/av1/common/reconintra.c
@@ -1731,10 +1731,10 @@
   const int is_dr_mode = av1_is_directional_mode(mode, xd->mi[0]->mbmi.sb_type);
 #endif  // CONFIG_EXT_INTRA
 #if CONFIG_FILTER_INTRA
-  const FILTER_INTRA_MODE_INFO *filter_intra_mode_info =
-      &xd->mi[0]->mbmi.filter_intra_mode_info;
+  const int use_filter_intra =
+      plane > 0 ? 0 : xd->mi[0]->mbmi.filter_intra_mode_info.use_filter_intra;
   const FILTER_INTRA_MODE filter_intra_mode =
-      filter_intra_mode_info->filter_intra_mode[plane != 0];
+      xd->mi[0]->mbmi.filter_intra_mode_info.filter_intra_mode;
 #endif  // CONFIG_FILTER_INTRA
   int base = 128 << (xd->bd - 8);
 
@@ -1758,8 +1758,7 @@
   }
 #endif  // CONFIG_EXT_INTRA
 #if CONFIG_FILTER_INTRA
-  if (filter_intra_mode_info->use_filter_intra_mode[plane != 0])
-    need_left = need_above = need_above_left = 1;
+  if (use_filter_intra) need_left = need_above = need_above_left = 1;
 #endif  // CONFIG_FILTER_INTRA
 
   (void)plane;
@@ -1791,8 +1790,7 @@
 #if CONFIG_EXT_INTRA || CONFIG_FILTER_INTRA
     int need_bottom = !!(extend_modes[mode] & NEED_BOTTOMLEFT);
 #if CONFIG_FILTER_INTRA
-    if (filter_intra_mode_info->use_filter_intra_mode[plane != 0])
-      need_bottom = 0;
+    if (use_filter_intra) need_bottom = 0;
 #endif  // CONFIG_FILTER_INTRA
 #if CONFIG_EXT_INTRA
     if (is_dr_mode) need_bottom = p_angle > 180;
@@ -1829,8 +1827,7 @@
 #if CONFIG_EXT_INTRA || CONFIG_FILTER_INTRA
     int need_right = !!(extend_modes[mode] & NEED_ABOVERIGHT);
 #if CONFIG_FILTER_INTRA
-    if (filter_intra_mode_info->use_filter_intra_mode[plane != 0])
-      need_right = 1;
+    if (use_filter_intra) need_right = 0;
 #endif  // CONFIG_FILTER_INTRA
 #if CONFIG_EXT_INTRA
     if (is_dr_mode) need_right = p_angle < 90;
@@ -1883,7 +1880,7 @@
   }
 
 #if CONFIG_FILTER_INTRA
-  if (filter_intra_mode_info->use_filter_intra_mode[plane != 0]) {
+  if (use_filter_intra) {
     highbd_filter_intra_predictors(filter_intra_mode, dst, dst_stride, tx_size,
                                    above_row, left_col, xd->bd);
     return;
@@ -1975,10 +1972,10 @@
   const int is_dr_mode = av1_is_directional_mode(mode, mbmi->sb_type);
 #endif  // CONFIG_EXT_INTRA
 #if CONFIG_FILTER_INTRA
-  const FILTER_INTRA_MODE_INFO *filter_intra_mode_info =
-      &xd->mi[0]->mbmi.filter_intra_mode_info;
+  const int use_filter_intra =
+      plane > 0 ? 0 : xd->mi[0]->mbmi.filter_intra_mode_info.use_filter_intra;
   const FILTER_INTRA_MODE filter_intra_mode =
-      filter_intra_mode_info->filter_intra_mode[plane != 0];
+      xd->mi[0]->mbmi.filter_intra_mode_info.filter_intra_mode;
 #endif  // CONFIG_FILTER_INTRA
 
   // 127 127 127 .. 127 127 127 127 127 127
@@ -2002,8 +1999,7 @@
   }
 #endif  // CONFIG_EXT_INTRA
 #if CONFIG_FILTER_INTRA
-  if (filter_intra_mode_info->use_filter_intra_mode[plane != 0])
-    need_left = need_above = need_above_left = 1;
+  if (use_filter_intra) need_left = need_above = need_above_left = 1;
 #endif  // CONFIG_FILTER_INTRA
 
   (void)xd;
@@ -2036,8 +2032,7 @@
 #if CONFIG_EXT_INTRA || CONFIG_FILTER_INTRA
     int need_bottom = !!(extend_modes[mode] & NEED_BOTTOMLEFT);
 #if CONFIG_FILTER_INTRA
-    if (filter_intra_mode_info->use_filter_intra_mode[plane != 0])
-      need_bottom = 0;
+    if (use_filter_intra) need_bottom = 0;
 #endif  // CONFIG_FILTER_INTRA
 #if CONFIG_EXT_INTRA
     if (is_dr_mode) need_bottom = p_angle > 180;
@@ -2074,8 +2069,7 @@
 #if CONFIG_EXT_INTRA || CONFIG_FILTER_INTRA
     int need_right = !!(extend_modes[mode] & NEED_ABOVERIGHT);
 #if CONFIG_FILTER_INTRA
-    if (filter_intra_mode_info->use_filter_intra_mode[plane != 0])
-      need_right = 1;
+    if (use_filter_intra) need_right = 0;
 #endif  // CONFIG_FILTER_INTRA
 #if CONFIG_EXT_INTRA
     if (is_dr_mode) need_right = p_angle < 90;
@@ -2125,7 +2119,7 @@
   }
 
 #if CONFIG_FILTER_INTRA
-  if (filter_intra_mode_info->use_filter_intra_mode[plane != 0]) {
+  if (use_filter_intra) {
     filter_intra_predictors(filter_intra_mode, dst, dst_stride, tx_size,
                             above_row, left_col);
     return;
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index 71c0e67..f8c8f56 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -872,10 +872,10 @@
 
   if (mbmi->mode == DC_PRED && mbmi->palette_mode_info.palette_size[0] == 0 &&
       av1_filter_intra_allowed_txsize(mbmi->tx_size)) {
-    filter_intra_mode_info->use_filter_intra_mode[0] = aom_read_symbol(
+    filter_intra_mode_info->use_filter_intra = aom_read_symbol(
         r, xd->tile_ctx->filter_intra_cdfs[mbmi->tx_size], 2, ACCT_STR);
-    if (filter_intra_mode_info->use_filter_intra_mode[0]) {
-      filter_intra_mode_info->filter_intra_mode[0] =
+    if (filter_intra_mode_info->use_filter_intra) {
+      filter_intra_mode_info->filter_intra_mode =
           aom_read_symbol(r, xd->tile_ctx->filter_intra_mode_cdf[0],
                           FILTER_INTRA_MODES, ACCT_STR);
     }
@@ -971,9 +971,9 @@
       } else if (ALLOW_INTRA_EXT_TX) {
 #if CONFIG_FILTER_INTRA
         PREDICTION_MODE intra_dir;
-        if (mbmi->filter_intra_mode_info.use_filter_intra_mode[0])
+        if (mbmi->filter_intra_mode_info.use_filter_intra)
           intra_dir = fimode_to_intradir[mbmi->filter_intra_mode_info
-                                             .filter_intra_mode[0]];
+                                             .filter_intra_mode];
         else
           intra_dir = mbmi->mode;
         *tx_type = av1_ext_tx_inv[tx_set_type][aom_read_symbol(
@@ -1211,8 +1211,7 @@
   if (av1_allow_palette(cm->allow_screen_content_tools, bsize))
     read_palette_mode_info(cm, xd, r);
 #if CONFIG_FILTER_INTRA
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[1] = 0;
+  mbmi->filter_intra_mode_info.use_filter_intra = 0;
   read_filter_intra_mode_info(xd, r);
 #endif  // CONFIG_FILTER_INTRA
 
@@ -1576,8 +1575,7 @@
   if (av1_allow_palette(cm->allow_screen_content_tools, bsize))
     read_palette_mode_info(cm, xd, r);
 #if CONFIG_FILTER_INTRA
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[1] = 0;
+  mbmi->filter_intra_mode_info.use_filter_intra = 0;
   read_filter_intra_mode_info(xd, r);
 #endif  // CONFIG_FILTER_INTRA
 }
@@ -2126,8 +2124,7 @@
       mbmi->angle_delta[1] = 0;
 #endif  // CONFIG_EXT_INTRA
 #if CONFIG_FILTER_INTRA
-      mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
-      mbmi->filter_intra_mode_info.use_filter_intra_mode[1] = 0;
+      mbmi->filter_intra_mode_info.use_filter_intra = 0;
 #endif  // CONFIG_FILTER_INTRA
       if (is_interintra_wedge_used(bsize)) {
         mbmi->use_wedge_interintra = aom_read_symbol(
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 3aedcdb..9f596c1 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -813,11 +813,11 @@
                                          aom_writer *w) {
   if (mbmi->mode == DC_PRED && mbmi->palette_mode_info.palette_size[0] == 0 &&
       av1_filter_intra_allowed_txsize(mbmi->tx_size)) {
-    aom_write_symbol(w, mbmi->filter_intra_mode_info.use_filter_intra_mode[0],
+    aom_write_symbol(w, mbmi->filter_intra_mode_info.use_filter_intra,
                      xd->tile_ctx->filter_intra_cdfs[mbmi->tx_size], 2);
-    if (mbmi->filter_intra_mode_info.use_filter_intra_mode[0]) {
+    if (mbmi->filter_intra_mode_info.use_filter_intra) {
       const FILTER_INTRA_MODE mode =
-          mbmi->filter_intra_mode_info.filter_intra_mode[0];
+          mbmi->filter_intra_mode_info.filter_intra_mode;
       aom_write_symbol(w, mode, xd->tile_ctx->filter_intra_mode_cdf[0],
                        FILTER_INTRA_MODES);
     }
@@ -1118,9 +1118,9 @@
       } else if (ALLOW_INTRA_EXT_TX) {
 #if CONFIG_FILTER_INTRA
         PREDICTION_MODE intra_dir;
-        if (mbmi->filter_intra_mode_info.use_filter_intra_mode[0])
+        if (mbmi->filter_intra_mode_info.use_filter_intra)
           intra_dir = fimode_to_intradir[mbmi->filter_intra_mode_info
-                                             .filter_intra_mode[0]];
+                                             .filter_intra_mode];
         else
           intra_dir = mbmi->mode;
         aom_write_symbol(
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index d7225d1..2ac3b37 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -4279,7 +4279,7 @@
   if (mbmi->mode == DC_PRED && mbmi->palette_mode_info.palette_size[0] == 0 &&
       av1_filter_intra_allowed_txsize(mbmi->tx_size)) {
     const int use_filter_intra_mode =
-        mbmi->filter_intra_mode_info.use_filter_intra_mode[0];
+        mbmi->filter_intra_mode_info.use_filter_intra;
 #if CONFIG_ENTROPY_STATS
     if (use_filter_intra_mode) {
       const PREDICTION_MODE above = av1_above_block_mode(above_mi);
@@ -4299,7 +4299,7 @@
     if (allow_update_cdf) {
       if (use_filter_intra_mode)
         update_cdf(fc->filter_intra_mode_cdf[0],
-                   mbmi->filter_intra_mode_info.filter_intra_mode[0],
+                   mbmi->filter_intra_mode_info.filter_intra_mode,
                    FILTER_INTRA_MODES);
       update_cdf(fc->filter_intra_cdfs[mbmi->tx_size], use_filter_intra_mode,
                  2);
@@ -4563,9 +4563,9 @@
       } else {
 #if CONFIG_FILTER_INTRA
         PREDICTION_MODE intra_dir;
-        if (mbmi->filter_intra_mode_info.use_filter_intra_mode[0])
+        if (mbmi->filter_intra_mode_info.use_filter_intra)
           intra_dir = fimode_to_intradir[mbmi->filter_intra_mode_info
-                                             .filter_intra_mode[0]];
+                                             .filter_intra_mode];
         else
           intra_dir = mbmi->mode;
 #if CONFIG_ENTROPY_STATS
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index ac3a6d9..c6c4275 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -2362,9 +2362,9 @@
       if (ext_tx_set > 0 && ALLOW_INTRA_EXT_TX) {
 #if CONFIG_FILTER_INTRA
         PREDICTION_MODE intra_dir;
-        if (mbmi->filter_intra_mode_info.use_filter_intra_mode[0])
+        if (mbmi->filter_intra_mode_info.use_filter_intra)
           intra_dir = fimode_to_intradir[mbmi->filter_intra_mode_info
-                                             .filter_intra_mode[0]];
+                                             .filter_intra_mode];
         else
           intra_dir = mbmi->mode;
         return x->intra_tx_type_costs[ext_tx_set][square_tx_size][intra_dir]
@@ -2401,8 +2401,7 @@
   mbmi->tx_type = tx_type;
   mbmi->tx_size = tx_size;
 #if CONFIG_FILTER_INTRA
-  if (!is_inter_block(mbmi) &&
-      mbmi->filter_intra_mode_info.use_filter_intra_mode[0] &&
+  if (!is_inter_block(mbmi) && mbmi->filter_intra_mode_info.use_filter_intra &&
       !av1_filter_intra_allowed_txsize(tx_size)) {
     rd_stats->rate = INT_MAX;
     // Note: Initialize following to avoid uninitialied warnings.
@@ -2723,7 +2722,7 @@
   int64_t temp_sse, this_rd;
   TX_SIZE tx_size = tx_size_from_tx_mode(bsize, cm->tx_mode, 0);
 #if CONFIG_FILTER_INTRA
-  if (mbmi->filter_intra_mode_info.use_filter_intra_mode[0]) {
+  if (mbmi->filter_intra_mode_info.use_filter_intra) {
     tx_size = av1_max_tx_size_for_filter_intra(bsize, cm->tx_mode);
     if (!av1_filter_intra_allowed_txsize(tx_size)) return INT64_MAX;
   }
@@ -2756,8 +2755,8 @@
 #endif  // CONFIG_EXT_INTRA
 #if CONFIG_FILTER_INTRA
   if (mbmi->mode == DC_PRED && av1_filter_intra_allowed_txsize(mbmi->tx_size)) {
-    if (mbmi->filter_intra_mode_info.use_filter_intra_mode[0]) {
-      const int mode = mbmi->filter_intra_mode_info.filter_intra_mode[0];
+    if (mbmi->filter_intra_mode_info.use_filter_intra) {
+      const int mode = mbmi->filter_intra_mode_info.filter_intra_mode;
       mode_cost += x->filter_intra_cost[mbmi->tx_size][1] +
                    x->filter_intra_mode_cost[0][mode];
     } else {
@@ -2924,7 +2923,7 @@
 #endif  // CONFIG_HIGHBITDEPTH
     colors = av1_count_colors(src, src_stride, rows, cols, count_buf);
 #if CONFIG_FILTER_INTRA
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
+  mbmi->filter_intra_mode_info.use_filter_intra = 0;
 #endif  // CONFIG_FILTER_INTRA
 
   if (colors > 1 && colors <= 64) {
@@ -2972,7 +2971,7 @@
 
     mbmi->mode = DC_PRED;
 #if CONFIG_FILTER_INTRA
-    mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
+    mbmi->filter_intra_mode_info.use_filter_intra = 0;
 #endif  // CONFIG_FILTER_INTRA
 
     if (rows * cols > MAX_PALETTE_SQUARE) return 0;
@@ -3053,7 +3052,7 @@
   TX_TYPE best_tx_type;
 
   av1_zero(filter_intra_mode_info);
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 1;
+  mbmi->filter_intra_mode_info.use_filter_intra = 1;
   mbmi->mode = DC_PRED;
   mbmi->palette_mode_info.palette_size[0] = 0;
 
@@ -3061,7 +3060,7 @@
     int this_rate;
     int64_t this_rd, this_model_rd;
     RD_STATS tokenonly_rd_stats;
-    mbmi->filter_intra_mode_info.filter_intra_mode[0] = mode;
+    mbmi->filter_intra_mode_info.filter_intra_mode = mode;
     this_model_rd = intra_model_yrd(cpi, x, bsize, mode_cost);
     if (*best_model_rd != INT64_MAX &&
         this_model_rd > *best_model_rd + (*best_model_rd >> 1))
@@ -3090,10 +3089,7 @@
   if (filter_intra_selected_flag) {
     mbmi->mode = DC_PRED;
     mbmi->tx_size = best_tx_size;
-    mbmi->filter_intra_mode_info.use_filter_intra_mode[0] =
-        filter_intra_mode_info.use_filter_intra_mode[0];
-    mbmi->filter_intra_mode_info.filter_intra_mode[0] =
-        filter_intra_mode_info.filter_intra_mode[0];
+    mbmi->filter_intra_mode_info = filter_intra_mode_info;
     mbmi->tx_type = best_tx_type;
     return 1;
   } else {
@@ -3426,7 +3422,7 @@
                      directional_mode_skip_mask);
 #endif  // CONFIG_EXT_INTRA
 #if CONFIG_FILTER_INTRA
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
+  mbmi->filter_intra_mode_info.use_filter_intra = 0;
 #endif  // CONFIG_FILTER_INTRA
   pmi->palette_size[0] = 0;
   if (try_palette) {
@@ -5156,9 +5152,6 @@
   if (rows * cols > MAX_PALETTE_SQUARE) return;
 
   mbmi->uv_mode = UV_DC_PRED;
-#if CONFIG_FILTER_INTRA
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[1] = 0;
-#endif  // CONFIG_FILTER_INTRA
 
   int count_buf[1 << 12];  // Maximum (1 << 12) color levels.
 #if CONFIG_HIGHBITDEPTH
@@ -5518,9 +5511,6 @@
 static void init_sbuv_mode(MB_MODE_INFO *const mbmi) {
   mbmi->uv_mode = UV_DC_PRED;
   mbmi->palette_mode_info.palette_size[1] = 0;
-#if CONFIG_FILTER_INTRA
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[1] = 0;
-#endif  // CONFIG_FILTER_INTRA
 }
 
 static int64_t rd_pick_intra_sbuv_mode(const AV1_COMP *const cpi, MACROBLOCK *x,
@@ -9724,8 +9714,7 @@
     pmi->palette_size[0] = 0;
     pmi->palette_size[1] = 0;
 #if CONFIG_FILTER_INTRA
-    mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
-    mbmi->filter_intra_mode_info.use_filter_intra_mode[1] = 0;
+    mbmi->filter_intra_mode_info.use_filter_intra = 0;
 #endif  // CONFIG_FILTER_INTRA
         // Evaluate all sub-pel filters irrespective of whether we can use
         // them for this frame.
@@ -9836,12 +9825,12 @@
                                distortion_y);
         }
 
-        mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 1;
+        mbmi->filter_intra_mode_info.use_filter_intra = 1;
         for (FILTER_INTRA_MODE fi_mode = FILTER_DC_PRED;
              fi_mode < FILTER_INTRA_MODES; ++fi_mode) {
           int this_rate_tmp;
           int64_t this_rd_tmp;
-          mbmi->filter_intra_mode_info.filter_intra_mode[0] = fi_mode;
+          mbmi->filter_intra_mode_info.filter_intra_mode = fi_mode;
 
           super_block_yrd(cpi, x, &rd_stats_y_fi, bsize, best_rd);
           if (rd_stats_y_fi.rate == INT_MAX) continue;
@@ -9868,10 +9857,10 @@
         mbmi->tx_size = best_tx_size;
         mbmi->tx_type = best_tx_type;
         if (filter_intra_selected_flag) {
-          mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 1;
-          mbmi->filter_intra_mode_info.filter_intra_mode[0] = best_fi_mode;
+          mbmi->filter_intra_mode_info.use_filter_intra = 1;
+          mbmi->filter_intra_mode_info.filter_intra_mode = best_fi_mode;
         } else {
-          mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
+          mbmi->filter_intra_mode_info.use_filter_intra = 0;
         }
       }
 #endif
@@ -9948,11 +9937,11 @@
       if (mbmi->mode == DC_PRED &&
           av1_filter_intra_allowed_txsize(mbmi->tx_size)) {
         rate2 +=
-            x->filter_intra_cost[mbmi->tx_size][mbmi->filter_intra_mode_info
-                                                    .use_filter_intra_mode[0]];
-        if (mbmi->filter_intra_mode_info.use_filter_intra_mode[0]) {
+            x->filter_intra_cost[mbmi->tx_size]
+                                [mbmi->filter_intra_mode_info.use_filter_intra];
+        if (mbmi->filter_intra_mode_info.use_filter_intra) {
           rate2 += x->filter_intra_mode_cost[0][mbmi->filter_intra_mode_info
-                                                    .filter_intra_mode[0]];
+                                                    .filter_intra_mode];
         }
       }
 #endif  // CONFIG_FILTER_INTRA
@@ -9977,8 +9966,7 @@
         mbmi->angle_delta[1] = 0;
 #endif  // CONFIG_EXT_INTRA
 #if CONFIG_FILTER_INTRA
-        mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
-        mbmi->filter_intra_mode_info.use_filter_intra_mode[1] = 0;
+        mbmi->filter_intra_mode_info.use_filter_intra = 0;
 #endif  // CONFIG_FILTER_INTRA
       }
       mbmi->ref_mv_idx = 0;
@@ -11035,8 +11023,7 @@
   mbmi->palette_mode_info.palette_size[1] = 0;
 
 #if CONFIG_FILTER_INTRA
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
-  mbmi->filter_intra_mode_info.use_filter_intra_mode[1] = 0;
+  mbmi->filter_intra_mode_info.use_filter_intra = 0;
 #endif  // CONFIG_FILTER_INTRA
   mbmi->mode = GLOBALMV;
   mbmi->motion_mode = SIMPLE_TRANSLATION;