vlc | branch: master | Steve Lhomme <[email protected]> | Thu Jun 7 16:43:19 2018 +0200| [53f3ec43fa83bcc7552e8e4fafc6d077f55d0803] | committer: Steve Lhomme
demux:mkv: read the default duration directly in vlc_tick_t > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=53f3ec43fa83bcc7552e8e4fafc6d077f55d0803 --- modules/demux/mkv/matroska_segment_parse.cpp | 3 +-- modules/demux/mkv/mkv.cpp | 6 +++--- modules/demux/mkv/mkv.hpp | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp index 9bb46403eb..a2d2bf5c84 100644 --- a/modules/demux/mkv/matroska_segment_parse.cpp +++ b/modules/demux/mkv/matroska_segment_parse.cpp @@ -327,9 +327,8 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m ) } E_CASE( KaxTrackDefaultDuration, defd ) { - vars.tk->i_default_duration = static_cast<uint64>(defd); + vars.tk->i_default_duration = VLC_TICK_FROM_NS(static_cast<uint64>(defd)); debug( vars, "Track Default Duration=%" PRId64, vars.tk->i_default_duration ); - vars.tk->i_default_duration /= 1000; } E_CASE( KaxTrackTimecodeScale, ttcs ) { diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp index 6dffee95a2..78ba0bc41b 100644 --- a/modules/demux/mkv/mkv.cpp +++ b/modules/demux/mkv/mkv.cpp @@ -612,7 +612,7 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock handle_real_audio(p_demux, &track, p_block, i_pts); block_Release(p_block); i_pts = ( track.i_default_duration )? - i_pts + ( vlc_tick_t )track.i_default_duration: + i_pts + track.i_default_duration: VLC_TICK_INVALID; continue; } @@ -686,7 +686,7 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock else if ( track.i_last_dts == VLC_TICK_INVALID ) p_block->i_dts = i_pts; else - p_block->i_dts = std::min( i_pts, track.i_last_dts + ( vlc_tick_t )track.i_default_duration ); + p_block->i_dts = std::min( i_pts, track.i_last_dts + track.i_default_duration ); } } @@ -694,7 +694,7 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock /* use time stamp only for first block */ i_pts = ( track.i_default_duration )? - i_pts + ( vlc_tick_t )track.i_default_duration: + i_pts + track.i_default_duration: ( track.fmt.b_packetized ) ? VLC_TICK_INVALID : i_pts + 1; } } diff --git a/modules/demux/mkv/mkv.hpp b/modules/demux/mkv/mkv.hpp index 3e0ae211b9..d38df2bf82 100644 --- a/modules/demux/mkv/mkv.hpp +++ b/modules/demux/mkv/mkv.hpp @@ -199,7 +199,7 @@ class mkv_track_t bool b_pts_only; bool b_no_duration; - uint64_t i_default_duration; + vlc_tick_t i_default_duration; float f_timecodescale; vlc_tick_t i_last_dts; uint64_t i_skip_until_fpos; /*< any block before this fpos should be ignored */ _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
