vp10: make render_width/height referenceable through ref frames.
See issue 1079. Change-Id: I754a61ec011c3508bbb26826cf8e11dbdfdd8379
This commit is contained in:
@@ -1276,13 +1276,21 @@ static void setup_frame_size_with_refs(VP10_COMMON *cm,
|
|||||||
YV12_BUFFER_CONFIG *const buf = cm->frame_refs[i].buf;
|
YV12_BUFFER_CONFIG *const buf = cm->frame_refs[i].buf;
|
||||||
width = buf->y_crop_width;
|
width = buf->y_crop_width;
|
||||||
height = buf->y_crop_height;
|
height = buf->y_crop_height;
|
||||||
|
#if CONFIG_MISC_FIXES
|
||||||
|
cm->render_width = buf->render_width;
|
||||||
|
cm->render_height = buf->render_height;
|
||||||
|
#endif
|
||||||
found = 1;
|
found = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!found)
|
if (!found) {
|
||||||
vp10_read_frame_size(rb, &width, &height);
|
vp10_read_frame_size(rb, &width, &height);
|
||||||
|
#if CONFIG_MISC_FIXES
|
||||||
|
setup_render_size(cm, rb);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
if (width <= 0 || height <= 0)
|
if (width <= 0 || height <= 0)
|
||||||
vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
|
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);
|
resize_context_buffers(cm, width, height);
|
||||||
|
#if !CONFIG_MISC_FIXES
|
||||||
setup_render_size(cm, rb);
|
setup_render_size(cm, rb);
|
||||||
|
#endif
|
||||||
|
|
||||||
lock_buffer_pool(pool);
|
lock_buffer_pool(pool);
|
||||||
if (vpx_realloc_frame_buffer(
|
if (vpx_realloc_frame_buffer(
|
||||||
|
@@ -1013,6 +1013,10 @@ static void write_frame_size_with_refs(VP10_COMP *cpi,
|
|||||||
if (cfg != NULL) {
|
if (cfg != NULL) {
|
||||||
found = cm->width == cfg->y_crop_width &&
|
found = cm->width == cfg->y_crop_width &&
|
||||||
cm->height == cfg->y_crop_height;
|
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);
|
vpx_wb_write_bit(wb, found);
|
||||||
if (found) {
|
if (found) {
|
||||||
@@ -1023,9 +1027,15 @@ static void write_frame_size_with_refs(VP10_COMP *cpi,
|
|||||||
if (!found) {
|
if (!found) {
|
||||||
vpx_wb_write_literal(wb, cm->width - 1, 16);
|
vpx_wb_write_literal(wb, cm->width - 1, 16);
|
||||||
vpx_wb_write_literal(wb, cm->height - 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);
|
write_render_size(cm, wb);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void write_sync_code(struct vpx_write_bit_buffer *wb) {
|
static void write_sync_code(struct vpx_write_bit_buffer *wb) {
|
||||||
|
Reference in New Issue
Block a user