diff --git a/vp10/decoder/decodeframe.c b/vp10/decoder/decodeframe.c index 91096a2f642c6967c4901c01a40ccb7a210985a8..2b0ef64301c153cac085f40d9cc70957125ba67b 100644 --- a/vp10/decoder/decodeframe.c +++ b/vp10/decoder/decodeframe.c @@ -1276,13 +1276,21 @@ static void setup_frame_size_with_refs(VP10_COMMON *cm, YV12_BUFFER_CONFIG *const buf = cm->frame_refs[i].buf; width = buf->y_crop_width; height = buf->y_crop_height; +#if CONFIG_MISC_FIXES + cm->render_width = buf->render_width; + cm->render_height = buf->render_height; +#endif found = 1; break; } } - if (!found) + if (!found) { vp10_read_frame_size(rb, &width, &height); +#if CONFIG_MISC_FIXES + setup_render_size(cm, rb); +#endif + } if (width <= 0 || height <= 0) vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME, @@ -1313,7 +1321,9 @@ static void setup_frame_size_with_refs(VP10_COMMON *cm, } resize_context_buffers(cm, width, height); +#if !CONFIG_MISC_FIXES setup_render_size(cm, rb); +#endif lock_buffer_pool(pool); if (vpx_realloc_frame_buffer( diff --git a/vp10/encoder/bitstream.c b/vp10/encoder/bitstream.c index 348c7cb83e2b960069a17ba46e2720a4075fd3a5..9072e160ca1089be5b48c15b04f057e1991cbb05 100644 --- a/vp10/encoder/bitstream.c +++ b/vp10/encoder/bitstream.c @@ -1013,6 +1013,10 @@ static void write_frame_size_with_refs(VP10_COMP *cpi, if (cfg != NULL) { found = cm->width == cfg->y_crop_width && cm->height == cfg->y_crop_height; +#if CONFIG_MISC_FIXES + found &= cm->render_width == cfg->render_width && + cm->render_height == cfg->render_height; +#endif } vpx_wb_write_bit(wb, found); if (found) { @@ -1023,9 +1027,15 @@ static void write_frame_size_with_refs(VP10_COMP *cpi, if (!found) { vpx_wb_write_literal(wb, cm->width - 1, 16); vpx_wb_write_literal(wb, cm->height - 1, 16); + +#if CONFIG_MISC_FIXES + write_render_size(cm, wb); +#endif } +#if !CONFIG_MISC_FIXES write_render_size(cm, wb); +#endif } static void write_sync_code(struct vpx_write_bit_buffer *wb) {