mirror of https://git.ffmpeg.org/ffmpeg.git
g2meet: reset dimensions on header parsing errors
This commit is contained in:
parent
84d3ff50cd
commit
767ae86cee
|
@ -646,8 +646,8 @@ static int g2m_decode_frame(AVCodecContext *avctx, void *data,
|
||||||
av_log(avctx, AV_LOG_ERROR,
|
av_log(avctx, AV_LOG_ERROR,
|
||||||
"Invalid frame dimensions %dx%d\n",
|
"Invalid frame dimensions %dx%d\n",
|
||||||
c->width, c->height);
|
c->width, c->height);
|
||||||
c->width = c->height = 0;
|
ret = AVERROR_INVALIDDATA;
|
||||||
bytestream2_skip(&bc, bytestream2_get_bytes_left(&bc));
|
goto header_fail;
|
||||||
}
|
}
|
||||||
if (c->width != avctx->width || c->height != avctx->height)
|
if (c->width != avctx->width || c->height != avctx->height)
|
||||||
avcodec_set_dimensions(avctx, c->width, c->height);
|
avcodec_set_dimensions(avctx, c->width, c->height);
|
||||||
|
@ -664,15 +664,18 @@ static int g2m_decode_frame(AVCodecContext *avctx, void *data,
|
||||||
av_log(avctx, AV_LOG_ERROR,
|
av_log(avctx, AV_LOG_ERROR,
|
||||||
"Invalid tile dimensions %dx%d\n",
|
"Invalid tile dimensions %dx%d\n",
|
||||||
c->tile_width, c->tile_height);
|
c->tile_width, c->tile_height);
|
||||||
return AVERROR_INVALIDDATA;
|
ret = AVERROR_INVALIDDATA;
|
||||||
|
goto header_fail;
|
||||||
}
|
}
|
||||||
c->tiles_x = (c->width + c->tile_width - 1) / c->tile_width;
|
c->tiles_x = (c->width + c->tile_width - 1) / c->tile_width;
|
||||||
c->tiles_y = (c->height + c->tile_height - 1) / c->tile_height;
|
c->tiles_y = (c->height + c->tile_height - 1) / c->tile_height;
|
||||||
c->bpp = bytestream2_get_byte(&bc);
|
c->bpp = bytestream2_get_byte(&bc);
|
||||||
chunk_size -= 21;
|
chunk_size -= 21;
|
||||||
bytestream2_skip(&bc, chunk_size);
|
bytestream2_skip(&bc, chunk_size);
|
||||||
if (g2m_init_buffers(c))
|
if (g2m_init_buffers(c)) {
|
||||||
return AVERROR(ENOMEM);
|
ret = AVERROR(ENOMEM);
|
||||||
|
goto header_fail;
|
||||||
|
}
|
||||||
got_header = 1;
|
got_header = 1;
|
||||||
break;
|
break;
|
||||||
case TILE_DATA:
|
case TILE_DATA:
|
||||||
|
@ -778,6 +781,10 @@ static int g2m_decode_frame(AVCodecContext *avctx, void *data,
|
||||||
}
|
}
|
||||||
|
|
||||||
return buf_size;
|
return buf_size;
|
||||||
|
header_fail:
|
||||||
|
c->width = c->height = 0;
|
||||||
|
c->tiles_x = c->tiles_y = 0;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static av_cold int g2m_decode_init(AVCodecContext *avctx)
|
static av_cold int g2m_decode_init(AVCodecContext *avctx)
|
||||||
|
|
Loading…
Reference in New Issue