From: Anton Khirnov <anton@khirnov.net>
To: ffmpeg-devel@ffmpeg.org
Subject: [FFmpeg-devel] [PATCH 4/4] lavc: deprecate avcodec_close()
Date: Thu, 1 Feb 2024 09:29:38 +0100
Message-ID: <20240201082938.16687-4-anton@khirnov.net> (raw)
In-Reply-To: <20240201082938.16687-1-anton@khirnov.net>
Its use has been discouraged since 2016, but now is no longer used in
avformat, so there is no reason to keep it public.
---
libavcodec/avcodec.c | 12 +++++++++---
libavcodec/avcodec.h | 5 ++++-
libavcodec/avcodec_internal.h | 2 ++
libavcodec/frame_thread_encoder.c | 5 +++--
libavcodec/options.c | 3 ++-
libavcodec/version_major.h | 1 +
6 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
index a6c8629f6c..b6d27ada21 100644
--- a/libavcodec/avcodec.c
+++ b/libavcodec/avcodec.c
@@ -377,7 +377,7 @@ end:
return ret;
free_and_end:
- avcodec_close(avctx);
+ ff_codec_close(avctx);
goto end;
}
@@ -432,12 +432,12 @@ void avsubtitle_free(AVSubtitle *sub)
memset(sub, 0, sizeof(*sub));
}
-av_cold int avcodec_close(AVCodecContext *avctx)
+av_cold void ff_codec_close(AVCodecContext *avctx)
{
int i;
if (!avctx)
- return 0;
+ return;
if (avcodec_is_open(avctx)) {
AVCodecInternal *avci = avctx->internal;
@@ -497,9 +497,15 @@ av_cold int avcodec_close(AVCodecContext *avctx)
avctx->codec = NULL;
avctx->active_thread_type = 0;
+}
+#if FF_API_AVCODEC_CLOSE
+int avcodec_close(AVCodecContext *avctx)
+{
+ ff_codec_close(avctx);
return 0;
}
+#endif
static const char *unknown_if_null(const char *str)
{
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 7fb44e28f4..0018ccbb0c 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -2411,6 +2411,7 @@ int avcodec_parameters_to_context(AVCodecContext *codec,
*/
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
+#if FF_API_AVCODEC_CLOSE
/**
* Close a given AVCodecContext and free all the data associated with it
* (but not the AVCodecContext itself).
@@ -2419,12 +2420,14 @@ int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **op
* the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL
* codec. Subsequent calls will do nothing.
*
- * @note Do not use this function. Use avcodec_free_context() to destroy a
+ * @deprecated Do not use this function. Use avcodec_free_context() to destroy a
* codec context (either open or closed). Opening and closing a codec context
* multiple times is not supported anymore -- use multiple codec contexts
* instead.
*/
+attribute_deprecated
int avcodec_close(AVCodecContext *avctx);
+#endif
/**
* Free all allocated data in the given subtitle struct.
diff --git a/libavcodec/avcodec_internal.h b/libavcodec/avcodec_internal.h
index 9b93ff3d81..4d1cb3a314 100644
--- a/libavcodec/avcodec_internal.h
+++ b/libavcodec/avcodec_internal.h
@@ -56,4 +56,6 @@ void ff_encode_flush_buffers(struct AVCodecContext *avctx);
struct AVCodecInternal *ff_decode_internal_alloc(void);
struct AVCodecInternal *ff_encode_internal_alloc(void);
+void ff_codec_close(struct AVCodecContext *avctx);
+
#endif // AVCODEC_AVCODEC_INTERNAL_H
diff --git a/libavcodec/frame_thread_encoder.c b/libavcodec/frame_thread_encoder.c
index 62d9580ad4..cda5158117 100644
--- a/libavcodec/frame_thread_encoder.c
+++ b/libavcodec/frame_thread_encoder.c
@@ -27,6 +27,7 @@
#include "libavutil/opt.h"
#include "libavutil/thread.h"
#include "avcodec.h"
+#include "avcodec_internal.h"
#include "encode.h"
#include "internal.h"
#include "pthread_internal.h"
@@ -110,7 +111,7 @@ static void * attribute_align_arg worker(void *v){
pthread_mutex_unlock(&c->finished_task_mutex);
}
end:
- avcodec_close(avctx);
+ ff_codec_close(avctx);
av_freep(&avctx);
return NULL;
}
@@ -230,7 +231,7 @@ av_cold int ff_frame_thread_encoder_init(AVCodecContext *avctx)
return 0;
fail:
- avcodec_close(thread_avctx);
+ ff_codec_close(thread_avctx);
av_freep(&thread_avctx);
avctx->thread_count = i;
av_log(avctx, AV_LOG_ERROR, "ff_frame_thread_encoder_init failed\n");
diff --git a/libavcodec/options.c b/libavcodec/options.c
index a9b35ee1c3..05a355fb45 100644
--- a/libavcodec/options.c
+++ b/libavcodec/options.c
@@ -27,6 +27,7 @@
#include "config_components.h"
#include "avcodec.h"
+#include "avcodec_internal.h"
#include "codec_internal.h"
#include "libavutil/avassert.h"
#include "libavutil/internal.h"
@@ -172,7 +173,7 @@ void avcodec_free_context(AVCodecContext **pavctx)
if (!avctx)
return;
- avcodec_close(avctx);
+ ff_codec_close(avctx);
av_freep(&avctx->extradata);
av_freep(&avctx->subtitle_header);
diff --git a/libavcodec/version_major.h b/libavcodec/version_major.h
index b9164fe5c6..45209c0a4f 100644
--- a/libavcodec/version_major.h
+++ b/libavcodec/version_major.h
@@ -52,6 +52,7 @@
#define FF_API_AVFFT (LIBAVCODEC_VERSION_MAJOR < 62)
#define FF_API_FF_PROFILE_LEVEL (LIBAVCODEC_VERSION_MAJOR < 62)
+#define FF_API_AVCODEC_CLOSE (LIBAVCODEC_VERSION_MAJOR < 62)
// reminder to remove CrystalHD decoders on next major bump
#define FF_CODEC_CRYSTAL_HD (LIBAVCODEC_VERSION_MAJOR < 61)
--
2.42.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
prev parent reply other threads:[~2024-02-01 8:30 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-01 8:29 [FFmpeg-devel] [PATCH 1/4] lavf/mpegts: drop a cargo-culted check Anton Khirnov
2024-02-01 8:29 ` [FFmpeg-devel] [PATCH 2/4] lavf/flacdec: stop accessing FFStream.avctx Anton Khirnov
2024-02-01 8:29 ` [FFmpeg-devel] [PATCH 3/4] lavf/demux: stop calling avcodec_close() Anton Khirnov
2024-02-03 2:35 ` Leo Izen
2024-02-05 16:59 ` Anton Khirnov
2024-02-03 3:13 ` James Almer
2024-02-05 17:03 ` [FFmpeg-devel] [PATCH v2 " Anton Khirnov
2024-02-01 8:29 ` Anton Khirnov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240201082938.16687-4-anton@khirnov.net \
--to=anton@khirnov.net \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git