From 7b2177ce9ca1c82d992decd75ca6de878ecc785f Mon Sep 17 00:00:00 2001 From: Adrian Grange Date: Thu, 21 Aug 2014 08:15:23 -0700 Subject: [PATCH] Fix bug 837 (Part 2): Handle increase in frame width The case where frame width increases but the overall memory size required to hold the mi arrays does not was not handled. Change-Id: I72e70b912a7d1766687ad682979f1c9ee124449b --- vp9/decoder/vp9_decodeframe.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c index a0fff458c..572ab0efc 100644 --- a/vp9/decoder/vp9_decodeframe.c +++ b/vp9/decoder/vp9_decodeframe.c @@ -627,11 +627,12 @@ static void resize_context_buffers(VP9_COMMON *cm, int width, int height) { "Width and height beyond allowed size."); #endif if (cm->width != width || cm->height != height) { - const int new_rows = ALIGN_POWER_OF_TWO(height, - MI_SIZE_LOG2) >> MI_SIZE_LOG2; - const int new_cols = ALIGN_POWER_OF_TWO(width, - MI_SIZE_LOG2) >> MI_SIZE_LOG2; - if (calc_mi_size(new_rows) * calc_mi_size(new_cols) > cm->mi_alloc_size) { + const int new_mi_rows = + calc_mi_size(ALIGN_POWER_OF_TWO(height, MI_SIZE_LOG2) >> MI_SIZE_LOG2); + const int new_mi_cols = + calc_mi_size(ALIGN_POWER_OF_TWO(width, MI_SIZE_LOG2) >> MI_SIZE_LOG2); + if (new_mi_cols > cm->mi_stride || + (new_mi_rows * new_mi_cols > cm->mi_alloc_size)) { if (vp9_alloc_context_buffers(cm, width, height)) vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR, "Failed to allocate context buffers"); -- 2.40.0