filter_intra: make fi mode index entropy coded

Make fi mode index entropy coded instead of using raw bits. Mode
cost estimation in key-frame RDO is updated as well. Modification
to inter frame RDO is not included in this patch.
Also key-frame y mode cdf table is re-trained since fi modes are
attached to DC_PRED

Key frame BDRate:
-0.399% lowres, -0.339% midres

Change-Id: I9ccf478b0a2e48fb1870fe8451e45e2c858a5f63
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index d036ab2..9f15370 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -3881,7 +3881,7 @@
     if (tokenonly_rd_stats.rate == INT_MAX) continue;
     this_rate = tokenonly_rd_stats.rate +
                 av1_cost_bit(cpi->common.fc->filter_intra_probs[0], 1) +
-                write_uniform_cost(FILTER_INTRA_MODES, mode) + mode_cost;
+                x->filter_intra_mode_cost[0][mode] + mode_cost;
     this_rd = RDCOST(x->rdmult, this_rate, tokenonly_rd_stats.dist);
 
     if (this_rd < *best_rd) {
@@ -5965,7 +5965,7 @@
     this_rate = tokenonly_rd_stats.rate +
                 av1_cost_bit(cpi->common.fc->filter_intra_probs[1], 1) +
                 x->intra_uv_mode_cost[mbmi->mode][mbmi->uv_mode] +
-                write_uniform_cost(FILTER_INTRA_MODES, mode);
+                x->filter_intra_mode_cost[1][mode];
     this_rd = RDCOST(x->rdmult, this_rate, tokenonly_rd_stats.dist);
     if (this_rd < *best_rd) {
       *best_rd = this_rd;
@@ -10306,7 +10306,7 @@
                                 MAX_ANGLE_DELTA + mbmi->angle_delta[1]);
   }
 #endif  // CONFIG_EXT_INTRA
-  if (mbmi->mode == DC_PRED) {
+  if (mbmi->uv_mode == DC_PRED) {
     rate2 +=
         av1_cost_bit(cpi->common.fc->filter_intra_probs[1],
                      mbmi->filter_intra_mode_info.use_filter_intra_mode[1]);