From: Laurent Aimar Date: Thu, 20 May 2010 20:52:46 +0000 (+0200) Subject: Fixed/improved support for video timestamp in mkv. X-Git-Tag: 1.2.0-pre1~6579 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=9adcbb2f05007beae7e8faf33b28ac921f5aa592;p=vlc Fixed/improved support for video timestamp in mkv. --- diff --git a/modules/demux/mkv/matroska_segment.cpp b/modules/demux/mkv/matroska_segment.cpp index 6153183cf6..208e798c20 100644 --- a/modules/demux/mkv/matroska_segment.cpp +++ b/modules/demux/mkv/matroska_segment.cpp @@ -831,6 +831,7 @@ bool matroska_segment_c::Select( mtime_t i_start_time ) tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data; tracks[i_track]->fmt.p_extra = xmalloc( tracks[i_track]->i_extra_data ); memcpy( tracks[i_track]->fmt.p_extra,tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data ); + tracks[i_track]->b_pts_only = true; } else if( !strncmp( tracks[i_track]->psz_codec, "V_REAL/RV", 9 ) ) { @@ -861,6 +862,7 @@ bool matroska_segment_c::Select( mtime_t i_start_time ) else if( !strncmp( tracks[i_track]->psz_codec, "V_VP8", 5 ) ) { tracks[i_track]->fmt.i_codec = VLC_CODEC_VP8; + tracks[i_track]->b_pts_only = true; } else if( !strncmp( tracks[i_track]->psz_codec, "V_MPEG4", 7 ) ) { diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp index 3378023df9..c90e50f380 100644 --- a/modules/demux/mkv/mkv.cpp +++ b/modules/demux/mkv/mkv.cpp @@ -589,6 +589,11 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock p_block->i_pts = VLC_TS_INVALID; p_block->i_dts = i_pts; } + else if( tk->b_pts_only ) + { + p_block->i_pts = i_pts; + p_block->i_dts = i_pts; + } else { p_block->i_pts = i_pts; @@ -596,7 +601,6 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock p_block->i_dts = p_block->i_pts; else p_block->i_dts = min( i_pts, tk->i_last_dts + (mtime_t)(tk->i_default_duration >> 10)); - p_sys->i_pts = p_block->i_dts; } } tk->i_last_dts = p_block->i_dts; diff --git a/modules/demux/mkv/mkv.hpp b/modules/demux/mkv/mkv.hpp index 76407db2c1..9928dc54cd 100644 --- a/modules/demux/mkv/mkv.hpp +++ b/modules/demux/mkv/mkv.hpp @@ -187,6 +187,7 @@ typedef struct char *psz_codec; bool b_dts_only; + bool b_pts_only; uint64_t i_default_duration; float f_timecodescale;