summaryrefslogtreecommitdiff
path: root/libavformat/matroskaenc.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-04-27 03:12:24 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-05-03 13:56:29 +0200
commit0aed3002ad3104489d0e378dc9893271d14e0e5b (patch)
treeb4efcbe18b4a30b671a49945109703afa8c9b684 /libavformat/matroskaenc.c
parent6397b4d6a241692a1c7bb611a3fd42b0de2d32b5 (diff)
downloadffmpeg-0aed3002ad3104489d0e378dc9893271d14e0e5b.tar.gz
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 <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat/matroskaenc.c')
-rw-r--r--libavformat/matroskaenc.c13
1 files changed, 7 insertions, 6 deletions
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;