Fix bug 837 (Part 2): Handle increase in frame width
The case where frame width increases but the overall memory size required to hold the mi arrays does not was not handled. Change-Id: I72e70b912a7d1766687ad682979f1c9ee124449b
This commit is contained in:
Родитель
c6e9eb6935
Коммит
7b2177ce9c
|
@ -627,11 +627,12 @@ static void resize_context_buffers(VP9_COMMON *cm, int width, int height) {
|
||||||
"Width and height beyond allowed size.");
|
"Width and height beyond allowed size.");
|
||||||
#endif
|
#endif
|
||||||
if (cm->width != width || cm->height != height) {
|
if (cm->width != width || cm->height != height) {
|
||||||
const int new_rows = ALIGN_POWER_OF_TWO(height,
|
const int new_mi_rows =
|
||||||
MI_SIZE_LOG2) >> MI_SIZE_LOG2;
|
calc_mi_size(ALIGN_POWER_OF_TWO(height, MI_SIZE_LOG2) >> MI_SIZE_LOG2);
|
||||||
const int new_cols = ALIGN_POWER_OF_TWO(width,
|
const int new_mi_cols =
|
||||||
MI_SIZE_LOG2) >> MI_SIZE_LOG2;
|
calc_mi_size(ALIGN_POWER_OF_TWO(width, MI_SIZE_LOG2) >> MI_SIZE_LOG2);
|
||||||
if (calc_mi_size(new_rows) * calc_mi_size(new_cols) > cm->mi_alloc_size) {
|
if (new_mi_cols > cm->mi_stride ||
|
||||||
|
(new_mi_rows * new_mi_cols > cm->mi_alloc_size)) {
|
||||||
if (vp9_alloc_context_buffers(cm, width, height))
|
if (vp9_alloc_context_buffers(cm, width, height))
|
||||||
vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
|
vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
|
||||||
"Failed to allocate context buffers");
|
"Failed to allocate context buffers");
|
||||||
|
|
Загрузка…
Ссылка в новой задаче