ref: 423e8a9727b25d54de24630f9c042fd5bddf7c8d
parent: 374c8859199ca9edc07d8a0cf66ea8ff8aec015f
author: Adrian Grange <[email protected]>
date: Thu Jul 24 09:37:47 EDT 2014
Fix allocation of context buffers on frame resize The patch: https://gerrit.chromium.org/gerrit/#/c/70814/ changed the test that determined whether the context frame buffers needed to be reallocated or not. The code checked for a change in total frame area to signal the need to reallocate context buffers. However, the above_context buffer needs to be resized i:xf only the width of the frame has increased. Change-Id: Ib89d75651af252908144cf662578d84f16cf30e6
--- a/vp9/decoder/vp9_decodeframe.c
+++ b/vp9/decoder/vp9_decodeframe.c
@@ -627,9 +627,13 @@
"Width and height beyond allowed size.");
#endif
if (cm->width != width || cm->height != height) {
+ const int aligned_width = ALIGN_POWER_OF_TWO(width, MI_SIZE_LOG2);
+ const int aligned_height = ALIGN_POWER_OF_TWO(height, MI_SIZE_LOG2);
+
// Change in frame size (assumption: color format does not change).
if (cm->width == 0 || cm->height == 0 ||
- width * height > cm->width * cm->height) {
+ aligned_width > cm->width ||
+ aligned_width * aligned_height > cm->width * cm->height) {
if (vp9_alloc_context_buffers(cm, width, height))
vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
"Failed to allocate frame buffers");