From d59d39e1642569b68249c922ae01a59bfe52747b Mon Sep 17 00:00:00 2001 From: James Almer Date: Thu, 27 Dec 2012 19:30:40 -0300 Subject: [PATCH] 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 --- libavformat/wavdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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;