Properly restore transform block skip flag in RD search

This commit fixes an encoding issue related to var-tx and ref-mv
experiments that causes the codec to use random values for transform
block skip flag.

Change-Id: I8daa6d6b88ea45b5bbeb81b43dd0eeff545c8e5a
diff --git a/vp10/encoder/block.h b/vp10/encoder/block.h
index 7921300..ce650b1 100644
--- a/vp10/encoder/block.h
+++ b/vp10/encoder/block.h
@@ -143,6 +143,9 @@
   uint8_t zcoeff_blk[TX_SIZES][256];
 #if CONFIG_VAR_TX
   uint8_t blk_skip[MAX_MB_PLANE][256];
+#if CONFIG_REF_MV
+  uint8_t blk_skip_drl[MAX_MB_PLANE][256];
+#endif
 #endif
 
   int skip;
diff --git a/vp10/encoder/encodeframe.c b/vp10/encoder/encodeframe.c
index d3ea94b..8c7af63 100644
--- a/vp10/encoder/encodeframe.c
+++ b/vp10/encoder/encodeframe.c
@@ -3987,6 +3987,9 @@
   vp10_zero(x->skip_txfm);
 #if CONFIG_VAR_TX
   vp10_zero(x->blk_skip);
+#if CONFIG_REF_MV
+  vp10_zero(x->blk_skip_drl);
+#endif
 #endif
 
   {
diff --git a/vp10/encoder/rdopt.c b/vp10/encoder/rdopt.c
index 96edc0f..193bc45 100644
--- a/vp10/encoder/rdopt.c
+++ b/vp10/encoder/rdopt.c
@@ -7208,6 +7208,11 @@
                 rate_y - rate_uv,
                 total_sse);
         }
+#if CONFIG_VAR_TX
+        for (i = 0; i < MAX_MB_PLANE; ++i)
+          memcpy(x->blk_skip_drl[i], x->blk_skip[i],
+                 sizeof(uint8_t) * ctx->num_4x4_blk);
+#endif
 
         for (ref_idx = 0; ref_idx < ref_set; ++ref_idx) {
           int64_t tmp_alt_rd = INT64_MAX;
@@ -7235,8 +7240,6 @@
 #else
             int_mv dummy_single_newmv[MAX_REF_FRAMES] = { { 0 } };
 #endif
-
-
             mbmi->ref_mv_idx = 1 + ref_idx;
 
             frame_mv[NEARMV][ref_frame] = cur_mv;
@@ -7299,12 +7302,22 @@
             this_rd = tmp_alt_rd;
             tmp_ref_rd = tmp_alt_rd;
             backup_mbmi = *mbmi;
+#if CONFIG_VAR_TX
+            for (i = 0; i < MAX_MB_PLANE; ++i)
+              memcpy(x->blk_skip_drl[i], x->blk_skip[i],
+                     sizeof(uint8_t) * ctx->num_4x4_blk);
+#endif
           } else {
             *mbmi = backup_mbmi;
           }
         }
 
         frame_mv[NEARMV][ref_frame] = backup_mv;
+#if CONFIG_VAR_TX
+        for (i = 0; i < MAX_MB_PLANE; ++i)
+          memcpy(x->blk_skip[i], x->blk_skip_drl[i],
+                 sizeof(uint8_t) * ctx->num_4x4_blk);
+#endif
       }
 #endif  // CONFIG_REF_MV