vp8_change_config: don't force kf with spatial resampling
Look for changes in the codec's configured w/h instead of its active w/h when forcing keyframes. Otherwise calls to vp8_change_config() will force a keyframe when spatial resampling is active. Change-Id: Ie0d20e70507004e714ad40b640aa5b434251eb32
This commit is contained in:
Родитель
c311b3b3a9
Коммит
8e858f90f3
|
@ -1418,6 +1418,9 @@ void vp8_change_config(VP8_COMP *cpi, VP8_CONFIG *oxcf)
|
||||||
vp8_setup_version(cm);
|
vp8_setup_version(cm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
last_w = cpi->oxcf.Width;
|
||||||
|
last_h = cpi->oxcf.Height;
|
||||||
|
|
||||||
cpi->oxcf = *oxcf;
|
cpi->oxcf = *oxcf;
|
||||||
|
|
||||||
switch (cpi->oxcf.Mode)
|
switch (cpi->oxcf.Mode)
|
||||||
|
@ -1617,14 +1620,14 @@ void vp8_change_config(VP8_COMP *cpi, VP8_CONFIG *oxcf)
|
||||||
cpi->target_bandwidth = cpi->oxcf.target_bandwidth;
|
cpi->target_bandwidth = cpi->oxcf.target_bandwidth;
|
||||||
|
|
||||||
|
|
||||||
last_w = cm->Width;
|
|
||||||
last_h = cm->Height;
|
|
||||||
|
|
||||||
cm->Width = cpi->oxcf.Width;
|
cm->Width = cpi->oxcf.Width;
|
||||||
cm->Height = cpi->oxcf.Height;
|
cm->Height = cpi->oxcf.Height;
|
||||||
|
|
||||||
cm->horiz_scale = cpi->horiz_scale;
|
/* TODO(jkoleszar): if an internal spatial resampling is active,
|
||||||
cm->vert_scale = cpi->vert_scale;
|
* and we downsize the input image, maybe we should clear the
|
||||||
|
* internal scale immediately rather than waiting for it to
|
||||||
|
* correct.
|
||||||
|
*/
|
||||||
|
|
||||||
// VP8 sharpness level mapping 0-7 (vs 0-10 in general VPx dialogs)
|
// VP8 sharpness level mapping 0-7 (vs 0-10 in general VPx dialogs)
|
||||||
if (cpi->oxcf.Sharpness > 7)
|
if (cpi->oxcf.Sharpness > 7)
|
||||||
|
@ -1645,7 +1648,7 @@ void vp8_change_config(VP8_COMP *cpi, VP8_CONFIG *oxcf)
|
||||||
cm->Height = (vs - 1 + cpi->oxcf.Height * vr) / vs;
|
cm->Height = (vs - 1 + cpi->oxcf.Height * vr) / vs;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (last_w != cm->Width || last_h != cm->Height)
|
if (last_w != cpi->oxcf.Width || last_h != cpi->oxcf.Height)
|
||||||
cpi->force_next_frame_intra = 1;
|
cpi->force_next_frame_intra = 1;
|
||||||
|
|
||||||
if (((cm->Width + 15) & 0xfffffff0) !=
|
if (((cm->Width + 15) & 0xfffffff0) !=
|
||||||
|
|
|
@ -485,8 +485,6 @@ typedef struct VP8_COMP
|
||||||
int goldfreq;
|
int goldfreq;
|
||||||
int auto_worst_q;
|
int auto_worst_q;
|
||||||
int cpu_used;
|
int cpu_used;
|
||||||
int horiz_scale;
|
|
||||||
int vert_scale;
|
|
||||||
int pass;
|
int pass;
|
||||||
|
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче