[vlc-devel] [PATCH] mkv: among forced tracks, select the default
Romain Vimont
rom1v at videolabs.io
Thu May 3 16:13:27 CEST 2018
When several tracks of the same kind were flagged "forced", it selected
the last one. Instead, select the default one if any.
Fixes #18883
---
modules/demux/mkv/matroska_segment.cpp | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/modules/demux/mkv/matroska_segment.cpp b/modules/demux/mkv/matroska_segment.cpp
index 2fb30e1b1e..e029eb03b9 100644
--- a/modules/demux/mkv/matroska_segment.cpp
+++ b/modules/demux/mkv/matroska_segment.cpp
@@ -1090,6 +1090,7 @@ bool matroska_segment_c::ESCreate()
/* add all es */
msg_Dbg( &sys.demuxer, "found %d es", static_cast<int>( tracks.size() ) );
+ mkv_track_t *default_tracks[ES_CATEGORY_COUNT] = {};
for( tracks_map_t::iterator it = tracks.begin(); it != tracks.end(); ++it )
{
tracks_map_t::key_type track_id = it->first;
@@ -1112,8 +1113,17 @@ bool matroska_segment_c::ESCreate()
*/
if( track.b_default || track.b_forced )
{
- es_out_Control( sys.demuxer.out, ES_OUT_SET_ES_DEFAULT, track.p_es );
+ mkv_track_t *&default_track = default_tracks[track.fmt.i_cat];
+ if( !default_track || track.b_default )
+ default_track = &track;
}
+
+ }
+
+ for( mkv_track_t *track : default_tracks )
+ {
+ if( track )
+ es_out_Control( sys.demuxer.out, ES_OUT_SET_ES_DEFAULT, track->p_es );
}
return true;
--
2.17.0
More information about the vlc-devel
mailing list