Properly restore the blk_skip array in inter frame

Restore the selected blk_skip array in the intra prediction mode
search in inter frame coding.

Change-Id: I55bfcec0336b98edc07c1451f89f3f45b9d91463
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 9e301b5..1584202 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -9428,6 +9428,9 @@
       skippable = rd_stats_y.skip;
 
 #if CONFIG_FILTER_INTRA
+      uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE * 8];
+      memcpy(best_blk_skip, x->blk_skip[0], sizeof(uint8_t) * ctx->num_4x4_blk);
+
       if (mbmi->mode == DC_PRED && !xd->lossless[mbmi->segment_id]) {
         RD_STATS rd_stats_y_fi;
         int filter_intra_selected_flag = 0;
@@ -9472,6 +9475,8 @@
                    sizeof(*best_txk_type) *
                        (MAX_SB_SQUARE / (TX_SIZE_W_MIN * TX_SIZE_H_MIN)));
 #endif
+            memcpy(best_blk_skip, x->blk_skip[0],
+                   sizeof(uint8_t) * ctx->num_4x4_blk);
             best_fi_mode = fi_mode;
             rd_stats_y = rd_stats_y_fi;
             rate_y = rd_stats_y_fi.rate;
@@ -9489,6 +9494,9 @@
                sizeof(*best_txk_type) *
                    (MAX_SB_SQUARE / (TX_SIZE_W_MIN * TX_SIZE_H_MIN)));
 #endif
+        memcpy(x->blk_skip[0], best_blk_skip,
+               sizeof(uint8_t) * ctx->num_4x4_blk);
+
         if (filter_intra_selected_flag) {
           mbmi->filter_intra_mode_info.use_filter_intra = 1;
           mbmi->filter_intra_mode_info.filter_intra_mode = best_fi_mode;
@@ -10266,6 +10274,9 @@
       best_mbmode = *mbmi;
       best_skip2 = 0;
       best_mode_skippable = skippable;
+      for (i = 0; i < MAX_MB_PLANE; ++i)
+        memcpy(ctx->blk_skip[i], x->blk_skip[i],
+               sizeof(uint8_t) * ctx->num_4x4_blk);
     }
   }
 PALETTE_EXIT: