diff mbox series

[FFmpeg-devel,1/5,IMF,demuxer] build system

Message ID 20210923170042.28903-1-pal@sandflow.com
State New
Headers show
Series [FFmpeg-devel,1/5,IMF,demuxer] build system
Related show

Checks

Context Check Description
andriy/commit_msg_x86 warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/commit_msg_ppc warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

Pierre-Anthony Lemieux Sept. 23, 2021, 5 p.m. UTC
From: Pierre-Anthony Lemieux <pal@palemieux.com>

Signed-off-by: Pierre-Anthony Lemieux <pal@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(-)

Comments

Pierre-Anthony Lemieux Sept. 23, 2021, 5:14 p.m. UTC | #1
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 <pal@sandflow.com> wrote:
>
> From: Pierre-Anthony Lemieux <pal@palemieux.com>
>
> Signed-off-by: Pierre-Anthony Lemieux <pal@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
>
Timo Rothenpieler Sept. 23, 2021, 6:06 p.m. UTC | #2
On 23/09/2021 19:00, pal@sandflow.com wrote:
> From: Pierre-Anthony Lemieux <pal@palemieux.com>
> 
> Signed-off-by: Pierre-Anthony Lemieux <pal@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

This commit does not contain those files, and thus will fail to compile.
Every commit individually has to compile and pass fate.

Just add the necessary bits to build along with the code itself.

>   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;
>
Pierre-Anthony Lemieux Sept. 23, 2021, 6:13 p.m. UTC | #3
Hi Timo,

> Every commit individually has to compile and pass fate.

Ok. This will reduce the number of patches.

Best,

-- Pierre

On Thu, Sep 23, 2021 at 11:07 AM Timo Rothenpieler
<timo@rothenpieler.org> wrote:
>
> On 23/09/2021 19:00, pal@sandflow.com wrote:
> > From: Pierre-Anthony Lemieux <pal@palemieux.com>
> >
> > Signed-off-by: Pierre-Anthony Lemieux <pal@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
>
> This commit does not contain those files, and thus will fail to compile.
> Every commit individually has to compile and pass fate.
>
> Just add the necessary bits to build along with the code itself.
>
> >   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;
> >
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Pierre-Anthony Lemieux Sept. 23, 2021, 7:32 p.m. UTC | #4
I have reordered the patches so that each patch individually compiles,
when applied in order.

Let me know if this does not work.

Best,

-- Pierre

On Thu, Sep 23, 2021 at 11:13 AM Pierre-Anthony Lemieux
<pal@sandflow.com> wrote:
>
> Hi Timo,
>
> > Every commit individually has to compile and pass fate.
>
> Ok. This will reduce the number of patches.
>
> Best,
>
> -- Pierre
>
> On Thu, Sep 23, 2021 at 11:07 AM Timo Rothenpieler
> <timo@rothenpieler.org> wrote:
> >
> > On 23/09/2021 19:00, pal@sandflow.com wrote:
> > > From: Pierre-Anthony Lemieux <pal@palemieux.com>
> > >
> > > Signed-off-by: Pierre-Anthony Lemieux <pal@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
> >
> > This commit does not contain those files, and thus will fail to compile.
> > Every commit individually has to compile and pass fate.
> >
> > Just add the necessary bits to build along with the code itself.
> >
> > >   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;
> > >
> > _______________________________________________
> > ffmpeg-devel mailing list
> > ffmpeg-devel@ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> > To unsubscribe, visit link above, or email
> > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox series

Patch

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;