From 228b17a1f5f4d3d82c5beca4fc57016c3d582c64 Mon Sep 17 00:00:00 2001 From: John Stebbins Date: Fri, 21 May 2021 14:12:07 +0200 Subject: [PATCH 1/5] [PATCH 1/3] mov: read 'name' track tag written by movenc --- libavformat/mov.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 38a7058..1546867 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -308,6 +308,7 @@ static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom) int (*parse)(MOVContext*, AVIOContext*, unsigned, const char*) = NULL; int raw = 0; int num = 0; + AVDictionary *metadata; switch (atom.type) { case MKTAG( '@','P','R','M'): key = "premiere_version"; raw = 1; break; @@ -340,6 +341,7 @@ static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom) return mov_metadata_loci(c, pb, atom.size); case MKTAG( 'm','a','n','u'): key = "make"; break; case MKTAG( 'm','o','d','l'): key = "model"; break; + case MKTAG( 'n','a','m','e'): key = "title"; raw = 1; break; case MKTAG( 'p','c','s','t'): key = "podcast"; parse = mov_metadata_int8_no_padding; break; case MKTAG( 'p','g','a','p'): key = "gapless_playback"; @@ -515,17 +517,23 @@ retry: } str[str_size] = 0; } - c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; - av_dict_set(&c->fc->metadata, key, str, 0); + if (c->trak_index < 0) { + metadata = c->fc->metadata; + c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; + if (!strcmp(key, "encoder")) { + int major, minor, micro; + if (sscanf(str, "HandBrake %d.%d.%d", &major, &minor, µ) == 3) { + c->handbrake_version = 1000000*major + 1000*minor + micro; + } + } + } + else { + metadata = c->fc->streams[c->trak_index]->metadata; + } + av_dict_set(&metadata, key, str, 0); if (*language && strcmp(language, "und")) { snprintf(key2, sizeof(key2), "%s-%s", key, language); - av_dict_set(&c->fc->metadata, key2, str, 0); - } - if (!strcmp(key, "encoder")) { - int major, minor, micro; - if (sscanf(str, "HandBrake %d.%d.%d", &major, &minor, µ) == 3) { - c->handbrake_version = 1000000*major + 1000*minor + micro; - } + av_dict_set(&metadata, key2, str, 0); } } -- 2.30.1 (Apple Git-130)