[FFmpeg-devel] [RFC/PATCH 1/2] lavf: add a flag for experimental (de)muxers
Lynne
dev at lynne.ee
Sun Jan 2 20:18:06 EET 2022
2 Jan 2022, 18:46 by anton at khirnov.net:
> ---
> doc/APIchanges | 3 +++
> libavformat/avformat.h | 7 +++++++
> libavformat/format.c | 2 ++
> libavformat/version.h | 2 +-
> 4 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/doc/APIchanges b/doc/APIchanges
> index 670a59329e..29c235630e 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -14,6 +14,9 @@ libavutil: 2021-04-27
>
> API changes, most recent first:
>
> +2022-01-xx - xxxxxxxxxx - lavf 59.13.100 - avformat.h
> + Add AVFMT_EXPERIMENTAL flag.
> +
> 2021-12-xx - xxxxxxxxxx - lavu 57.13.100 - hwcontext_videotoolbox.h
> Add av_vt_pixbuf_set_attachments
>
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index 70b36d7682..6ce367e854 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -463,6 +463,13 @@ typedef struct AVProbeData {
> /// Demuxer will use avio_open, no opened file should be provided by the caller.
> #define AVFMT_NOFILE 0x0001
> #define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */
> +/**
> + * The muxer/demuxer is experimental and should be used with caution.
> + *
> + * - demuxers: will not be selected automatically by probing, must be specified
> + * explicitly.
> + */
> +#define AVFMT_EXPERIMENTAL 0x0004
> #define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */
> #define AVFMT_GLOBALHEADER 0x0040 /**< Format wants global header. */
> #define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */
> diff --git a/libavformat/format.c b/libavformat/format.c
> index 387627009e..52b85c16a2 100644
> --- a/libavformat/format.c
> +++ b/libavformat/format.c
> @@ -158,6 +158,8 @@ const AVInputFormat *av_probe_input_format3(const AVProbeData *pd,
> }
>
> while ((fmt1 = av_demuxer_iterate(&i))) {
> + if (fmt1->flags & AVFMT_EXPERIMENTAL)
> + continue;
> if (!is_opened == !(fmt1->flags & AVFMT_NOFILE) && strcmp(fmt1->name, "image2"))
> continue;
> score = 0;
> diff --git a/libavformat/version.h b/libavformat/version.h
> index 917b9ffa5d..29dcce352b 100644
> --- a/libavformat/version.h
> +++ b/libavformat/version.h
> @@ -32,7 +32,7 @@
> // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
> // Also please add any ticket numbers that you believe might be affected here
> #define LIBAVFORMAT_VERSION_MAJOR 59
> -#define LIBAVFORMAT_VERSION_MINOR 12
> +#define LIBAVFORMAT_VERSION_MINOR 13
> #define LIBAVFORMAT_VERSION_MICRO 100
>
> #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
>
You should add it in libavformat/options_table.h too.
Apart from that, it looks fine. Should we move muxers previously
behind strict_std_compliance > experimental like scd behind
this flag or would that be an API breakage?
More information about the ffmpeg-devel
mailing list