[vlc-commits] mkv: among forced tracks, select the default

Romain Vimont git at videolan.org
Sat May 5 14:19:26 CEST 2018


vlc | branch: master | Romain Vimont <rom1v at videolabs.io> | Thu May  3 16:13:27 2018 +0200| [3a0eeebc59ee682fdb71fdeceeb9b19e34aa4b0b] | committer: Jean-Baptiste Kempf

mkv: among forced tracks, select the default

When several tracks of the same kind were flagged "forced", it selected
the last one. Instead, select the default one if any.

Fixes #18883

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3a0eeebc59ee682fdb71fdeceeb9b19e34aa4b0b
---

 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 267c43e616..d2aefec6eb 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;



More information about the vlc-commits mailing list