From patchwork Thu Sep 23 17:00:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Pierre-Anthony Lemieux X-Patchwork-Id: 30511 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6506:0:0:0:0:0 with SMTP id z6csp651320iob; Thu, 23 Sep 2021 10:01:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz8VZcOu3q55ZOpSR1O89vrKtfnrmmki7uvv+AmhZZbEBkIvhVbuXEIyJ8joWEuros71wlG X-Received: by 2002:a17:907:2633:: with SMTP id aq19mr6286105ejc.534.1632416494524; Thu, 23 Sep 2021 10:01:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632416494; cv=none; d=google.com; s=arc-20160816; b=Iw3rIiWnQR8Kfh74RBU8kkojA9qZfgDrOl41yMpdSiHYxgUGJXWYG70M0BAdVv3N5z 0QFaGXHiP+c8kh+M400pjLCbKb3HOOWSSHr9sCFUimLJM8qfOG0FxNhoesZh7Hd120pw 7YKZO2J3qtQ3E4huPrsNT1A+Pin4zXDlm79h+PCMuvVK8fTVZ4hBCXl7ToodppP0BPsI 2tpfGrO91SrqPH5AqnX5zEY9NG0Vai9yKKrmP6H+BIzypMz6899bJjRCO1fCWAIDtbCB i2mSS2hA/e//iGPnStlQ4/+8s9zdAFYhLqwkVllDC3LpqbeQOmbL3Jrq3s9S8+0kCInA Q0pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=SmPXNg5r7NNqkzEujGCqzq3IbtBzJsuXoZDw91b1q3s=; b=WCvvf+3DXIajOslmgrgAuP7XdmIlOb7nCsn5zI0A3uO5XeLN+6jl/cufSglcC6r95t Edr/9vuBusDyZrqcRl4w/tCM0cz+mSuKsSFI0wxjSLQ7nWbu23tH1527zyP6iEZztGbq OcajdxET2pY5gs5fXqJ3U3goKdSCVzTcnmN39XQ7tp9+9opkR78LowZDQhsAJNPBiVLm 64FB3hBtZ5upjTvDNk5a4v444db38R1He+Xxd2Eb6ADqFFjDfj25CrTydlNF1963WXDS mY8XrVqlMYnEAlhNayqKN0wHFxA33fDhztwCHKCRvxoIsR1N5xFD9BZlZE+9xhQJBgRl COSg== 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 u24si7151577edv.599.2021.09.23.10.01.34; Thu, 23 Sep 2021 10:01:34 -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 D363568ADE5; Thu, 23 Sep 2021 20:01:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 10C9268AC00 for ; Thu, 23 Sep 2021 20:01:24 +0300 (EEST) Received: by mail-pj1-f52.google.com with SMTP id me1so4866768pjb.4 for ; Thu, 23 Sep 2021 10:01:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=x9XEd1jPTlHlBD6hMV5jIsv4qJ6DWSmTFIaR7dt+O7k=; b=3suWJc87LR7HCQtSjgrze1Rb+ryLqSpdxt1O/+dL22Wfy+mwDxgPwAZmakvMxdokwe 8XyYNtMNRSs7Iado6vmtliI2XXixUNF+aUYM3QiPBsw6TDXVNC9KI9zxduztkxNHmrgA UGb9xpAxWPFOdujFRB1F6UJoHCxbTZHEJTsyYZoKAJSNU44Mm9e6oj/2fDnlpcQL0/AA 4nj8wHeO9xhcqLJ7zCZSB82Ncxfa16kGmpbkkK/iyZU/SZa7RlyYGr1GiH4yqmgHq5RA DABBURW+jf0Z3A5FZBaoWdANRdVlnKfggkwuu3yaybrqSBdFYdZa8xd7v4PexVDfvQSv CU5g== X-Gm-Message-State: AOAM531ZpgXCif8MLybaoPtYU8GpV4p0/NdG/m3StF3I/l2OemgDL6Os cKBsr2W/5ocz+ZvBwBJMmhJXDkJfoyc= X-Received: by 2002:a17:90a:4290:: with SMTP id p16mr2005866pjg.112.1632416481577; Thu, 23 Sep 2021 10:01:21 -0700 (PDT) Received: from localhost (76-14-89-2.sf-cable.astound.net. [76.14.89.2]) by smtp.gmail.com with ESMTPSA id u16sm6262987pfn.68.2021.09.23.10.01.19 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 23 Sep 2021 10:01:21 -0700 (PDT) Received: by localhost (sSMTP sendmail emulation); Thu, 23 Sep 2021 10:01:12 -0700 From: pal@sandflow.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Sep 2021 10:00:38 -0700 Message-Id: <20210923170042.28903-1-pal@sandflow.com> X-Mailer: git-send-email 2.32.0.windows.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/5] [IMF demuxer] build system 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 Cc: Pierre-Anthony Lemieux Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: JOILK226rOE4 From: Pierre-Anthony Lemieux Signed-off-by: Pierre-Anthony Lemieux --- Notes: Modify the FFMPEG build system to add support for an IMF demuxer. The Interoperable Master Format (IMF) is a file-based media format for the delivery and storage of professional audio-visual masters. An IMF Composition consists of an XML playlist (the Composition Playlist) and a collection of MXF files (the Track Files). The Composition Playlist (CPL) assembles the Track Files onto a timeline, which consists of multiple tracks. The location of the Track Files referenced by the Composition Playlist is stored in one or more XML documents called Asset Maps. More details at https://www.imfug.com/explainer. The IMF standard was first introduced in 2013 and is managed by the SMPTE. MAINTAINERS | 1 + configure | 3 ++- doc/demuxers.texi | 6 ++++++ libavformat/Makefile | 2 ++ libavformat/allformats.c | 1 + 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index dcac46003e..7a6972fe1a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -433,6 +433,7 @@ Muxers/Demuxers: idroqdec.c Mike Melanson iff.c Jaikrishnan Menon img2*.c Michael Niedermayer + imf*.c Marc-Antoine Arnaud, Pierre-Anthony Lemieux, Valentin Noël ipmovie.c Mike Melanson ircam* Paul B Mahol iss.c Stefan Gehrer diff --git a/configure b/configure index 231d0398a8..c9f815296b 100755 --- a/configure +++ b/configure @@ -297,7 +297,7 @@ External library support: --enable-libxvid enable Xvid encoding via xvidcore, native MPEG-4/Xvid encoder exists [no] --enable-libxml2 enable XML parsing using the C library libxml2, needed - for dash demuxing support [no] + for dash and imf demuxing support [no] --enable-libzimg enable z.lib, needed for zscale filter [no] --enable-libzmq enable message passing via libzmq [no] --enable-libzvbi enable teletext support via libzvbi [no] @@ -3363,6 +3363,7 @@ hls_muxer_select="mpegts_muxer" hls_muxer_suggest="gcrypt openssl" image2_alias_pix_demuxer_select="image2_demuxer" image2_brender_pix_demuxer_select="image2_demuxer" +imf_demuxer_deps="libxml2" ipod_muxer_select="mov_muxer" ismv_muxer_select="mov_muxer" ivf_muxer_select="av1_metadata_bsf vp9_superframe_bsf" diff --git a/doc/demuxers.texi b/doc/demuxers.texi index 1c9575b2e8..37efe6ce1a 100644 --- a/doc/demuxers.texi +++ b/doc/demuxers.texi @@ -267,6 +267,12 @@ which streams to actually receive. Each stream mirrors the @code{id} and @code{bandwidth} properties from the @code{} as metadata keys named "id" and "variant_bitrate" respectively. +@section imf + +Interoperable Master Format demuxer. + +This demuxer presents audio and video streams found in an IMF Composition. + @section flv, live_flv, kux Adobe Flash Video Format demuxer. diff --git a/libavformat/Makefile b/libavformat/Makefile index c45caa3eed..42ced953f6 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -284,6 +284,7 @@ OBJS-$(CONFIG_IMAGE_WEBP_PIPE_DEMUXER) += img2dec.o img2.o OBJS-$(CONFIG_IMAGE_XBM_PIPE_DEMUXER) += img2dec.o img2.o OBJS-$(CONFIG_IMAGE_XPM_PIPE_DEMUXER) += img2dec.o img2.o OBJS-$(CONFIG_IMAGE_XWD_PIPE_DEMUXER) += img2dec.o img2.o +OBJS-$(CONFIG_IMF_DEMUXER) += imfdec.o imf_cpl.o OBJS-$(CONFIG_INGENIENT_DEMUXER) += ingenientdec.o rawdec.o OBJS-$(CONFIG_IPMOVIE_DEMUXER) += ipmovie.o OBJS-$(CONFIG_IPU_DEMUXER) += ipudec.o rawdec.o @@ -693,6 +694,7 @@ TESTPROGS-$(CONFIG_FFRTMPCRYPT_PROTOCOL) += rtmpdh TESTPROGS-$(CONFIG_MOV_MUXER) += movenc TESTPROGS-$(CONFIG_NETWORK) += noproxy TESTPROGS-$(CONFIG_SRTP) += srtp +TESTPROGS-$(CONFIG_IMF_DEMUXER) += imf TOOLS = aviocat \ ismindex \ diff --git a/libavformat/allformats.c b/libavformat/allformats.c index 5471f7c16f..bad4494981 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -211,6 +211,7 @@ extern const AVInputFormat ff_image2pipe_demuxer; extern const AVOutputFormat ff_image2pipe_muxer; extern const AVInputFormat ff_image2_alias_pix_demuxer; extern const AVInputFormat ff_image2_brender_pix_demuxer; +extern const AVInputFormat ff_imf_demuxer; extern const AVInputFormat ff_ingenient_demuxer; extern const AVInputFormat ff_ipmovie_demuxer; extern const AVOutputFormat ff_ipod_muxer;