From patchwork Fri Feb 26 17:18:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 26014 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 51CE344B899 for ; Fri, 26 Feb 2021 19:18:22 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0C83B68AA53; Fri, 26 Feb 2021 19:18:22 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C6282680901 for ; Fri, 26 Feb 2021 19:18:15 +0200 (EET) Received: by mail-wm1-f41.google.com with SMTP id u187so6089349wmg.4 for ; Fri, 26 Feb 2021 09:18:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=t23AE0KyNBSHELQHy+a2shxrn1ogUEEgZRsr7xkziaU=; b=k9i2zEFBztS+li7SlO8XQG1KIa214fw3sbh3JIOvgPdd9B37hqhdLzdkZ83AZy5pyN PIQ28qfTtN6h0t1jIBjd4Kg9+x7xOURbJDJuaKES99Kvp0zTow2rk0CMo8tOj705M5z+ FQmc5RvGcIBFwMMZx3DHjIi8JOo37ytWsnJPNKFVjdIj0dEfvNAjVPxhXfHtOwNEGAv1 KaBI4pFn7Ob3tk7KY+uvldw/LOV/sz2Kyi2tH9MDWGwGl01zyUhIpFte/N4+pLWab/2e Ks8/Se3gAX3EjiSEU10iWTVeqb7Mm8kZdigz1qqJVv7dtAXenGgdv/zkxfoaG7eJrgxj Zbtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=t23AE0KyNBSHELQHy+a2shxrn1ogUEEgZRsr7xkziaU=; b=mNXHqBkeo+zHlTy8XLAyfc5g9MZ7Wdb1WJm7QDqxsLRK7DT0HrloGW9EZiIyVpezN9 mPm7loQXJMSDnIARheTq1yQyOQhocun1eSOMGGREpqAyXz/rFFIGSd8KbSOWlQL8d4rm g3sDdweAWTYwni0162BVXymdsWbasc6Bd0llxhi5ETyU3IVYErv9pWEmZO7sgDvbl+/y vGTXJcT9eBCngqAA7nGamZg5JtTAXvK5O7LzvZvQypXM1WDmSt9s9xYF+5lR+wR6J1KJ kpELLWIg55l9TnQL9bwWWx4ag/lPcgKUM8e4GPP61YwTRR7s3NP5NkTCkU6Kc0lnUf5v yVKg== X-Gm-Message-State: AOAM530vIHDVa/FUIVipuiRrdrfTZFkEY4NKSGomMTtzSt3QKhp0dr5i tbkaUNk45vBjGsJimfYU11LuZqarVNA= X-Google-Smtp-Source: ABdhPJwYVBBfuH4/7kLzZOLUNpdGyyyirsrS79APSjVO509v5O6L+EAu9bw5p7z+gTn1AirefPzPqQ== X-Received: by 2002:a7b:c242:: with SMTP id b2mr1505460wmj.119.1614359894832; Fri, 26 Feb 2021 09:18:14 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id a6sm13819545wmj.23.2021.02.26.09.18.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Feb 2021 09:18:14 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 26 Feb 2021 18:18:08 +0100 Message-Id: <20210226171808.2297158-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210226131806.1990485-1-andreas.rheinhardt@gmail.com> References: <20210226131806.1990485-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/6] avformat: Deprecate AVFMT_FLAG_PRIV_OPT, remove av_demuxer_open on bump X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 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 --- 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