Message ID | 20210226171808.2297158-1-andreas.rheinhardt@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [FFmpeg-devel,1/5] fftools/ffmpeg_filter: Don't use deprecated function | expand |
Context | Check | Description |
---|---|---|
andriy/x86_make | success | Make finished |
andriy/x86_make_fate | success | Make fate finished |
andriy/PPC64_make | success | Make finished |
andriy/PPC64_make_fate | success | Make fate finished |
Andreas Rheinhardt: > This flag was added in 492026209b9b58eaf6d2ea56423f6b1e1a8a76a5 > in conjunction with av_demuxer_open() to allow to pass private > options to demuxers. It worked as follows: av_open_input_stream() > (the predecessor of avformat_open_input()) would not call the > read_header function if this flag is set. Instead the user could set > private options of the demuxer via the format's private class after > avformat_open_input() and then call av_demuxer_open() which called > the format's read_header function. > > This approach was abandoned in e37f161e66e042d6c2c7470c4d9881df9427fc4a > and av_demuxer_open() deprecated; instead the AVDictionary based way of > passing private options to the demuxer was choosen. Yet > AVFMT_FLAG_PRIV_OPT has never been deprecated and av_demuxer_open() > never removed. This commit implements the deprecation of the flag and > schedules av_demuxer_open for removal on the next major bump. > Given that av_demuxer_open() has been deprecated in 2012 and that this > flag is useless without it, the flag will be ignored after the next > major version bump. > > Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> > --- > doc/APIchanges | 4 ++++ > libavformat/avformat.h | 9 ++++++++- > libavformat/utils.c | 12 ++++++++++-- > libavformat/version.h | 8 +++++++- > 4 files changed, 29 insertions(+), 4 deletions(-) > > diff --git a/doc/APIchanges b/doc/APIchanges > index 33be750af2..baa2b24daf 100644 > --- a/doc/APIchanges > +++ b/doc/APIchanges > @@ -15,6 +15,10 @@ libavutil: 2017-10-21 > > API changes, most recent first: > > +2021-02-26 - xxxxxxxxxx - lavf 58.69.100 - avformat.h > + Deprecate AVFMT_FLAG_PRIV_OPT. It will do nothing > + as soon as av_demuxer_open() is removed. > + > 2021-02-21 - xxxxxxxxxx - lavu 56.66.100 - tx.h > Add enum AVTXFlags and AVTXFlags.AV_TX_INPLACE > > diff --git a/libavformat/avformat.h b/libavformat/avformat.h > index 41482328f6..7da2f3d98e 100644 > --- a/libavformat/avformat.h > +++ b/libavformat/avformat.h > @@ -1379,7 +1379,9 @@ typedef struct AVFormatContext { > #define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Deprecated, does nothing. > #endif > #define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down) > -#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted) > +#if FF_API_LAVF_PRIV_OPT > +#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (deprecated, will do nothing once av_demuxer_open() is removed) > +#endif > #if FF_API_LAVF_KEEPSIDE_FLAG > #define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000 ///< Deprecated, does nothing. > #endif > @@ -2210,8 +2212,13 @@ int av_probe_input_buffer(AVIOContext *pb, ff_const59 AVInputFormat **fmt, > */ > int avformat_open_input(AVFormatContext **ps, const char *url, ff_const59 AVInputFormat *fmt, AVDictionary **options); > > +#if FF_API_DEMUXER_OPEN > +/** > + * @deprecated Use an AVDictionary to pass options to a demuxer. > + */ > attribute_deprecated > int av_demuxer_open(AVFormatContext *ic); > +#endif > > /** > * Read packets of a media file to get stream information. This > diff --git a/libavformat/utils.c b/libavformat/utils.c > index 6e92bd777a..36164e0f0d 100644 > --- a/libavformat/utils.c > +++ b/libavformat/utils.c > @@ -392,6 +392,7 @@ FF_ENABLE_DEPRECATION_WARNINGS > /************************************************************/ > /* input media file */ > > +#if FF_API_DEMUXER_OPEN > int av_demuxer_open(AVFormatContext *ic) { > int err; > > @@ -411,7 +412,7 @@ int av_demuxer_open(AVFormatContext *ic) { > > return 0; > } > - > +#endif > /* Open input file and probe the format if necessary. */ > static int init_input(AVFormatContext *s, const char *filename, > AVDictionary **options) > @@ -594,8 +595,11 @@ FF_ENABLE_DEPRECATION_WARNINGS > if (s->pb) > ff_id3v2_read_dict(s->pb, &s->internal->id3v2_meta, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta); > > - > +#if FF_API_DEMUXER_OPEN > if (!(s->flags&AVFMT_FLAG_PRIV_OPT) && s->iformat->read_header) > +#else > + if (s->iformat->read_header) > +#endif > if ((ret = s->iformat->read_header(s)) < 0) > goto fail; > > @@ -624,7 +628,11 @@ FF_ENABLE_DEPRECATION_WARNINGS > if ((ret = avformat_queue_attached_pictures(s)) < 0) > goto close; > > +#if FF_API_DEMUXER_OPEN > if (!(s->flags&AVFMT_FLAG_PRIV_OPT) && s->pb && !s->internal->data_offset) > +#else > + if (s->pb && !s->internal->data_offset) > +#endif > s->internal->data_offset = avio_tell(s->pb); > > s->internal->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE; > diff --git a/libavformat/version.h b/libavformat/version.h > index c11d885b83..7d16c4d6a5 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 58 > -#define LIBAVFORMAT_VERSION_MINOR 68 > +#define LIBAVFORMAT_VERSION_MINOR 69 > #define LIBAVFORMAT_VERSION_MICRO 100 > > #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ > @@ -106,6 +106,12 @@ > #ifndef FF_API_AVIOFORMAT > #define FF_API_AVIOFORMAT (LIBAVFORMAT_VERSION_MAJOR < 59) > #endif > +#ifndef FF_API_DEMUXER_OPEN > +#define FF_API_DEMUXER_OPEN (LIBAVFORMAT_VERSION_MAJOR < 59) > +#endif > +#ifndef FF_API_LAVF_PRIV_OPT > +#define FF_API_LAVF_PRIV_OPT (LIBAVFORMAT_VERSION_MAJOR < 60) > +#endif > > > #ifndef FF_API_R_FRAME_RATE > Will apply this patch tomorrow unless there are objections. - Andreas
diff --git a/doc/APIchanges b/doc/APIchanges index 33be750af2..baa2b24daf 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,10 @@ libavutil: 2017-10-21 API changes, most recent first: +2021-02-26 - xxxxxxxxxx - lavf 58.69.100 - avformat.h + Deprecate AVFMT_FLAG_PRIV_OPT. It will do nothing + as soon as av_demuxer_open() is removed. + 2021-02-21 - xxxxxxxxxx - lavu 56.66.100 - tx.h Add enum AVTXFlags and AVTXFlags.AV_TX_INPLACE diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 41482328f6..7da2f3d98e 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1379,7 +1379,9 @@ typedef struct AVFormatContext { #define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Deprecated, does nothing. #endif #define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down) -#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted) +#if FF_API_LAVF_PRIV_OPT +#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (deprecated, will do nothing once av_demuxer_open() is removed) +#endif #if FF_API_LAVF_KEEPSIDE_FLAG #define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000 ///< Deprecated, does nothing. #endif @@ -2210,8 +2212,13 @@ int av_probe_input_buffer(AVIOContext *pb, ff_const59 AVInputFormat **fmt, */ int avformat_open_input(AVFormatContext **ps, const char *url, ff_const59 AVInputFormat *fmt, AVDictionary **options); +#if FF_API_DEMUXER_OPEN +/** + * @deprecated Use an AVDictionary to pass options to a demuxer. + */ attribute_deprecated int av_demuxer_open(AVFormatContext *ic); +#endif /** * Read packets of a media file to get stream information. This diff --git a/libavformat/utils.c b/libavformat/utils.c index 6e92bd777a..36164e0f0d 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -392,6 +392,7 @@ FF_ENABLE_DEPRECATION_WARNINGS /************************************************************/ /* input media file */ +#if FF_API_DEMUXER_OPEN int av_demuxer_open(AVFormatContext *ic) { int err; @@ -411,7 +412,7 @@ int av_demuxer_open(AVFormatContext *ic) { return 0; } - +#endif /* Open input file and probe the format if necessary. */ static int init_input(AVFormatContext *s, const char *filename, AVDictionary **options) @@ -594,8 +595,11 @@ FF_ENABLE_DEPRECATION_WARNINGS if (s->pb) ff_id3v2_read_dict(s->pb, &s->internal->id3v2_meta, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta); - +#if FF_API_DEMUXER_OPEN if (!(s->flags&AVFMT_FLAG_PRIV_OPT) && s->iformat->read_header) +#else + if (s->iformat->read_header) +#endif if ((ret = s->iformat->read_header(s)) < 0) goto fail; @@ -624,7 +628,11 @@ FF_ENABLE_DEPRECATION_WARNINGS if ((ret = avformat_queue_attached_pictures(s)) < 0) goto close; +#if FF_API_DEMUXER_OPEN if (!(s->flags&AVFMT_FLAG_PRIV_OPT) && s->pb && !s->internal->data_offset) +#else + if (s->pb && !s->internal->data_offset) +#endif s->internal->data_offset = avio_tell(s->pb); s->internal->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE; diff --git a/libavformat/version.h b/libavformat/version.h index c11d885b83..7d16c4d6a5 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 58 -#define LIBAVFORMAT_VERSION_MINOR 68 +#define LIBAVFORMAT_VERSION_MINOR 69 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ @@ -106,6 +106,12 @@ #ifndef FF_API_AVIOFORMAT #define FF_API_AVIOFORMAT (LIBAVFORMAT_VERSION_MAJOR < 59) #endif +#ifndef FF_API_DEMUXER_OPEN +#define FF_API_DEMUXER_OPEN (LIBAVFORMAT_VERSION_MAJOR < 59) +#endif +#ifndef FF_API_LAVF_PRIV_OPT +#define FF_API_LAVF_PRIV_OPT (LIBAVFORMAT_VERSION_MAJOR < 60) +#endif #ifndef FF_API_R_FRAME_RATE
This flag was added in 492026209b9b58eaf6d2ea56423f6b1e1a8a76a5 in conjunction with av_demuxer_open() to allow to pass private options to demuxers. It worked as follows: av_open_input_stream() (the predecessor of avformat_open_input()) would not call the read_header function if this flag is set. Instead the user could set private options of the demuxer via the format's private class after avformat_open_input() and then call av_demuxer_open() which called the format's read_header function. This approach was abandoned in e37f161e66e042d6c2c7470c4d9881df9427fc4a and av_demuxer_open() deprecated; instead the AVDictionary based way of passing private options to the demuxer was choosen. Yet AVFMT_FLAG_PRIV_OPT has never been deprecated and av_demuxer_open() never removed. This commit implements the deprecation of the flag and schedules av_demuxer_open for removal on the next major bump. Given that av_demuxer_open() has been deprecated in 2012 and that this flag is useless without it, the flag will be ignored after the next major version bump. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> --- doc/APIchanges | 4 ++++ libavformat/avformat.h | 9 ++++++++- libavformat/utils.c | 12 ++++++++++-- libavformat/version.h | 8 +++++++- 4 files changed, 29 insertions(+), 4 deletions(-)