From patchwork Fri Mar 9 21:34:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marton Balint X-Patchwork-Id: 7887 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.181.170 with SMTP id m39csp1446066jaj; Fri, 9 Mar 2018 13:35:11 -0800 (PST) X-Google-Smtp-Source: AG47ELtxQjH93Lcx0cemvRAVZ/CpdHlDuIoMkfq+S+iswf4UjnXHyPQlqlVb7nNbeXOWeGEHDyzh X-Received: by 10.28.15.4 with SMTP id 4mr223706wmp.33.1520631311640; Fri, 09 Mar 2018 13:35:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520631311; cv=none; d=google.com; s=arc-20160816; b=CABjruZ6mVvpRubdqRZN+PkQUTPDtDNwEbgPbonnWlXf5lfmyQFtv/ahAH8GBPCcT5 5DTaT1wQtMvuEAdjvxhvBQGGtLF/snELYPqFQ/JDSZls3KQVgyjyfpK0CehGp5O5OLpY WBwUxkHp7A8OB4VhZcTVrshb5msCSEaSQpJuMkE/Pc6QM6IE7Mc1ykZmbg6UB2eSCr2p iBBipXaijq0r21a6n0MHT/eag/WZ3kv2g+c8+UD/6CFh5Z3rzGa7WQXWOWy8R5a2jIpA saCGqJPb4JLSA0tEWUjVuSPI8CX7P9ogx2I8bdN1zlFvTa5T+i8WZH8XjJfg2TWiHe+q 5gvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:delivered-to :arc-authentication-results; bh=H5rylR7PVaipKpKehf/IQiC7hp7xyD0m/re8PLrrIYU=; b=gypFY2Ftl2fSApDvg5RTrIZbFnHDnalESUHMb7IKUHZF2BCsKs0/d1kdPDEsUbkuDc E+kC+/VLMkAgKDkuE6c0//P77pH+aBX1nKKAJ+cdj9P34xn7+5h1IekXeUisENgBZVbj z5gD7qM7z+Wv/SEkgnPQw6movGxfvO3osfxlhLezoXGVa48OnnJy/66GHccTOGDPY16k oXbjrYtVDgDr7G3RBaiITsdYqlp7zYQjHTu6p5jA5upL9Bt4xbmXmj2exrNkVO7qfNZe Q1kyYHeqwYDuZ2C6mojpuKoPpTtwDaHiKdGdTFchE3Cav4+9+av1maUaRwfWwgvzQu7Z 8jdA== 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 l17si1473883wrg.110.2018.03.09.13.35.11; Fri, 09 Mar 2018 13:35:11 -0800 (PST) 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 A5CB368A61E; Fri, 9 Mar 2018 23:35:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id ABEE768A123 for ; Fri, 9 Mar 2018 23:34:54 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 0B206E1B73; Fri, 9 Mar 2018 22:35:04 +0100 (CET) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jkQ5nn9kNaqZ; Fri, 9 Mar 2018 22:35:01 +0100 (CET) Received: from bluegene.passwd.hu (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 1AEFBE1304; Fri, 9 Mar 2018 22:35:01 +0100 (CET) From: Marton Balint To: ffmpeg-devel@ffmpeg.org Date: Fri, 9 Mar 2018 22:34:52 +0100 Message-Id: <20180309213452.24489-1-cus@passwd.hu> X-Mailer: git-send-email 2.13.6 Subject: [FFmpeg-devel] [RFC][PATCH] avformat/mxfdec: provide some mxf DigitalVideoAndImageCompressionParameters as metadata X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Cc: Marton Balint MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Would this be useful for anybody? Signed-off-by: Marton Balint --- libavformat/mxf.c | 5 ++ libavformat/mxf.h | 7 +++ libavformat/mxfdec.c | 36 +++++++++++ libavformat/mxfsymbols.c | 83 +++++++++++++++++++++++++ tests/ref/fate/concat-demuxer-extended-lavf-mxf | 2 +- tests/ref/fate/concat-demuxer-simple1-lavf-mxf | 2 +- tools/gen-mxfsymbols.c.xslt | 58 +++++++++++++++++ 7 files changed, 191 insertions(+), 2 deletions(-) create mode 100644 libavformat/mxfsymbols.c create mode 100644 tools/gen-mxfsymbols.c.xslt diff --git a/libavformat/mxf.c b/libavformat/mxf.c index a909401f08..1e2a4b5a9a 100644 --- a/libavformat/mxf.c +++ b/libavformat/mxf.c @@ -22,6 +22,11 @@ #include "libavutil/common.h" #include "mxf.h" +/* Generated symbol table for metadata array */ +#include "mxfsymbols.c" + +const int ff_mxf_nb_element_symbols = FF_ARRAY_ELEMS(ff_mxf_element_symbols); + /** * SMPTE RP224 http://www.smpte-ra.org/mdd/index.html */ diff --git a/libavformat/mxf.h b/libavformat/mxf.h index ffcc429a8b..3d4d0ef731 100644 --- a/libavformat/mxf.h +++ b/libavformat/mxf.h @@ -75,10 +75,17 @@ typedef struct { int samples_per_frame[6]; } MXFSamplesPerFrame; +typedef struct MXFElementSymbol { + UID uid; + const char *name; +} MXFElementSymbol; + extern const MXFCodecUL ff_mxf_data_definition_uls[]; extern const MXFCodecUL ff_mxf_codec_uls[]; extern const MXFCodecUL ff_mxf_pixel_format_uls[]; extern const MXFCodecUL ff_mxf_codec_tag_uls[]; +extern const MXFElementSymbol ff_mxf_element_symbols[]; +extern const int ff_mxf_nb_element_symbols; int ff_mxf_decode_pixel_layout(const char pixel_layout[16], enum AVPixelFormat *pix_fmt); const MXFSamplesPerFrame *ff_mxf_get_samples_per_frame(AVFormatContext *s, AVRational time_base); diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 7a42555562..aee984770d 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -195,6 +195,7 @@ typedef struct MXFDescriptor { uint8_t *extradata; int extradata_size; enum AVPixelFormat pix_fmt; + AVDictionary *dict; } MXFDescriptor; typedef struct MXFIndexTableSegment { @@ -325,6 +326,7 @@ static void mxf_free_metadataset(MXFMetadataSet **ctx, int freectx) switch ((*ctx)->type) { case Descriptor: av_freep(&((MXFDescriptor *)*ctx)->extradata); + av_dict_free(&((MXFDescriptor *)*ctx)->dict); break; case MultipleDescriptor: av_freep(&((MXFDescriptor *)*ctx)->sub_descriptors_refs); @@ -1025,6 +1027,8 @@ static int mxf_read_index_table_segment(void *arg, AVIOContext *pb, int tag, int return 0; } +static int mxf_uid_to_str(UID uid, char **str); + static void mxf_read_pixel_layout(AVIOContext *pb, MXFDescriptor *descriptor) { int code, value, ofs = 0; @@ -1144,6 +1148,36 @@ static int mxf_read_generic_descriptor(void *arg, AVIOContext *pb, int tag, int rsiz == FF_PROFILE_JPEG2000_DCINEMA_4K) descriptor->pix_fmt = AV_PIX_FMT_XYZ12; } + { + int i; + for (i = 0; i < ff_mxf_nb_element_symbols; i++) { + if (IS_KLV_KEY(uid, ff_mxf_element_symbols[i].uid)) { + uint64_t val = 0; + char *s; + switch (size) { + case 1: + val = avio_r8(pb); + break; + case 2: + val = avio_rb16(pb); + break; + case 4: + val = avio_rb32(pb); + break; + case 8: + val = avio_rb64(pb); + break; + default: + continue; + } + s = av_asprintf("%"PRIu64, val); + if (!s) + return AVERROR(ENOMEM); + av_dict_set(&descriptor->dict, ff_mxf_element_symbols[i].name, s, AV_DICT_DONT_STRDUP_VAL); + break; + } + } + } break; } return 0; @@ -2202,6 +2236,8 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) if (material_track->name && material_track->name[0]) av_dict_set(&st->metadata, "track_name", material_track->name, 0); + av_dict_copy(&st->metadata, descriptor->dict, 0); + mxf_parse_physical_source_package(mxf, source_track, st); if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { diff --git a/libavformat/mxfsymbols.c b/libavformat/mxfsymbols.c new file mode 100644 index 0000000000..18f5d514eb --- /dev/null +++ b/libavformat/mxfsymbols.c @@ -0,0 +1,83 @@ +/* + * This file contains the element and symbol name list of various + * DigitalVideoAndImageCompressionParameters and is generated with + * tools/gen-mxfsymbols.c.xslt from + * https://registry.smpte-ra.org/view/published/Elements.xml + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +const MXFElementSymbol ff_mxf_element_symbols[] = { + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x06,0x02,0x01,0x02,0x00,0x00}, "SingleSequence"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x06,0x02,0x01,0x03,0x00,0x00}, "ConstantBPictureCount"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x06,0x02,0x01,0x05,0x00,0x00}, "LowDelay"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x06,0x02,0x01,0x06,0x00,0x00}, "ClosedGOP"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x06,0x02,0x01,0x07,0x00,0x00}, "IdenticalGOP"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x06,0x02,0x01,0x08,0x00,0x00}, "MaxGOP"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x06,0x02,0x01,0x09,0x00,0x00}, "MaxBPictureCount"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x06,0x02,0x01,0x0a,0x00,0x00}, "ProfileAndLevel"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x05,0x04,0x01,0x06,0x02,0x01,0x0b,0x00,0x00}, "BitRate"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x02,0x02,0x02,0x00,0x00}, "MPEG4VisualSingleSequence"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x02,0x02,0x03,0x00,0x00}, "MPEG4VisualConstantBVOPs"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x02,0x02,0x05,0x00,0x00}, "MPEG4VisualLowDelay"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x02,0x02,0x06,0x00,0x00}, "MPEG4VisualClosedGOV"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x02,0x02,0x07,0x00,0x00}, "MPEG4VisualIdenticalGOV"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x02,0x02,0x08,0x00,0x00}, "MPEG4VisualMaxGOV"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x02,0x02,0x09,0x00,0x00}, "MPEG4VisualBVOPCount"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x02,0x02,0x0a,0x00,0x00}, "MPEG4VisualProfileAndLevel"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x02,0x02,0x0b,0x00,0x00}, "MPEG4VisualBitRate"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x01,0x00,0x00,0x00}, "Rsiz"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x02,0x00,0x00,0x00}, "Xsiz"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x03,0x00,0x00,0x00}, "Ysiz"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x04,0x00,0x00,0x00}, "XOsiz"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x05,0x00,0x00,0x00}, "YOsiz"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x06,0x00,0x00,0x00}, "XTsiz"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x07,0x00,0x00,0x00}, "YTsiz"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x08,0x00,0x00,0x00}, "XTOsiz"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x09,0x00,0x00,0x00}, "YTOsiz"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x0a,0x00,0x00,0x00}, "Csiz"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0c,0x04,0x01,0x06,0x04,0x02,0x00,0x00,0x00}, "VC1SingleSequence"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0c,0x04,0x01,0x06,0x04,0x04,0x00,0x00,0x00}, "VC1IdenticalGOP"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0c,0x04,0x01,0x06,0x04,0x05,0x00,0x00,0x00}, "VC1MaxGOP"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0c,0x04,0x01,0x06,0x04,0x06,0x00,0x00,0x00}, "VC1BPictureCount"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0c,0x04,0x01,0x06,0x04,0x07,0x00,0x00,0x00}, "VC1AverageBitRate"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0c,0x04,0x01,0x06,0x04,0x08,0x00,0x00,0x00}, "VC1MaximumBitRate"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0c,0x04,0x01,0x06,0x04,0x09,0x00,0x00,0x00}, "VC1Profile"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0c,0x04,0x01,0x06,0x04,0x0a,0x00,0x00,0x00}, "VC1Level"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x05,0x05,0x00,0x00,0x00}, "TIFFOrientation"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x05,0x06,0x00,0x00,0x00}, "TIFFSamplesPerPixel"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0d,0x04,0x01,0x06,0x05,0x07,0x00,0x00,0x00}, "TIFFLightSourceKind"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x03,0x00,0x00}, "AVCConstantBPictureFlag"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x06,0x00,0x00}, "AVCClosedGOPIndicator"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x07,0x00,0x00}, "AVCIdenticalGOPIndicator"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x08,0x00,0x00}, "AVCMaximumGOPSize"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x09,0x00,0x00}, "AVCMaximumBPictureCount"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x0a,0x00,0x00}, "AVCProfile"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x0b,0x00,0x00}, "AVCMaximumBitRate"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x0c,0x00,0x00}, "AVCProfileConstraint"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x0d,0x00,0x00}, "AVCLevel"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x0e,0x00,0x00}, "AVCDecodingDelay"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x0f,0x00,0x00}, "AVCMaximumRefFrames"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x10,0x00,0x00}, "AVCSequenceParameterSetFlag"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x11,0x00,0x00}, "AVCPictureParameterSetFlag"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x06,0x01,0x14,0x00,0x00}, "AVCAverageBitRate"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x07,0x01,0x00,0x00,0x00}, "VC2MajorVersion"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x07,0x02,0x00,0x00,0x00}, "VC2MinorVersion"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x07,0x03,0x00,0x00,0x00}, "VC2Profile"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x07,0x04,0x00,0x00,0x00}, "VC2Level"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x07,0x06,0x00,0x00,0x00}, "VC2SequenceHeadersIdentical"}, + {{0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x07,0x07,0x00,0x00,0x00}, "VC2EditUnitsAreCompleteSequences"}, +}; diff --git a/tests/ref/fate/concat-demuxer-extended-lavf-mxf b/tests/ref/fate/concat-demuxer-extended-lavf-mxf index c47f14faa1..20cc704ea1 100644 --- a/tests/ref/fate/concat-demuxer-extended-lavf-mxf +++ b/tests/ref/fate/concat-demuxer-extended-lavf-mxf @@ -1 +1 @@ -7e53f4c5cb0c9afda2771c9f0c697d9c *tests/data/fate/concat-demuxer-extended-lavf-mxf.ffprobe +873211962cac57261708ec4f861c8c5c *tests/data/fate/concat-demuxer-extended-lavf-mxf.ffprobe diff --git a/tests/ref/fate/concat-demuxer-simple1-lavf-mxf b/tests/ref/fate/concat-demuxer-simple1-lavf-mxf index 1174a1e183..fd88494033 100644 --- a/tests/ref/fate/concat-demuxer-simple1-lavf-mxf +++ b/tests/ref/fate/concat-demuxer-simple1-lavf-mxf @@ -120,5 +120,5 @@ audio|1|65280|1.360000|65280|1.360000|1920|0.040000|N/A|N/A|3840|206848|K_|1 Strings Metadata video|0|37|1.480000|34|1.360000|1|0.040000|N/A|N/A|24786|211456|K_|1 Strings Metadata -0|mpeg2video|4|video|1/25|[0][0][0][0]|0x0000|352|288|0|0|1|1:1|11:9|yuv420p|8|tv|unknown|unknown|unknown|left|progressive|N/A|1|N/A|25/1|25/1|1/25|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|51|0|0|0|0|0|0|0|0|0|0|0|0|0x060A2B340101010501010D001300000000000000000000000000000000000001 +0|mpeg2video|4|video|1/25|[0][0][0][0]|0x0000|352|288|0|0|1|1:1|11:9|yuv420p|8|tv|unknown|unknown|unknown|left|progressive|N/A|1|N/A|25/1|25/1|1/25|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|51|0|0|0|0|0|0|0|0|0|0|0|0|0x060A2B340101010501010D001300000000000000000000000000000000000001|200000|72 1|pcm_s16le|unknown|audio|1/48000|[0][0][0][0]|0x0000|s16|48000|1|unknown|16|N/A|0/0|0/0|1/48000|0|0.000000|N/A|N/A|768000|N/A|N/A|N/A|N/A|50|0|0|0|0|0|0|0|0|0|0|0|0|0x060A2B340101010501010D001300000000000000000000000000000000000001 diff --git a/tools/gen-mxfsymbols.c.xslt b/tools/gen-mxfsymbols.c.xslt new file mode 100644 index 0000000000..b5c3e9c0aa --- /dev/null +++ b/tools/gen-mxfsymbols.c.xslt @@ -0,0 +1,58 @@ + + + + +/* + * This file contains the element and symbol name list of various + * DigitalVideoAndImageCompressionParameters and is generated with + * tools/gen-mxfsymbols.c.xslt from + * https://registry.smpte-ra.org/view/published/Elements.xml + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +const MXFElementSymbol ff_mxf_element_symbols[] = { + {, ""}, +}; + + +{0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x} +