diff options
Diffstat (limited to 'demux/demux_cue.c')
-rw-r--r-- | demux/demux_cue.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/demux/demux_cue.c b/demux/demux_cue.c index f54c3f3e4a..8518d928d1 100644 --- a/demux/demux_cue.c +++ b/demux/demux_cue.c @@ -210,6 +210,7 @@ static void build_timeline(struct timeline *tl) } timeline[i] = (struct timeline_part) { .start = starttime, + .end = starttime + duration, .source_start = tracks[i].start, .source = source, }; @@ -217,23 +218,20 @@ static void build_timeline(struct timeline *tl) .pts = timeline[i].start, .metadata = mp_tags_dup(tl, tracks[i].tags), }; - starttime += duration; + starttime = timeline[i].end; } - // apparently we need this to give the last part a non-zero length - timeline[track_count] = (struct timeline_part) { - .start = starttime, - // perhaps unused by the timeline code - .source_start = 0, - .source = timeline[0].source, + struct timeline_par *par = talloc_ptrtype(tl, par); + *par = (struct timeline_par){ + .parts = timeline, + .num_parts = track_count, + .track_layout = timeline[0].source, }; - tl->parts = timeline; - // the last part is not included it in the count - tl->num_parts = track_count + 1 - 1; tl->chapters = chapters; tl->num_chapters = track_count; - tl->track_layout = tl->parts[0].source; + MP_TARRAY_APPEND(tl, tl->pars, tl->num_pars, par); + tl->meta = par->track_layout; out: talloc_free(ctx); |