On 10/27/2013 06:10 AM, Anton Khirnov wrote:
--- libavcodec/vp3.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index 467dfd56..d596816 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -2166,6 +2166,7 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb) Vp3DecodeContext *s = avctx->priv_data; int visible_width, visible_height, colorspace; int offset_x = 0, offset_y = 0; + int ret; AVRational fps, aspect;s->theora = get_bits_long(gb, 24);@@ -2182,12 +2183,6 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb) visible_width = s->width = get_bits(gb, 16) << 4; visible_height = s->height = get_bits(gb, 16) << 4;- if(av_image_check_size(s->width, s->height, 0, avctx)){- av_log(avctx, AV_LOG_ERROR, "Invalid dimensions (%dx%d)\n", s->width, s->height); - s->width= s->height= 0; - return -1; - } - if (s->theora >= 0x030200) { visible_width = get_bits_long(gb, 24); visible_height = get_bits_long(gb, 24); @@ -2234,9 +2229,11 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb) if ( visible_width <= s->width && visible_width > s->width-16 && visible_height <= s->height && visible_height > s->height-16 && !offset_x && (offset_y == s->height - visible_height)) - avcodec_set_dimensions(avctx, visible_width, visible_height); + ret = ff_set_dimensions(avctx, visible_width, visible_height); else - avcodec_set_dimensions(avctx, s->width, s->height); + ret = ff_set_dimensions(avctx, s->width, s->height); + if (ret < 0) + return ret;if (colorspace == 1) {avctx->color_primaries = AVCOL_PRI_BT470M;
Ok -Justin _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
