summaryrefslogtreecommitdiff
path: root/libavformat/wavdec.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2012-12-27 19:30:40 -0300
committerPaul B Mahol <onemda@gmail.com>2012-12-29 17:46:01 +0000
commitd59d39e1642569b68249c922ae01a59bfe52747b (patch)
tree8b5f3516a94d0249fbae2b0c7978ded4ec950e9e /libavformat/wavdec.c
parent981baf742ce632a4df311a12a495ffe499ee4df6 (diff)
downloadffmpeg-d59d39e1642569b68249c922ae01a59bfe52747b.tar.gz
wavdec: fix duration calculation for files with invalid data size
Some wav files report a data size that is bigger than the actual file size. Fall back to estimation from bitrate in such cases. Fixes ticket #2065. Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat/wavdec.c')
-rw-r--r--libavformat/wavdec.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c
index 62bf263084..9d09865f4b 100644
--- a/libavformat/wavdec.c
+++ b/libavformat/wavdec.c
@@ -365,7 +365,7 @@ break_loop:
avio_seek(pb, data_ofs, SEEK_SET);
- if (!sample_count && st->codec->channels && av_get_bits_per_sample(st->codec->codec_id))
+ if (!sample_count && st->codec->channels && av_get_bits_per_sample(st->codec->codec_id) && wav->data_end <= avio_size(pb))
sample_count = (data_size<<3) / (st->codec->channels * (uint64_t)av_get_bits_per_sample(st->codec->codec_id));
if (sample_count)
st->duration = sample_count;