From be3489eaf46dc1501f11a694033931228f4df546 Mon Sep 17 00:00:00 2001 From: Marco Date: Thu, 3 Sep 2015 12:55:51 -0700 Subject: [PATCH] Fix to dynamic resize mode under change_config(). If the encoder dynamic resize is triggered and change config() is then called, it will reset the current (resized) codec width/height back to the the config (unresized) width/height (which will then prevent the resizing action from occurring in encoder_loop). Avoid this by checking for a change in the config width/height before resetting the cm->width/height. Change-Id: Id9d50c0ee8a943abe4b6c72bbaa02d9696f93177 --- vp9/encoder/vp9_encoder.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index 40d0ce9..a9622cb 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -1453,6 +1453,8 @@ static void realloc_segmentation_maps(VP9_COMP *cpi) { void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) { VP9_COMMON *const cm = &cpi->common; RATE_CONTROL *const rc = &cpi->rc; + int last_w = cpi->oxcf.width; + int last_h = cpi->oxcf.height; if (cm->profile != oxcf->profile) cm->profile = oxcf->profile; @@ -1505,8 +1507,10 @@ void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) { cm->display_width = cpi->oxcf.width; cm->display_height = cpi->oxcf.height; - cm->width = cpi->oxcf.width; - cm->height = cpi->oxcf.height; + if (last_w != cpi->oxcf.width || last_h != cpi->oxcf.height) { + cm->width = cpi->oxcf.width; + cm->height = cpi->oxcf.height; + } if (cpi->initial_width) { if (cm->width > cpi->initial_width || cm->height > cpi->initial_height) { -- 2.7.4