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>
This commit is contained in:
parent
981baf742c
commit
d59d39e164
@ -365,7 +365,7 @@ break_loop:
|
|||||||
|
|
||||||
avio_seek(pb, data_ofs, SEEK_SET);
|
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));
|
sample_count = (data_size<<3) / (st->codec->channels * (uint64_t)av_get_bits_per_sample(st->codec->codec_id));
|
||||||
if (sample_count)
|
if (sample_count)
|
||||||
st->duration = sample_count;
|
st->duration = sample_count;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user