avformat/mp3dec: avoid early EOF with concatenated gapless mp3s
authorwm4 <nfxjfg@googlemail.com>
Sun, 21 Sep 2014 10:51:41 +0000 (12:51 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 21 Sep 2014 12:57:12 +0000 (14:57 +0200)
commit6c7f1155bb648eced8e5aa08b1fd490df2f8b325
tree607abb626c790b71c3a55e0597fe501b21499240
parent36bf549b2706bd10014556a84a33ed6daf5d5373
avformat/mp3dec: avoid early EOF with concatenated gapless mp3s

Consider a file created with something like:

    cat file1.mp3 file2.mp3 > result.mp3

Then if file2.mp3 has gapless information, result.mp3 would stop playing
something in the middle. This happens because the gapless info directs
the decoder to discard all samples after a certain position. To make
matters worse, the gapless info of file2.mp3 will be used when playing
the file1.mp3 part, because the gapless info is located at the end of
the file.

While handling concatenated gapless files correctly would be insane and
a lot of effort (especially without scanning the whole file on opening),
it's easy to prevent at least early EOF. Playback will happen to work,
even if it's slightly broken.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/avformat.h
libavformat/mp3dec.c
libavformat/utils.c