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; }