From patchwork Wed Mar 29 21:12:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?C=C3=A9dric_Le_Barz?= X-Patchwork-Id: 40909 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp802190pzb; Wed, 29 Mar 2023 14:13:13 -0700 (PDT) X-Google-Smtp-Source: AKy350Zoiq9u8OfLk/cZW/FUBE4onhj5AO5MjcWSzWjKYoWyD4zNpq4+WsTPd0zDEbonJkAwqYRO X-Received: by 2002:a17:906:6a07:b0:93d:e141:e958 with SMTP id qw7-20020a1709066a0700b0093de141e958mr27413061ejc.15.1680124392867; Wed, 29 Mar 2023 14:13:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680124392; cv=none; d=google.com; s=arc-20160816; b=KEhZAIKqGBABGQ5Sn5ZDM+DRwE7yvQzSU8vxeUCdY5+60CUZnf5+ijX+h1zDGWBT6U bPwHcl1Fg6GjJzni16RjfCbmhkpU5V/uM6Nf2UBRm3owFWtl7Jmv1a3AzIc2xXKs/GXE edLLI0h6d8PPwiosadrnnbIZSKtDSSzns6lHFfppogBT9rfMpkP9yfhPwwKvjFwBjX86 asZ3fgTXAvXD9DyiMXb2XgRILOeAdfETbnqKR5E8TMVXua24MNiRaEPQ87+o0Q46kuh2 Da+ptrJuxxk7X4aB87hckN6HnHZdBJYfvNVJt4/WFziAbPElD6B+sI/A+hXk4cVYlk64 /jqQ== 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:content-language:to:from:mime-version:date :message-id:delivered-to; bh=61/fP0vyDntOgZBV/hQ0h/RhSKv7YB1c6lXSQ+sANG8=; b=xpUrvJBo0kqlwl5impKGGvgRbas94vE5gKhEQTBNLRrnAMGCtxK8NGeB9k60Ko1ugJ 5fIa4rxcchJwCxvlWpriUnf8pnYcgA9y1Ie3u/c/FaUaEUm/SWIGkzow9a83wly7az18 GxMD8vc+WoKUPg3M1OPyzD7XM+AXzsvAd3N21lx/Vc6TI/dIf8OR59fyZXBMeHTuEKAQ Ou+pyEAqLNJsGmauZCCtk9JBTqua6T2V8XgX6eYajL50XucvSFU+mb3Mz+CrugtPMAoe ZbsdxMkTwyi/J/tYklzfClZsYWjcZPP0+ZjMoW35X+d0COFK+5ce79M5vXWla/XafGGf G7zg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id u1-20020a17090657c100b008b17dae0e0dsi28865353ejr.846.2023.03.29.14.13.11; Wed, 29 Mar 2023 14:13:12 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D9BB868C35F; Thu, 30 Mar 2023 00:13:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from gandalf.ektacom.com (gandalf.ektacom.com [62.23.45.26]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4797F68C1F4 for ; Thu, 30 Mar 2023 00:13:01 +0300 (EEST) Received: from ektacom.com (82-64-203-93.subs.proxad.net [82.64.203.93]) by gandalf.ektacom.com (Postfix) with ESMTP id ADFB645A266 for ; Wed, 29 Mar 2023 23:13:00 +0200 (CEST) Message-ID: <24e1274d-db0c-da87-60a1-50a9e9f63f13@ektacom.com> Date: Wed, 29 Mar 2023 23:12:56 +0200 MIME-Version: 1.0 From: =?utf-8?q?C=C3=A9dric_Le_Barz?= To: ffmpeg-devel@ffmpeg.org Content-Language: en-US X-MailScanner-ID: 53A701B0D72D.A5B93 X-MailScanner: Found to be clean X-MailScanner-From: clebarz@ektacom.com X-Spam-Status: No Subject: [FFmpeg-devel] [PATCH] Add track name information when track is written. - Sponsored by INA 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: We0pKrARycYk Add track name information in MXF when track is written. Signed-off-by: Cedric Le Barz Signed-off-by: Cedric Le Barz --- ffmpeg/libavformat/mxfenc.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) /* Sequence reference */ + // Track name + { 0x4802, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x01,0x07,0x01,0x02,0x01,0x00,0x00,0x00}}, /* TrackName */ // Sequence { 0x0201, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x07,0x01,0x00,0x00,0x00,0x00,0x00}}, /* Data Definition UL */ { 0x0202, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x02,0x01,0x01,0x03,0x00,0x00}}, /* Duration */ @@ -862,7 +864,28 @@ static void mxf_write_track(AVFormatContext *s, AVStream *st, MXFPackage *packag mxf_write_metadata_key(pb, 0x013b00); PRINT_KEY(s, "track key", pb->buf_ptr - 16); + + if (st->codecpar) { + static const char * pcTrackName_Video = "Picture" ; + static const char * pcTrackName_Audio = "Sound" ; + static const char * pcTrackName_Anc = "Ancillary" ; + if ( st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO ) + { + //TrackName Video + klv_encode_ber_length(pb, 80 + mxf_utf16_local_tag_length(pcTrackName_Video)); + mxf_write_local_tag_utf16(s, 0x4802 , pcTrackName_Video); + } else if ( st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO ) { + //TrackName Audio + klv_encode_ber_length(pb, 80 + mxf_utf16_local_tag_length(pcTrackName_Audio)); + mxf_write_local_tag_utf16(s, 0x4802, pcTrackName_Audio); + } else { + //TrackName Ancillary + klv_encode_ber_length(pb, 80 + mxf_utf16_local_tag_length(pcTrackName_Anc)); + mxf_write_local_tag_utf16(s, 0x4802, pcTrackName_Anc); + } + } else { klv_encode_ber_length(pb, 80); + } // write track uid mxf_write_local_tag(s, 16, 0x3C0A); @@ -3383,3 +3406,4 @@ const FFOutputFormat ff_mxf_opatom_muxer = { .p.priv_class = &mxf_opatom_muxer_class, }; + diff --git a/ffmpeg/libavformat/mxfenc.c b/ffmpeg/libavformat/mxfenc.c index 3bdf90a..bfbd5a6 100644 --- a/ffmpeg/libavformat/mxfenc.c +++ b/ffmpeg/libavformat/mxfenc.c @@ -299,6 +299,8 @@ static const MXFLocalTagPair mxf_local_tag_batch[] = { { 0x4B01, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x30,0x04,0x05,0x00,0x00,0x00,0x00}}, /* Edit Rate */ { 0x4B02, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x01,0x03,0x01,0x03,0x00,0x00}}, /* Origin */ { 0x4803, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x02,0x04,0x00,0x00}},