From 0aed3002ad3104489d0e378dc9893271d14e0e5b Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Mon, 27 Apr 2020 03:12:24 +0200 Subject: avformat/matroskaenc: Make sure UIDs of delayed chapters are != 0 This has previously only been checked if the chapters were initially available, but not if they were only written in the trailer. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'libavformat') diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index c07aa4f7e4..cccfdb41b6 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1437,6 +1437,12 @@ static int mkv_write_chapters(AVFormatContext *s) if (!s->nb_chapters || mkv->wrote_chapters) return 0; + for (i = 0; i < s->nb_chapters; i++) + if (!s->chapters[i]->id) { + mkv->chapter_id_offset = 1; + break; + } + mkv_add_seekhead_entry(mkv, MATROSKA_ID_CHAPTERS, avio_tell(pb)); ret = start_ebml_master_crc32(&dyn_cp, mkv); @@ -1863,12 +1869,6 @@ static int mkv_write_header(AVFormatContext *s) if (ret < 0) return ret; - for (i = 0; i < s->nb_chapters; i++) - if (!s->chapters[i]->id) { - mkv->chapter_id_offset = 1; - break; - } - ret = mkv_write_chapters(s); if (ret < 0) return ret; @@ -1879,6 +1879,7 @@ static int mkv_write_header(AVFormatContext *s) return ret; } + /* Must come after mkv_write_chapters() because of chapter_id_offset */ ret = mkv_write_tags(s); if (ret < 0) return ret; -- cgit v1.2.3