diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-09-14 10:59:37 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-09-14 10:59:37 +0200 |
commit | 3f4fb49d1b14a849cbf5ebcd00bb0dba665b72a8 (patch) | |
tree | ce88e10c7adbdb3327e1a5bddce4155f19ffab50 | |
parent | d06dda65b499458761d23d9580fdcaa451ba96f5 (diff) | |
parent | 26589aa81028f42c763c5581a1486a271799890b (diff) | |
download | ffmpeg-3f4fb49d1b14a849cbf5ebcd00bb0dba665b72a8.tar.gz |
Merge commit '26589aa81028f42c763c5581a1486a271799890b' into release/0.10
* commit '26589aa81028f42c763c5581a1486a271799890b':
westwood_vqa: do not free extradata on error in read_header
vqavideo: check the version
rmdec: Use the AVIOContext given as parameter in rm_read_metadata()
avio: Handle AVERROR_EOF in the same way as the return value 0
Conflicts:
libavcodec/vqavideo.c
libavformat/westwood_vqa.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/vqavideo.c | 13 | ||||
-rw-r--r-- | libavformat/avio.c | 2 | ||||
-rw-r--r-- | libavformat/westwood_vqa.c | 1 |
3 files changed, 11 insertions, 5 deletions
diff --git a/libavcodec/vqavideo.c b/libavcodec/vqavideo.c index 3ffac08170..682079dd9a 100644 --- a/libavcodec/vqavideo.c +++ b/libavcodec/vqavideo.c @@ -134,9 +134,16 @@ static av_cold int vqa_decode_init(AVCodecContext *avctx) /* load up the VQA parameters from the header */ s->vqa_version = s->avctx->extradata[0]; - if (s->vqa_version < 1 || s->vqa_version > 3) { - av_log(s->avctx, AV_LOG_ERROR, " VQA video: unsupported version %d\n", s->vqa_version); - return -1; + switch (s->vqa_version) { + case 1: + case 2: + break; + case 3: + av_log_missing_feature(avctx, "VQA Version 3", 0); + return AVERROR_PATCHWELCOME; + default: + av_log_missing_feature(avctx, "VQA Version", 1); + return AVERROR_PATCHWELCOME; } s->width = AV_RL16(&s->avctx->extradata[6]); s->height = AV_RL16(&s->avctx->extradata[8]); diff --git a/libavformat/avio.c b/libavformat/avio.c index 480dc98205..d9d417c5a9 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -359,7 +359,7 @@ static inline int retry_transfer_wrapper(URLContext *h, unsigned char *buf, int else usleep(1000); } else if (ret < 1) - return ret < 0 ? ret : len; + return (ret < 0 && ret != AVERROR_EOF) ? ret : len; if (ret) fast_retries = FFMAX(fast_retries, 2); len += ret; diff --git a/libavformat/westwood_vqa.c b/libavformat/westwood_vqa.c index 41dad8e8ab..d78eec3005 100644 --- a/libavformat/westwood_vqa.c +++ b/libavformat/westwood_vqa.c @@ -104,7 +104,6 @@ static int wsvqa_read_header(AVFormatContext *s, header = (unsigned char *)st->codec->extradata; if (avio_read(pb, st->codec->extradata, VQA_HEADER_SIZE) != VQA_HEADER_SIZE) { - av_free(st->codec->extradata); return AVERROR(EIO); } st->codec->width = AV_RL16(&header[6]); |