Merge changes Ia37f170d,Ie3082db5 into nextgenv2

* changes:
  Record YUV planes' txfm block coeff cost in handle_inter_mode()
  Separate coefficient cost of U/V planes in write_modes_b()
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 53bca13..1d08cfa 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -251,8 +251,7 @@
   int current_q_index;
 #endif
 #if CONFIG_RD_DEBUG
-  int64_t txb_cost_y;
-  int64_t txb_cost_uv;
+  int64_t txb_coeff_cost[MAX_MB_PLANE];
   int mi_row;
   int mi_col;
 #endif
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 568852f..fa6b905 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1756,8 +1756,7 @@
   int plane;
   int bh, bw;
 #if CONFIG_RD_DEBUG
-  int64_t txb_cost_y = 0;
-  int64_t txb_cost_uv = 0;
+  int64_t txb_coeff_cost[MAX_MB_PLANE] = { 0 };
 #endif
 #if CONFIG_RANS
   (void)tok;
@@ -1903,10 +1902,7 @@
 #endif  // CONFIG_VAR_TX
 
 #if CONFIG_RD_DEBUG
-      if (plane == 0)
-        txb_cost_y += token_stats.cost;
-      else
-        txb_cost_uv += token_stats.cost;
+      txb_coeff_cost[plane] += token_stats.cost;
 #else
       (void)token_stats;
 #endif
@@ -1916,14 +1912,11 @@
     }
   }
 #if CONFIG_RD_DEBUG
-  if (m->mbmi.txb_cost_y != txb_cost_y) {
-    dump_mode_info(m);
-    assert(0);
-  }
-
-  if (m->mbmi.txb_cost_uv != txb_cost_uv) {
-    dump_mode_info(m);
-    assert(0);
+  for (plane = 0; plane < MAX_MB_PLANE; ++plane) {
+    if (m->mbmi.txb_coeff_cost[plane] != txb_coeff_cost[plane]) {
+      dump_mode_info(m);
+      assert(0);
+    }
   }
 #endif
 }
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index b337ec2..d23a7ba 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -3417,6 +3417,10 @@
     for (idx = 0; idx < xd->n8_w; ++idx)
       mbmi->inter_tx_size[idy][idx] = best_tx_size[idy][idx];
   mbmi->tx_size = best_tx;
+#if CONFIG_RD_DEBUG
+  // record plane y's transform block coefficient cost
+  mbmi->txb_coeff_cost[0] = rd_stats->txb_coeff_cost[0];
+#endif
   memcpy(x->blk_skip[0], best_blk_skip, sizeof(best_blk_skip[0]) * n4);
 }
 
@@ -3537,10 +3541,7 @@
       break;
     }
 
-    rd_stats->rate += pn_rd_stats.rate;
-    rd_stats->dist += pn_rd_stats.dist;
-    rd_stats->sse += pn_rd_stats.sse;
-    rd_stats->skip &= pn_rd_stats.skip;
+    av1_merge_rd_stats(rd_stats, &pn_rd_stats);
 
     this_rd =
         AOMMIN(RDCOST(x->rdmult, x->rddiv, rd_stats->rate, rd_stats->dist),
@@ -7524,6 +7525,11 @@
 #if CONFIG_VAR_TX
       is_cost_valid_uv =
           inter_block_uvrd(cpi, x, &rd_stats_uv, bsize, ref_best_rd - rdcosty);
+#if CONFIG_RD_DEBUG
+      // record uv planes' transform block coefficient cost
+      mbmi->txb_coeff_cost[1] = rd_stats_uv.txb_coeff_cost[1];
+      mbmi->txb_coeff_cost[2] = rd_stats_uv.txb_coeff_cost[2];
+#endif
       *rate_uv = rd_stats_uv.rate;
       distortion_uv = rd_stats_uv.dist;
       skippable_uv = rd_stats_uv.skip;