This flag was added intags/n4.4492026209b
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 ine37f161e66
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>
@@ -15,6 +15,10 @@ libavutil: 2017-10-21 | |||||
API changes, most recent first: | API changes, most recent first: | ||||
2021-03-03 - xxxxxxxxxx - lavf 58.70.100 - avformat.h | |||||
Deprecate AVFMT_FLAG_PRIV_OPT. It will do nothing | |||||
as soon as av_demuxer_open() is removed. | |||||
2021-02-27 - xxxxxxxxxx - lavc 58.126.100 - avcodec.h | 2021-02-27 - xxxxxxxxxx - lavc 58.126.100 - avcodec.h | ||||
Deprecated avcodec_get_frame_class(). | Deprecated avcodec_get_frame_class(). | ||||
@@ -1379,7 +1379,9 @@ typedef struct AVFormatContext { | |||||
#define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Deprecated, does nothing. | #define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Deprecated, does nothing. | ||||
#endif | #endif | ||||
#define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down) | #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 | #if FF_API_LAVF_KEEPSIDE_FLAG | ||||
#define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000 ///< Deprecated, does nothing. | #define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000 ///< Deprecated, does nothing. | ||||
#endif | #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); | 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 | attribute_deprecated | ||||
int av_demuxer_open(AVFormatContext *ic); | int av_demuxer_open(AVFormatContext *ic); | ||||
#endif | |||||
/** | /** | ||||
* Read packets of a media file to get stream information. This | * Read packets of a media file to get stream information. This | ||||
@@ -392,6 +392,7 @@ FF_ENABLE_DEPRECATION_WARNINGS | |||||
/************************************************************/ | /************************************************************/ | ||||
/* input media file */ | /* input media file */ | ||||
#if FF_API_DEMUXER_OPEN | |||||
int av_demuxer_open(AVFormatContext *ic) { | int av_demuxer_open(AVFormatContext *ic) { | ||||
int err; | int err; | ||||
@@ -411,7 +412,7 @@ int av_demuxer_open(AVFormatContext *ic) { | |||||
return 0; | return 0; | ||||
} | } | ||||
#endif | |||||
/* Open input file and probe the format if necessary. */ | /* Open input file and probe the format if necessary. */ | ||||
static int init_input(AVFormatContext *s, const char *filename, | static int init_input(AVFormatContext *s, const char *filename, | ||||
AVDictionary **options) | AVDictionary **options) | ||||
@@ -594,8 +595,11 @@ FF_ENABLE_DEPRECATION_WARNINGS | |||||
if (s->pb) | if (s->pb) | ||||
ff_id3v2_read_dict(s->pb, &s->internal->id3v2_meta, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta); | 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) | 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) | if ((ret = s->iformat->read_header(s)) < 0) | ||||
goto fail; | goto fail; | ||||
@@ -624,7 +628,11 @@ FF_ENABLE_DEPRECATION_WARNINGS | |||||
if ((ret = avformat_queue_attached_pictures(s)) < 0) | if ((ret = avformat_queue_attached_pictures(s)) < 0) | ||||
goto close; | goto close; | ||||
#if FF_API_DEMUXER_OPEN | |||||
if (!(s->flags&AVFMT_FLAG_PRIV_OPT) && s->pb && !s->internal->data_offset) | 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->data_offset = avio_tell(s->pb); | ||||
s->internal->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE; | s->internal->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE; | ||||
@@ -32,7 +32,7 @@ | |||||
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) | // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) | ||||
// Also please add any ticket numbers that you believe might be affected here | // Also please add any ticket numbers that you believe might be affected here | ||||
#define LIBAVFORMAT_VERSION_MAJOR 58 | #define LIBAVFORMAT_VERSION_MAJOR 58 | ||||
#define LIBAVFORMAT_VERSION_MINOR 69 | |||||
#define LIBAVFORMAT_VERSION_MINOR 70 | |||||
#define LIBAVFORMAT_VERSION_MICRO 100 | #define LIBAVFORMAT_VERSION_MICRO 100 | ||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ | #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ | ||||
@@ -106,6 +106,12 @@ | |||||
#ifndef FF_API_AVIOFORMAT | #ifndef FF_API_AVIOFORMAT | ||||
#define FF_API_AVIOFORMAT (LIBAVFORMAT_VERSION_MAJOR < 59) | #define FF_API_AVIOFORMAT (LIBAVFORMAT_VERSION_MAJOR < 59) | ||||
#endif | #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 | #ifndef FF_API_R_FRAME_RATE | ||||