vlc | branch: master | Francois Cartegnie <[email protected]> | Mon Feb 9 16:56:43 2015 +0100| [4a8c12f5d42014c084875fec334df81cdebe1919] | committer: Francois Cartegnie
demux: mkv: handle 0 trailed DTS samples (fix #12725) Sounds like a broken encoder (growing frame size from N-1 to N twice) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4a8c12f5d42014c084875fec334df81cdebe1919 --- modules/demux/Makefile.am | 1 + modules/demux/mkv/mkv.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/modules/demux/Makefile.am b/modules/demux/Makefile.am index b941159..77191a4 100644 --- a/modules/demux/Makefile.am +++ b/modules/demux/Makefile.am @@ -180,6 +180,7 @@ libmkv_plugin_la_SOURCES = \ demux/mp4/libmp4.c demux/vobsub.h \ demux/mkv/mkv.hpp demux/mkv/mkv.cpp \ demux/windows_audio_commons.h +libmkv_plugin_la_SOURCES += codec/dts_header.h codec/dts_header.c libmkv_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) libmkv_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(demuxdir)' libmkv_plugin_la_LIBADD = $(LIBS_mkv) diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp index 5868ca1..b99b898 100644 --- a/modules/demux/mkv/mkv.cpp +++ b/modules/demux/mkv/mkv.cpp @@ -33,6 +33,10 @@ #include "stream_io_callback.hpp" +extern "C" { +#include "../../modules/codec/dts_header.h" +} + #include <vlc_fs.h> #include <vlc_url.h> @@ -606,6 +610,20 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock VLC_TS_INVALID; continue; } + + case VLC_CODEC_DTS: + /* Check if packetization is correct and without padding. + * example: Test_mkv_div3_DTS_1920x1080_1785Kbps_23,97fps.mkv */ + if( p_block->i_buffer > 6 ) + { + unsigned int a, b, c, d; + bool e; + int i_frame_size = GetSyncInfo( p_block->p_buffer, &e, &a, &b, &c, &d ); + if( i_frame_size > 0 ) + p_block->i_buffer = __MIN(p_block->i_buffer, (size_t)i_frame_size); + } + break; + case VLC_CODEC_OPUS: mtime_t i_length = i_duration * tk-> f_timecodescale * (double) p_segment->i_timescale / 1000.0; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
