Bug fixes for 2-pass tx-search

Copy blk_skip, use curr_rd

Change-Id: Ie3d37df3b18da1ea4d44a432ab554163e544616a
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 72c4371..048df6a 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -529,6 +529,7 @@
   int64_t est_rd_arr[MAX_INTER_MODES];
   RdIdxPair rd_idx_pair_arr[MAX_INTER_MODES];
   bool true_rd_arr[MAX_INTER_MODES];
+  uint8_t blk_skip_arr[MAX_INTER_MODES][MAX_MIB_SIZE * MAX_MIB_SIZE];
   RD_STATS rd_cost_arr[MAX_INTER_MODES];
   RD_STATS rd_cost_y_arr[MAX_INTER_MODES];
   RD_STATS rd_cost_uv_arr[MAX_INTER_MODES];
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 10a92c9..cf503cf 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -860,8 +860,9 @@
 
 static void inter_modes_info_push(InterModesInfo *inter_modes_info,
                                   int mode_rate, int64_t sse, int64_t rd,
-                                  bool true_rd, RD_STATS *rd_cost,
-                                  RD_STATS *rd_cost_y, RD_STATS *rd_cost_uv,
+                                  bool true_rd, uint8_t *blk_skip,
+                                  RD_STATS *rd_cost, RD_STATS *rd_cost_y,
+                                  RD_STATS *rd_cost_uv,
                                   const MB_MODE_INFO *mbmi) {
   const int num = inter_modes_info->num;
   assert(num < MAX_INTER_MODES);
@@ -870,6 +871,10 @@
   inter_modes_info->sse_arr[num] = sse;
   inter_modes_info->est_rd_arr[num] = rd;
   inter_modes_info->true_rd_arr[num] = true_rd;
+  if (blk_skip != NULL) {
+    memcpy(inter_modes_info->blk_skip_arr[num], blk_skip,
+           sizeof(blk_skip[0]) * MAX_MIB_SIZE * MAX_MIB_SIZE);
+  }
   inter_modes_info->rd_cost_arr[num] = *rd_cost;
   inter_modes_info->rd_cost_y_arr[num] = *rd_cost_y;
   inter_modes_info->rd_cost_uv_arr[num] = *rd_cost_uv;
@@ -9579,14 +9584,14 @@
         if (!is_comp_pred) {
           assert(curr_sse >= 0);
           inter_modes_info_push(inter_modes_info, mode_rate, curr_sse,
-                                rd_stats->rdcost, false, rd_stats, rd_stats_y,
-                                rd_stats_uv, mbmi);
+                                rd_stats->rdcost, false, NULL, rd_stats,
+                                rd_stats_y, rd_stats_uv, mbmi);
         }
       } else {
         assert(curr_sse >= 0);
         inter_modes_info_push(inter_modes_info, mode_rate, curr_sse,
-                              rd_stats->rdcost, false, rd_stats, rd_stats_y,
-                              rd_stats_uv, mbmi);
+                              rd_stats->rdcost, false, NULL, rd_stats,
+                              rd_stats_y, rd_stats_uv, mbmi);
       }
     } else {
       if (!txfm_search(cpi, tile_data, x, bsize, mi_row, mi_col, rd_stats,
@@ -9616,7 +9621,7 @@
       // structure, since some modes will be conditionally TX searched.
       if (do_tx_search == 2) {
         inter_modes_info_push(inter_modes_info, rd_stats->rate, rd_stats->sse,
-                              rd_stats->rdcost, true, rd_stats, rd_stats_y,
+                              curr_rd, true, x->blk_skip, rd_stats, rd_stats_y,
                               rd_stats_uv, mbmi);
       }
     }
@@ -12974,6 +12979,8 @@
         rd_stats = inter_modes_info->rd_cost_arr[data_idx];
         rd_stats_y = inter_modes_info->rd_cost_y_arr[data_idx];
         rd_stats_uv = inter_modes_info->rd_cost_uv_arr[data_idx];
+        memcpy(x->blk_skip, inter_modes_info->blk_skip_arr[data_idx],
+               sizeof(x->blk_skip[0]) * ctx->num_4x4_blk);
       } else {
         const int mode_rate = inter_modes_info->mode_rate_arr[data_idx];