Optimizations for filter_intra

Reduce number of modes from 10 to 6, and disable fi modes in UV.
To reduce complexity, apply filter directly without subtracting
the estimated means.

Change-Id: Iaf78d92d31e4a7cc30ea7863b57a9611c5f503e6
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index 719cef2..e9164ef 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -859,8 +859,7 @@
 
 #if CONFIG_FILTER_INTRA
 static void read_filter_intra_mode_info(AV1_COMMON *const cm,
-                                        MACROBLOCKD *const xd, int mi_row,
-                                        int mi_col, aom_reader *r) {
+                                        MACROBLOCKD *const xd, aom_reader *r) {
   MODE_INFO *const mi = xd->mi[0];
   MB_MODE_INFO *const mbmi = &mi->mbmi;
   FRAME_COUNTS *counts = xd->counts;
@@ -880,26 +879,6 @@
             ->filter_intra[0][filter_intra_mode_info->use_filter_intra_mode[0]];
     }
   }
-
-  if (!is_chroma_reference(mi_row, mi_col, mbmi->sb_type,
-                           xd->plane[1].subsampling_x,
-                           xd->plane[1].subsampling_y))
-    return;
-
-  if (mbmi->uv_mode == UV_DC_PRED &&
-      mbmi->palette_mode_info.palette_size[1] == 0) {
-    filter_intra_mode_info->use_filter_intra_mode[1] =
-        aom_read(r, cm->fc->filter_intra_probs[1], ACCT_STR);
-    if (filter_intra_mode_info->use_filter_intra_mode[1]) {
-      filter_intra_mode_info->filter_intra_mode[1] =
-          aom_read_symbol(r, xd->tile_ctx->filter_intra_mode_cdf[1],
-                          FILTER_INTRA_MODES, ACCT_STR);
-    }
-    if (counts) {
-      ++counts
-            ->filter_intra[1][filter_intra_mode_info->use_filter_intra_mode[1]];
-    }
-  }
 }
 #endif  // CONFIG_FILTER_INTRA
 
@@ -971,9 +950,21 @@
             r, ec_ctx->inter_ext_tx_cdf[eset][square_tx_size],
             av1_num_ext_tx_set[tx_set_type], ACCT_STR)];
       } 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])
+          intra_dir = fimode_to_intradir[mbmi->filter_intra_mode_info
+                                             .filter_intra_mode[0]];
+        else
+          intra_dir = mbmi->mode;
+        *tx_type = av1_ext_tx_inv[tx_set_type][aom_read_symbol(
+            r, ec_ctx->intra_ext_tx_cdf[eset][square_tx_size][intra_dir],
+            av1_num_ext_tx_set[tx_set_type], ACCT_STR)];
+#else
         *tx_type = av1_ext_tx_inv[tx_set_type][aom_read_symbol(
             r, ec_ctx->intra_ext_tx_cdf[eset][square_tx_size][mbmi->mode],
             av1_num_ext_tx_set[tx_set_type], ACCT_STR)];
+#endif
       }
 #else
       // only signal tx_type when lgt is not allowed or not selected
@@ -1276,7 +1267,7 @@
 #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;
-  read_filter_intra_mode_info(cm, xd, mi_row, mi_col, r);
+  read_filter_intra_mode_info(cm, xd, r);
 #endif  // CONFIG_FILTER_INTRA
 
 #if !CONFIG_TXK_SEL
@@ -1812,7 +1803,7 @@
 #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;
-  read_filter_intra_mode_info(cm, xd, mi_row, mi_col, r);
+  read_filter_intra_mode_info(cm, xd, r);
 #endif  // CONFIG_FILTER_INTRA
 }