diff options
-rw-r--r-- | DOCS/edl-mpv.rst | 18 | ||||
-rw-r--r-- | demux/demux_edl.c | 5 |
2 files changed, 22 insertions, 1 deletions
diff --git a/DOCS/edl-mpv.rst b/DOCS/edl-mpv.rst index 7c9f64e160..2d451926cb 100644 --- a/DOCS/edl-mpv.rst +++ b/DOCS/edl-mpv.rst @@ -147,6 +147,24 @@ Example:: Plays chapter 3 and ends with the start of chapter 7 (4 chapters later). +Implicit chapters +================= + +mpv will add one chapter per segment entry to the virtual timeline. + +By default, the chapter's titles will match the entries' filenames. +You can override set the ``title`` option to override the chapter title for +that segment. + +Example:: + + # mpv EDL v0 + cap.ts,5,240 + OP.mkv,0,90,title=Show Opening + +The virtual timeline will have two chapters, one called "cap.ts" from 0-240s +and a second one called "Show Opening" from 240-330s. + Syntax of EDL URIs ================== diff --git a/demux/demux_edl.c b/demux/demux_edl.c index 36a9c2cc3b..b724ffa592 100644 --- a/demux/demux_edl.c +++ b/demux/demux_edl.c @@ -41,6 +41,7 @@ struct tl_part { bool offset_set; bool chapter_ts; double length; // length of the part (-1 if rest of the file) + char *title; }; struct tl_parts { @@ -123,6 +124,8 @@ static struct tl_parts *parse_edl(bstr str) } else if (bstr_equals0(name, "timestamps")) { if (bstr_equals0(val, "chapters")) p.chapter_ts = true; + } else if (bstr_equals0(name, "title")) { + p.title = bstrto0(tl, val); } if (nparam >= MAX_PARAMS) goto error; @@ -296,7 +299,7 @@ static void build_timeline(struct timeline *tl, struct tl_parts *parts) .pts = starttime, .metadata = talloc_zero(tl, struct mp_tags), }; - mp_tags_set_str(ch.metadata, "title", part->filename); + mp_tags_set_str(ch.metadata, "title", part->title ? part->title : part->filename); MP_TARRAY_APPEND(tl, tl->chapters, tl->num_chapters, ch); // Also copy the source file's chapters for the relevant parts |