diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-06-15 08:27:58 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-06-16 19:18:48 +0200 |
commit | 672987b2db9051a4738402751b94133c0d6c405d (patch) | |
tree | 8be089ccbbf535f940e0c91afc3e222ec704f4a4 | |
parent | 49a63c6c6609c8ccb6c5c5f7474c9900a7e2cb8f (diff) |
avformat/matroskaenc: Convert chapter metadata
It is no longer converted since mkv_write_chapters() is called
before mkv_write_tags() which happens since commit
4ebfc13c338423cf48f1a1266c890422367f7775. Given the fact that
chapters can also be written late, mkv_write_chapters() has to
convert the metadata itself.
Fixes ticket #9812.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r-- | libavformat/matroskaenc.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 297346be84..c32d4286c1 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2104,7 +2104,7 @@ static int mkv_write_chapters(AVFormatContext *s) create_new_ids = mkv_new_chapter_ids_needed(s); for (unsigned i = 0; i < s->nb_chapters; i++) { - const AVChapter *c = s->chapters[i]; + AVChapter *const c = s->chapters[i]; int64_t chapterstart = av_rescale_q(c->start, c->time_base, scale); int64_t chapterend = av_rescale_q(c->end, c->time_base, scale); const AVDictionaryEntry *t; @@ -2132,11 +2132,15 @@ static int mkv_write_chapters(AVFormatContext *s) if (ret < 0) goto fail; - if (tags && mkv_check_tag(c->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID)) { - ret = mkv_write_tag(mkv, c->metadata, tags, NULL, - MATROSKA_ID_TAGTARGETS_CHAPTERUID, uid); - if (ret < 0) - goto fail; + if (tags) { + ff_metadata_conv(&c->metadata, ff_mkv_metadata_conv, NULL); + + if (mkv_check_tag(c->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID)) { + ret = mkv_write_tag(mkv, c->metadata, tags, NULL, + MATROSKA_ID_TAGTARGETS_CHAPTERUID, uid); + if (ret < 0) + goto fail; + } } } end_ebml_master(dyn_cp, editionentry); |