From patchwork Wed Oct 13 00:01:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dong Nguyen X-Patchwork-Id: 31089 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2084:0:0:0:0 with SMTP id a4csp5374520ioa; Tue, 12 Oct 2021 17:01:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxqhMcNg2Jw8ccl0VSpzLlZV+byg37EJx/qxo3fvfXrYNIFNzhA51kK3Fe3IYEKY1yr80PZ X-Received: by 2002:a50:becf:: with SMTP id e15mr4391874edk.114.1634083286976; Tue, 12 Oct 2021 17:01:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634083286; cv=none; d=google.com; s=arc-20160816; b=H/uWVhxL7pvoWeIjBAkL70I3gW2ekeTjM6C+Vt5lRiu7x0qNjJeJcLgfVCm9UK6JjP tCLv56Px+fjrearUVXjp7wI257setGVuz1ExLk8nInv/h6JY/5yjtszRXLxt07lsIs6I sftBCeldHiQUcFSKdDNYVklJKIok5CGtWdjFleHOaOyhR0sZKRbYxcPPCJ+++X8N5JQ/ x1UI9u/8iGbCBKWl9OuRoqNfBsOoIt27lmX8KBAWFPhWIbku+c1Y7gRQbBRb/BBHBiQk KOAwXDexWcu76lCH6SWPwg+yjYwBx4v0L/XxiXldoGy8MhQm7hpaHoo+urHN4W3ZK/B2 T7Ww== 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=4SVKVWTGBshSDBZTwXAc0QM1Hg2v1BdzwQ6BYKbCP30=; b=NfP7+FUdz6I9kwE5vFeYnAmtVOQXwji1ecideugp28knJgjE24jqPlLIuKqWKJUsCr CUDCFe+L5NE3X6fU5GWd3vin3FViBhSFEw+18fvd047Srz/Xp1T9Rh+AQrcyIPLltm8Y uZK5hDLRrksNh9fO3iYSc86BbC9ytIfD/xNGqOyAiXRsk52qP6kPAn49mkkF7jRLycaM 5zr/VaHgpxUs2HgojgrAB5PsFkku8KPxDz1CpFlnp0B1n3nwfQ3BjCYVkc4mTGL4TrOJ v9vHeuQMbM4uebB9Q4ztKATnmU2agi6VWYKDjcugfrWSHXRzuYngNaBS+n7kcgMvI6f9 +aEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="df/j9UBl"; 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 16si16294931ejf.85.2021.10.12.17.01.19; Tue, 12 Oct 2021 17:01:26 -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="df/j9UBl"; 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 343D468A905; Wed, 13 Oct 2021 03:01:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4AD196802E4 for ; Wed, 13 Oct 2021 03:01:09 +0300 (EEST) Received: by mail-pj1-f44.google.com with SMTP id om14so816781pjb.5 for ; Tue, 12 Oct 2021 17:01:09 -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=x6VyeczpcETjqvMJIFcwLXT7KR8ACzbmEj+JnPyFMCs=; b=df/j9UBlylfZSTSpYcjvP9uMRLhG9VBXva+FKZUsC0hGBuvepf1wv7mHTPT1oDWtGX 8qmYNcqRfSLpQg1fVUcn+dyuyGX4kRhb9NkXubaE0S30ICBN+yWDY4Elsn2c228y3e+w /zaL6HJYzCLLN2CkI2pbMS7kJRix5Rhj7/891l46x+au5zPRdveAq8zAIT7MWpySZCB8 VSe5EippFjeNLYXOmnYOXHnXCR3ISEGm3Nd7IhOUiVS4X7s8HZJ+eIMyLyeGtkzwXMML Y2Cov4GXe3dLjAJI/QNiYrR5gkwtm4qljKDCOe8SbZGlVGCP4pgoLYGo3FoerfYYAz/J hUGg== 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=x6VyeczpcETjqvMJIFcwLXT7KR8ACzbmEj+JnPyFMCs=; b=TTqARAarhJILOjEJ9Ccnjhq2Ap5wl0MvWYBiZJRdaOci/kzQShSb8X9eUQS1wIjonx jMlkD94B58iKTis6TLE5tTN5Hmr+lfHbezPP/EElIe+lzkhFSvZdJui1jLRofC6n/iqD KQPIP16mjOWew/rlN0fzVGPpN+09mZ/zZTCXN2mcgE277CPn5CWtpyRPe1BcNp+kJuyN xybCD+fL8pS+kDcYM7UlC6G7LrwhQV6hCLS8TzdTFJQo41d9VEk/xKxarz+NeiDOVNIM LyD8+QTzNx/hP8L0lRwxO7n0vVPfS+RUK7kA9V+h+QrV2ZMGsNomCzKp9AFEvlxVdQrR 70rA== X-Gm-Message-State: AOAM531J2zFGN8yOm5uov5o5v4CarBq+2X/fFmECMcfvq5d9CLS1SNW2 o/bsmcf6EoBbgf8PcAhQHYDPkxMS9UdgFA== X-Received: by 2002:a17:90b:3687:: with SMTP id mj7mr9790833pjb.196.1634083266885; Tue, 12 Oct 2021 17:01:06 -0700 (PDT) Received: from VNSGN-LDSEDN.tasernet.com ([14.187.174.108]) by smtp.gmail.com with ESMTPSA id z11sm3858322pjl.45.2021.10.12.17.01.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Oct 2021 17:01:06 -0700 (PDT) From: Dong Nguyen To: ffmpeg-devel@ffmpeg.org Date: Wed, 13 Oct 2021 07:01:03 +0700 Message-Id: <20211013000103.10725-1-nguyenduydong@gmail.com> X-Mailer: git-send-email 2.27.0.rc0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 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: NObumx1WXb7n this change fixes 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 if `udta` box is inside track box then update AvStream's metadata instead of AVFormatContext. 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..26d33db5cd 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -380,6 +380,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"; + raw = 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; @@ -520,8 +526,13 @@ 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) { + c->fc->streams[c->trak_index]->event_flags |= AVSTREAM_EVENT_FLAG_METADATA_UPDATED; + av_dict_set(&c->fc->streams[c->trak_index]->metadata, key, str, 0); + } else { + c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; + 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);