Fix filter_intra RDO deficiencies

1) Renable filter_intra in lossless coding
2) Omit the rate of filter_intra flag when palette is picked

BUG=aomedia:1473

Change-Id: I6c371c15e0a373854fc50934d3baee85ae6cdb63
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 06be036e..536f819 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -791,6 +791,12 @@
   return TX_INVALID;
 }
 
+static INLINE int av1_filter_intra_allowed(const MB_MODE_INFO *mbmi) {
+  return mbmi->mode == DC_PRED &&
+         mbmi->palette_mode_info.palette_size[0] == 0 &&
+         av1_filter_intra_allowed_txsize(mbmi->tx_size);
+}
+
 // Converts block_index for given transform size to index of the block in raster
 // order.
 static INLINE int av1_block_index_to_raster_order(TX_SIZE tx_size,
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 008128a..a5d0842 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -610,8 +610,7 @@
   FILTER_INTRA_MODE_INFO *filter_intra_mode_info =
       &mbmi->filter_intra_mode_info;
 
-  if (mbmi->mode == DC_PRED && mbmi->palette_mode_info.palette_size[0] == 0 &&
-      av1_filter_intra_allowed_txsize(mbmi->tx_size)) {
+  if (av1_filter_intra_allowed(mbmi)) {
     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) {
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 5265287..836f19e 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -622,8 +622,7 @@
 static void write_filter_intra_mode_info(const MACROBLOCKD *xd,
                                          const MB_MODE_INFO *const mbmi,
                                          aom_writer *w) {
-  if (mbmi->mode == DC_PRED && mbmi->palette_mode_info.palette_size[0] == 0 &&
-      av1_filter_intra_allowed_txsize(mbmi->tx_size)) {
+  if (av1_filter_intra_allowed(mbmi)) {
     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) {
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 867dbb28..4ee6e02 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -2536,7 +2536,7 @@
       total_rate += palette_mode_cost;
     }
   }
-  if (mbmi->mode == DC_PRED && av1_filter_intra_allowed_txsize(mbmi->tx_size)) {
+  if (av1_filter_intra_allowed(mbmi)) {
     total_rate += x->filter_intra_cost[mbmi->tx_size][use_filter_intra];
     if (use_filter_intra) {
       total_rate += x->filter_intra_mode_cost[mbmi->filter_intra_mode_info
@@ -3372,7 +3372,7 @@
                               ctx->blk_skip[0]);
   }
 
-  if (beat_best_rd && !xd->lossless[mbmi->segment_id]) {
+  if (beat_best_rd) {
     if (rd_pick_filter_intra_sby(cpi, x, rate, rate_tokenonly, distortion,
                                  skippable, bsize, bmode_costs[DC_PRED],
                                  &best_rd, &best_model_rd, ctx)) {
@@ -9039,7 +9039,7 @@
       memcpy(best_blk_skip, x->blk_skip[0],
              sizeof(best_blk_skip[0]) * ctx->num_4x4_blk);
 
-      if (mbmi->mode == DC_PRED && !xd->lossless[mbmi->segment_id]) {
+      if (mbmi->mode == DC_PRED) {
         RD_STATS rd_stats_y_fi;
         int filter_intra_selected_flag = 0;
         TX_SIZE best_tx_size = mbmi->tx_size;