Add num_plane to av1_copy_tree_context()

To support monochrome video and fixes a nightly test segfault.

BUG=aomedia:1273

Change-Id: I87dd3d5ca79e8f0ce51ee31738205ae5a53af072
diff --git a/av1/encoder/context_tree.c b/av1/encoder/context_tree.c
index b06e0af..c6a9606 100644
--- a/av1/encoder/context_tree.c
+++ b/av1/encoder/context_tree.c
@@ -215,7 +215,7 @@
 
 #if CONFIG_EXT_PARTITION_TYPES
 void av1_copy_tree_context(PICK_MODE_CONTEXT *dst_ctx,
-                           PICK_MODE_CONTEXT *src_ctx) {
+                           PICK_MODE_CONTEXT *src_ctx, int num_planes) {
   dst_ctx->mic = src_ctx->mic;
   dst_ctx->mbmi_ext = src_ctx->mbmi_ext;
 
@@ -224,7 +224,7 @@
   dst_ctx->skippable = src_ctx->skippable;
   dst_ctx->best_mode_index = src_ctx->best_mode_index;
 
-  for (int i = 0; i < MAX_MB_PLANE; ++i) {
+  for (int i = 0; i < num_planes; ++i) {
     memcpy(dst_ctx->blk_skip[i], src_ctx->blk_skip[i],
            sizeof(uint8_t) * src_ctx->num_4x4_blk);
   }
diff --git a/av1/encoder/context_tree.h b/av1/encoder/context_tree.h
index 13eaae3..a14e1f2 100644
--- a/av1/encoder/context_tree.h
+++ b/av1/encoder/context_tree.h
@@ -87,7 +87,7 @@
 void av1_free_pc_tree(struct ThreadData *td, const int num_planes);
 #if CONFIG_EXT_PARTITION_TYPES
 void av1_copy_tree_context(PICK_MODE_CONTEXT *dst_ctx,
-                           PICK_MODE_CONTEXT *src_ctx);
+                           PICK_MODE_CONTEXT *src_ctx, int num_planes);
 #endif  // CONFIG_EXT_PARTITON_TYPES
 
 #ifdef __cplusplus
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 9ff734a..f633a78 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -3029,12 +3029,13 @@
     pc_tree->horizontala[1].rd_mode_is_ready = 0;
     pc_tree->horizontala[2].rd_mode_is_ready = 0;
     if (split_ctx_is_ready[0]) {
-      av1_copy_tree_context(&pc_tree->horizontala[0], &pc_tree->split[0]->none);
+      av1_copy_tree_context(&pc_tree->horizontala[0], &pc_tree->split[0]->none,
+                            num_planes);
       pc_tree->horizontala[0].mic.mbmi.partition = PARTITION_HORZ_A;
       pc_tree->horizontala[0].rd_mode_is_ready = 1;
       if (split_ctx_is_ready[1]) {
         av1_copy_tree_context(&pc_tree->horizontala[1],
-                              &pc_tree->split[1]->none);
+                              &pc_tree->split[1]->none, num_planes);
         pc_tree->horizontala[1].mic.mbmi.partition = PARTITION_HORZ_A;
         pc_tree->horizontala[1].rd_mode_is_ready = 1;
       }
@@ -3053,7 +3054,8 @@
     pc_tree->horizontalb[1].rd_mode_is_ready = 0;
     pc_tree->horizontalb[2].rd_mode_is_ready = 0;
     if (horz_ctx_is_ready) {
-      av1_copy_tree_context(&pc_tree->horizontalb[0], &pc_tree->horizontal[0]);
+      av1_copy_tree_context(&pc_tree->horizontalb[0], &pc_tree->horizontal[0],
+                            num_planes);
       pc_tree->horizontalb[0].mic.mbmi.partition = PARTITION_HORZ_B;
       pc_tree->horizontalb[0].rd_mode_is_ready = 1;
     }
@@ -3081,7 +3083,8 @@
     pc_tree->verticala[1].rd_mode_is_ready = 0;
     pc_tree->verticala[2].rd_mode_is_ready = 0;
     if (split_ctx_is_ready[0]) {
-      av1_copy_tree_context(&pc_tree->verticala[0], &pc_tree->split[0]->none);
+      av1_copy_tree_context(&pc_tree->verticala[0], &pc_tree->split[0]->none,
+                            num_planes);
       pc_tree->verticala[0].mic.mbmi.partition = PARTITION_VERT_A;
       pc_tree->verticala[0].rd_mode_is_ready = 1;
     }
@@ -3099,7 +3102,8 @@
     pc_tree->verticalb[1].rd_mode_is_ready = 0;
     pc_tree->verticalb[2].rd_mode_is_ready = 0;
     if (vert_ctx_is_ready) {
-      av1_copy_tree_context(&pc_tree->verticalb[0], &pc_tree->vertical[0]);
+      av1_copy_tree_context(&pc_tree->verticalb[0], &pc_tree->vertical[0],
+                            num_planes);
       pc_tree->verticalb[0].mic.mbmi.partition = PARTITION_VERT_B;
       pc_tree->verticalb[0].rd_mode_is_ready = 1;
     }