Commit 423e8a97 authored by Adrian Grange's avatar Adrian Grange
Browse files

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
parent 374c8859
...@@ -627,9 +627,13 @@ static void resize_context_buffers(VP9_COMMON *cm, int width, int height) { ...@@ -627,9 +627,13 @@ static void resize_context_buffers(VP9_COMMON *cm, int width, int height) {
"Width and height beyond allowed size."); "Width and height beyond allowed size.");
#endif #endif
if (cm->width != width || cm->height != height) { 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). // Change in frame size (assumption: color format does not change).
if (cm->width == 0 || cm->height == 0 || 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)) if (vp9_alloc_context_buffers(cm, width, height))
vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR, vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
"Failed to allocate frame buffers"); "Failed to allocate frame buffers");
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment