From 672987b2db9051a4738402751b94133c0d6c405d Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Wed, 15 Jun 2022 08:27:58 +0200 Subject: [PATCH] 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 --- libavformat/matroskaenc.c | 16 ++++++++++------ 1 file 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);