Skip to content
Snippets Groups Projects

demux: mkv: make sure we send the first valid PCR before we send a valid block

Merged Steve Lhomme requested to merge robUx4/vlc:mkv-early-pcr into master
All threads resolved!
Files
3
+ 5
33
@@ -822,40 +822,12 @@ static int Demux( demux_t *p_demux)
}
}
/* update pcr */
if (UpdatePCR( p_demux ) != VLC_SUCCESS)
{
vlc_tick_t i_pcr = VLC_TICK_INVALID;
typedef matroska_segment_c::tracks_map_t tracks_map_t;
for( tracks_map_t::const_iterator it = p_segment->tracks.begin(); it != p_segment->tracks.end(); ++it )
{
mkv_track_t &track = *it->second;
if( track.i_last_dts == VLC_TICK_INVALID )
continue;
if( track.fmt.i_cat != VIDEO_ES && track.fmt.i_cat != AUDIO_ES )
continue;
if( track.i_last_dts < i_pcr || i_pcr == VLC_TICK_INVALID )
{
i_pcr = track.i_last_dts;
}
}
if( i_pcr != VLC_TICK_INVALID && i_pcr > p_sys->i_pcr )
{
if( es_out_SetPCR( p_demux->out, i_pcr ) )
{
msg_Err( p_demux, "ES_OUT_SET_PCR failed, aborting." );
delete block;
delete additions;
return VLC_DEMUXER_EGENERIC;
}
p_sys->i_pcr = i_pcr;
}
msg_Err( p_demux, "ES_OUT_SET_PCR failed, aborting." );
delete block;
delete additions;
return VLC_DEMUXER_EGENERIC;
}
/* set pts */
Loading