[vlc-devel] [RFC #2] Fix #3178 : Last coded block lost in packetizer

Rafaël Carré rafael.carre at gmail.com
Tue Aug 2 05:17:35 CEST 2011

Changes since last patches:
DecoderThread() is notified with a special es_out function which is
called from input MainLoop, just after demuxer eof.
(the function should probably be prefixed with es_out_ like other 
non-static functions instead of EsOut, but that's cosmetics)

With this patch series I can run something like:

vlc in.mp3 --sout "#std{access=file,dst=out.mp3"
-> in.mp3 and out.mp3 will be identical.

provided in.mp3 has no id3* tags or whatever, so if out.mp3 is smaller
just run vlc out.mp3 --sout "#std{access=file,dst=in.mp3" (VLC doesn't
write tags in sout it seems).

The patches 2 and 3 only affect mp3 (my test case), all 
demuxers and packetizers remain to be checked and patched.

 modules/codec/mpeg_audio.c |   51 +++++++++++++++++++++++++-------------------
 modules/demux/mpeg/es.c    |   30 +++++++++++++++----------
 src/input/decoder.c        |   10 +++++++-
 src/input/decoder.h        |    1 +
 src/input/es_out.c         |   14 ++++++++++++
 src/input/input.c          |    1 +
 src/input/input_internal.h |    2 +
 7 files changed, 74 insertions(+), 35 deletions(-)

More information about the vlc-devel mailing list