From 68f00fb40bb3cfc354f6295e8a96b07600aa72a9 Mon Sep 17 00:00:00 2001 From: Rodger Combs Date: Tue, 23 Jun 2015 12:35:35 -0500 Subject: lavf/brstm: if the file lies about the last block's size, correct it Signed-off-by: Michael Niedermayer --- libavformat/brstm.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libavformat/brstm.c b/libavformat/brstm.c index f5a4a82d4c..291a4628bc 100644 --- a/libavformat/brstm.c +++ b/libavformat/brstm.c @@ -369,6 +369,15 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt) size = b->last_block_used_bytes; samples = b->last_block_samples; skip = b->last_block_size - b->last_block_used_bytes; + + if (samples < size * 14 / 8) { + uint32_t adjusted_size = samples / 14 * 8; + if (samples % 14) + adjusted_size += (samples % 14 + 1) / 2 + 1; + + skip += size - adjusted_size; + size = adjusted_size; + } } else if (b->current_block < b->block_count) { size = b->block_size; samples = b->samples_per_block; -- cgit v1.2.3