]> granicus.if.org Git - libvpx/commitdiff
vp10: make render_width/height referenceable through ref frames.
authorRonald S. Bultje <rsbultje@gmail.com>
Thu, 1 Oct 2015 01:57:26 +0000 (21:57 -0400)
committerRonald S. Bultje <rsbultje@gmail.com>
Fri, 2 Oct 2015 17:39:38 +0000 (13:39 -0400)
See issue 1079.

Change-Id: I754a61ec011c3508bbb26826cf8e11dbdfdd8379

vp10/decoder/decodeframe.c
vp10/encoder/bitstream.c

index 91096a2f642c6967c4901c01a40ccb7a210985a8..2b0ef64301c153cac085f40d9cc70957125ba67b 100644 (file)
@@ -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(
index 348c7cb83e2b960069a17ba46e2720a4075fd3a5..9072e160ca1089be5b48c15b04f057e1991cbb05 100644 (file)
@@ -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) {