Message ID | 20220102174605.2438-1-anton@khirnov.net |
---|---|
State | Accepted |
Commit | be97d2a825a12c9c01a61b985d44eb7424628fd6 |
Headers | show |
Series | [FFmpeg-devel,RFC/PATCH,1/2] lavf: add a flag for experimental (de)muxers | expand |
Context | Check | Description |
---|---|---|
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_ppc | success | Make finished |
andriy/make_fate_ppc | fail | Make fate failed |
2 Jan 2022, 18:46 by anton@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?
On Sun, Jan 02, 2022 at 06:46:04PM +0100, Anton Khirnov wrote: > --- > doc/APIchanges | 3 +++ > libavformat/avformat.h | 7 +++++++ > libavformat/format.c | 2 ++ > libavformat/version.h | 2 +- > 4 files changed, 13 insertions(+), 1 deletion(-) patchset LGTM thx [...]
Lynne: > 2 Jan 2022, 18:46 by anton@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. This is not a new AVFMT_FLAG_* value, but an AVFMT_* value (akin to a codec cap). > 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? What (de)muxers (scd is a demuxer) would that be besides scd? - Andreas
Quoting Michael Niedermayer (2022-01-02 23:45:19) > On Sun, Jan 02, 2022 at 06:46:04PM +0100, Anton Khirnov wrote: > > --- > > doc/APIchanges | 3 +++ > > libavformat/avformat.h | 7 +++++++ > > libavformat/format.c | 2 ++ > > libavformat/version.h | 2 +- > > 4 files changed, 13 insertions(+), 1 deletion(-) > > patchset LGTM pushed
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, \