diff options
Diffstat (limited to 'player/timeline')
-rw-r--r-- | player/timeline/tl_cue.c | 1 | ||||
-rw-r--r-- | player/timeline/tl_matroska.c | 10 | ||||
-rw-r--r-- | player/timeline/tl_mpv_edl.c | 1 |
3 files changed, 12 insertions, 0 deletions
diff --git a/player/timeline/tl_cue.c b/player/timeline/tl_cue.c index 8b8afeae17..d9541c5691 100644 --- a/player/timeline/tl_cue.c +++ b/player/timeline/tl_cue.c @@ -408,6 +408,7 @@ void build_cue_timeline(struct MPContext *mpctx) mpctx->num_timeline_parts = track_count + 1 - 1; mpctx->chapters = chapters; mpctx->num_chapters = track_count; + mpctx->track_layout = mpctx->timeline[0].source; out: talloc_free(ctx); diff --git a/player/timeline/tl_matroska.c b/player/timeline/tl_matroska.c index e2c721a003..8ced0ca7ac 100644 --- a/player/timeline/tl_matroska.c +++ b/player/timeline/tl_matroska.c @@ -569,4 +569,14 @@ void build_ordered_chapter_timeline(struct MPContext *mpctx) mpctx->num_timeline_parts = part_count - 1; mpctx->num_chapters = m->num_ordered_chapters; mpctx->chapters = chapters; + + // With Matroska, the "master" file usually dictates track layout etc., + // except maybe with playlist-like files. + mpctx->track_layout = mpctx->timeline[0].source; + for (int n = 0; n < mpctx->num_timeline_parts; n++) { + if (mpctx->timeline[n].source == mpctx->demuxer) { + mpctx->track_layout = mpctx->demuxer; + break; + } + } } diff --git a/player/timeline/tl_mpv_edl.c b/player/timeline/tl_mpv_edl.c index 4cd62fc497..ce90537bed 100644 --- a/player/timeline/tl_mpv_edl.c +++ b/player/timeline/tl_mpv_edl.c @@ -267,6 +267,7 @@ static void build_timeline(struct MPContext *mpctx, struct tl_parts *parts) mpctx->num_timeline_parts = parts->num_parts; mpctx->chapters = chapters; mpctx->num_chapters = num_chapters; + mpctx->track_layout = mpctx->timeline[0].source; return; error: |