summaryrefslogtreecommitdiff
path: root/libavformat/aiffdec.c
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <cehoyos@ag.or.at>2014-06-03 00:54:46 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-06-03 03:07:55 +0200
commit763e714442e07f6430b003c8a9f4b62deaa7b3a5 (patch)
tree420b332ea2e5e6366e05b1cf3b15c808715192dc /libavformat/aiffdec.c
parentc17973f19a338943dcffd93c1e6201d2fa22e3ca (diff)
downloadffmpeg-763e714442e07f6430b003c8a9f4b62deaa7b3a5.tar.gz
Do not limit blocksize when reading PCM from aiff.
Fixes ticket #3695.
Diffstat (limited to 'libavformat/aiffdec.c')
-rw-r--r--libavformat/aiffdec.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c
index 81bcc64a0c..7accec453f 100644
--- a/libavformat/aiffdec.c
+++ b/libavformat/aiffdec.c
@@ -344,10 +344,16 @@ static int aiff_read_packet(AVFormatContext *s,
return AVERROR_EOF;
/* Now for that packet */
- if (st->codec->block_align >= 17) // GSM, QCLP, IMA4
+ switch (st->codec->codec_id) {
+ case AV_CODEC_ID_ADPCM_IMA_QT:
+ case AV_CODEC_ID_GSM:
+ case AV_CODEC_ID_QDM2:
+ case AV_CODEC_ID_QCELP:
size = st->codec->block_align;
- else
+ break;
+ default:
size = (MAX_SIZE / st->codec->block_align) * st->codec->block_align;
+ }
size = FFMIN(max_size, size);
res = av_get_packet(s->pb, pkt, size);
if (res < 0)