From patchwork Mon Oct 11 03:23:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dong Nguyen X-Patchwork-Id: 31025 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2084:0:0:0:0 with SMTP id a4csp3286684ioa; Sun, 10 Oct 2021 20:23:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzG9LlMAasWokwCSxMcNFAOgP4vNpD21P/+wVSdwbSIw7euqZWnVZmzsP7cA9Y6BAsBUIpZ X-Received: by 2002:a05:6402:34d1:: with SMTP id w17mr12438393edc.383.1633922605231; Sun, 10 Oct 2021 20:23:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633922605; cv=none; d=google.com; s=arc-20160816; b=DjHw/ChQ6ktgCFuZpnBI6CUapiFG0J6SVQnkcgrqYufxJW826XyKwQqGl1Vl49tD2V pU/ye7dH3H6YkBQRwMKhoHuOHUqj6j7JVs6G5b/QNYG3EJdeljr2/0DdgeU9AX7S66F8 xR7FA6dhCX7qdV65ysW3f3ebX5izIO5JqlRnxaPcI8Lb3TzKIuENUvY0miHHxZN3ziJR s5VEVQ6NM7uJBP+/weg/Aiv9p1Klzrt1o5vdTlQR1hiuWBufq/FlbaU2eWcGwuWah0YV leLLHewnQbB9teeBtZep4O59ij4lKFdBQJFuFoM6AqVXcYEbIst3Yph0rxiqyqt8vbKl StFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=ggk41Rc3GonK+z5X0ZhhXJnyW7d15pRr4zIPMInJA20=; b=NL4ntGhc6n88JuyuYhF5OmNEOLMctj9iuEwXof5q95iSECHbUzXyrRTsZpeS/VH+x1 ibHPfdyBuHajyKEnlUtImXZecHhyDSeHuZVGs/7r+PVqiLuRrkwW0Tutc+KctUu4SMzO rDZXRt0wwcpw2yJ/pgo4l7NZRu+tg/4n2dp0Gal8vis6YMajEvdERZBz4TP/ukfc9xqC 8Uyi74g3rajGtH+uwwVp4AH9MVyH40g4+QVKun6DpRczv2aHLiFFsFtI29b+JHn/vCL3 jLW/FT6u/iFiazvmut7GAk1VcCYveZAFw0y/JMxWze18vZesSThtFzBx4QiZa0EEQod2 Mk8Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=eHAB1YTi; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f21si15566211edf.59.2021.10.10.20.23.24; Sun, 10 Oct 2021 20:23:25 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=eHAB1YTi; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 01C5768A711; Mon, 11 Oct 2021 06:23:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ECDF8689900 for ; Mon, 11 Oct 2021 06:23:13 +0300 (EEST) Received: by mail-pl1-f173.google.com with SMTP id v20so3245968plo.7 for ; Sun, 10 Oct 2021 20:23:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=MjWosEOPPIVAGqqbd2K5hVLo/kJjCMIByrVzko+PV60=; b=eHAB1YTiu7cCftuZv6uW/PN2bDOhCUd70iOLfRMD/fEs/JFv++7DEmsoCCxckdcrI7 OKl7Zc3CNTGszFZqJnPBffmeSd26/Gd1mc54LjOXoqbsTvxXIZo8uGmfQoZZVG9u+FU3 syqDv/GoiCoWrcqjZ6SsqNlN9vNLd76HaxLS3WOKe93DkLFuNFznsWGYncWhgZ5ijxkB WEPijB8A90dnGbiHXj5RXdZCJLOKwlPryU0qmcS4Cx020ULb0N2O+3vgi8+4DoKQwb1G jNqEZH1WhhSts7qpQPNiACkBKVtiiuh0+K3Iy7Z0qELlS8R6gy+U5TUF4LjELoxPMwc0 hYdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=MjWosEOPPIVAGqqbd2K5hVLo/kJjCMIByrVzko+PV60=; b=w2xaf3GG6bHZCTNOJ6toa8/ZSBPck3g7rXnAi9b1sIeeM345GdX79SXZFYaRDDJ6gA OFe7HRYUIdmajhNj4gCWQsC5XGfhYzEEsEe5f1TgN3O+9dC4nWj+277ZQe7rPJwY17h9 jNfMv3dXyu3wsZ7Bf12LTltr3M9VHXT3kvrEqNUu2GJsS2bj/DeyCnHurWyCBMISkGyF m0UMRpTw0i+U0tA9qS9Ks7odZjgROYknMBmOcUXYqRvMPr/bHE8jwfgzgrcl1d7ZEur1 Qj2f47zh+A+zaDP2sdCKFA2WA5NNaefmIUGAHgL2X4VtFnkPWE1XQicfCoIiuR+yrVrx F5tg== X-Gm-Message-State: AOAM531/L8wU4uyW0qxX0iEjfSTzO0hj19UVAubyFEKlRnXdG9uf2dOl cCnTEFjBa41jwcu8wkErrPLUHhH8djq5Eg== X-Received: by 2002:a17:903:1c2:b0:13f:2893:de99 with SMTP id e2-20020a17090301c200b0013f2893de99mr9030891plh.80.1633922591723; Sun, 10 Oct 2021 20:23:11 -0700 (PDT) Received: from VNSGN-LDSEDN.tasernet.com ([14.187.174.108]) by smtp.gmail.com with ESMTPSA id p21sm17749418pjo.26.2021.10.10.20.23.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Oct 2021 20:23:11 -0700 (PDT) From: Dong Nguyen To: ffmpeg-devel@ffmpeg.org Date: Mon, 11 Oct 2021 10:23:08 +0700 Message-Id: <20211011032308.11778-1-nguyenduydong@gmail.com> X-Mailer: git-send-email 2.27.0.rc0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/1] mov: read track title X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: w4EQKWMo775D this change fix issue [9438](https://trac.ffmpeg.org/ticket/9438) after commit da9cc22d5bd5f59756c2037b02966376da2cf323 ffmpeg is able to write track title metadata to mov/mp4 format file but it is not able to read back the metadata Signed-off-by: Dong Nguyen --- libavformat/mov.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index a811bc7677..644e746d02 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -303,6 +303,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; + int track_title = 0; switch (atom.type) { case MKTAG( '@','P','R','M'): key = "premiere_version"; raw = 1; break; @@ -380,6 +381,12 @@ static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom) case MKTAG(0xa9,'l','y','r'): key = "lyrics"; break; case MKTAG(0xa9,'m','a','k'): key = "make"; break; case MKTAG(0xa9,'m','o','d'): key = "model"; break; + case MKTAG('n','a','m','e') : + if (c->trak_index >= 0) { // meta inside track + key = "title"; + track_title = 1; + } + break; case MKTAG(0xa9,'n','a','m'): key = "title"; break; case MKTAG(0xa9,'o','p','e'): key = "original_artist"; break; case MKTAG(0xa9,'p','r','d'): key = "producer"; break; @@ -428,7 +435,7 @@ retry: return ret; } } else return 0; - } else if (atom.size > 4 && key && !c->itunes_metadata && !raw) { + } else if (atom.size > 4 && key && !c->itunes_metadata && !raw && !track_title) { str_size = avio_rb16(pb); // string length if (str_size > atom.size) { raw = 1; @@ -521,7 +528,11 @@ retry: str[str_size] = 0; } c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; - av_dict_set(&c->fc->metadata, key, str, 0); + if (track_title) { + av_dict_set(&c->fc->streams[c->trak_index]->metadata, key, str, 0); + } else { + av_dict_set(&c->fc->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);