Fix inter path for mrc-tx

A speed feature was causing the rdloop to skip trying
MRC_DCT. I've disabled that speed feature when mrc-tx
is enabled and MRC_DCT is allowed for inter blocks.

Change-Id: I0affa5f26465539414b2957f8ff983f718863ef1
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index d22719d..d647cfa 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -4623,6 +4623,12 @@
     tmp_dist =
         av1_block_error(coeff, dqcoeff, buffer_length, &tmp_sse) >> shift;
 
+#if CONFIG_MRC_TX
+  if (tx_type == MRC_DCT && !xd->mi[0]->mbmi.valid_mrc_mask) {
+    av1_invalid_rd_stats(rd_stats);
+    return;
+  }
+#endif  // CONFIG_MRC_TX
   if (
 #if CONFIG_DIST_8X8
       sub8x8tx_in_gte8x8blk_in_plane0 ||
@@ -4776,8 +4782,13 @@
   if (cpi->common.tx_mode == TX_MODE_SELECT || tx_size == TX_4X4) {
     inter_tx_size[0][0] = tx_size;
 
+#if CONFIG_MRC_TX
+    if (tx_size == TX_32X32 && mbmi->tx_type != DCT_DCT &&
+        rd_stats_stack[block32].rate != INT_MAX && !USE_MRC_INTER) {
+#else
     if (tx_size == TX_32X32 && mbmi->tx_type != DCT_DCT &&
         rd_stats_stack[block32].rate != INT_MAX) {
+#endif  // CONFIG_MRC_TX
       *rd_stats = rd_stats_stack[block32];
       p->eobs[block] = !rd_stats->skip;
       x->blk_skip[plane][blk_row * bw + blk_col] = rd_stats->skip;
@@ -4788,6 +4799,7 @@
         rd_stats_stack[block32] = *rd_stats;
       }
     }
+    if (rd_stats->rate == INT_MAX) return;
 
     if ((RDCOST(x->rdmult, rd_stats->rate, rd_stats->dist) >=
              RDCOST(x->rdmult, zero_blk_rate, rd_stats->sse) ||
@@ -4842,6 +4854,7 @@
 
       av1_tx_block_rd_b(cpi, x, quarter_txsize, 0, 0, plane, 0, plane_bsize,
                         pta, ptl, &rd_stats_qttx);
+      if (rd_stats->rate == INT_MAX) return;
 
       tx_size_ctx = txsize_sqr_map[quarter_txsize];
       coeff_ctx = get_entropy_context(quarter_txsize, pta, ptl);
@@ -4872,6 +4885,8 @@
                         plane, block_offset_qttx, plane_bsize, pta, ptl,
                         &rd_stats_tmp);
 
+      if (rd_stats->rate == INT_MAX) return;
+
       av1_set_txb_context(x, plane, 0, quarter_txsize, pta, ptl);
       coeff_ctx = get_entropy_context(quarter_txsize, pta + blk_col_offset,
                                       ptl + blk_row_offset);
@@ -5171,6 +5186,10 @@
                         mi_height != mi_width, plane_bsize, ctxa, ctxl,
                         tx_above, tx_left, &pn_rd_stats, ref_best_rd - this_rd,
                         &is_cost_valid, rd_stats_stack);
+        if (pn_rd_stats.rate == INT_MAX) {
+          av1_invalid_rd_stats(rd_stats);
+          return;
+        }
         av1_merge_rd_stats(rd_stats, &pn_rd_stats);
         this_rd += AOMMIN(RDCOST(x->rdmult, pn_rd_stats.rate, pn_rd_stats.dist),
                           RDCOST(x->rdmult, 0, pn_rd_stats.sse));