From 297fdcc0955f70ff03bbd07a6d23550159a41b62 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 20 Feb 2016 16:22:15 +0100 Subject: demux_timeline: fix nested timelines You can e.g. reference ordered chapters or other EDL files in EDLs. There were some bugs left which broke this in some cases. --- DOCS/edl-mpv.rst | 5 ++--- DOCS/man/options.rst | 3 +-- demux/demux.c | 3 +++ demux/demux_timeline.c | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/DOCS/edl-mpv.rst b/DOCS/edl-mpv.rst index b83706cf79..b0f7238307 100644 --- a/DOCS/edl-mpv.rst +++ b/DOCS/edl-mpv.rst @@ -31,9 +31,8 @@ estimated remaining duration of the source file is used. Note:: - mpv can't use ordered chapter files in EDL entries. Usage of relative or - absolute paths as well as any protocol prefixes is prevented for security - reasons. + Usage of relative or absolute paths as well as any protocol prefixes may be + prevented for security reasons. Syntax of mpv EDL files diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index dc4dd0f361..bb69090583 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -394,8 +394,7 @@ Program Behavior ``--merge-files`` Pretend that all files passed to mpv are concatenated into a single, big - file. This uses timeline/EDL support internally. Note that this won't work - for ordered chapter files. + file. This uses timeline/EDL support internally. ``--no-resume-playback`` Do not restore playback position from the ``watch_later`` configuration diff --git a/demux/demux.c b/demux/demux.c index 61becd7f04..6388ca3732 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -698,6 +698,9 @@ static struct demux_packet *dequeue_packet(struct demux_stream *ds) pkt->pts = MP_ADD_PTS(pkt->pts, ds->in->ts_offset); pkt->dts = MP_ADD_PTS(pkt->dts, ds->in->ts_offset); + pkt->start = MP_ADD_PTS(pkt->start, ds->in->ts_offset); + pkt->end = MP_ADD_PTS(pkt->end, ds->in->ts_offset); + return pkt; } diff --git a/demux/demux_timeline.c b/demux/demux_timeline.c index e52d75fa09..07fe4d102a 100644 --- a/demux/demux_timeline.c +++ b/demux/demux_timeline.c @@ -225,7 +225,7 @@ static int d_fill_buffer(struct demuxer *demuxer) } } - pkt->new_segment = vs->new_segment; + pkt->new_segment |= vs->new_segment; vs->new_segment = false; demux_add_packet(vs->sh, pkt); -- cgit v1.2.3