Hi all,

Sample content is available at:

http://ffmpeg-imf-samples-public.s3-website-us-west-1.amazonaws.com/countdown/CPL_f5095caa-f204-4e1c-8a84-7af48c7ae16b.xml

Looking forward to the feedback.

Best,

-- Pierre

On Thu, Sep 23, 2021 at 10:01 AM <p...@sandflow.com> wrote:
>
> From: Pierre-Anthony Lemieux <p...@palemieux.com>
>
> Signed-off-by: Pierre-Anthony Lemieux <p...@palemieux.com>
> ---
>
> 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{<Representation>} 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;
> --
> 2.17.1
>
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to