From: Ronald S. Bultje Date: Thu, 1 Oct 2015 01:57:26 +0000 (-0400) Subject: vp10: make render_width/height referenceable through ref frames. X-Git-Tag: v1.5.0~85 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ce3780251cd9cab3b9495fb78b7f8d2773f45acf;p=libvpx vp10: make render_width/height referenceable through ref frames. See issue 1079. Change-Id: I754a61ec011c3508bbb26826cf8e11dbdfdd8379 --- diff --git a/vp10/decoder/decodeframe.c b/vp10/decoder/decodeframe.c index 91096a2f6..2b0ef6430 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 348c7cb83..9072e160c 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) {