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
This commit is contained in:
Родитель
e5732bcf05
Коммит
be3489eaf4
|
@ -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) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче