Skip to content
Snippets Groups Projects
Commit 04fc8e24 authored by Anton Khirnov's avatar Anton Khirnov
Browse files

lavc: deprecate avcodec_get_context_defaults3()

This function is supposed to "reset" a codec context to a clean state so
that it can be opened again. The only reason it exists is to allow using
AVStream.codec as a decoding context (after it was already
opened/used/closed by avformat_find_stream_info()). Since that behaviour
is now deprecated, there is no reason for this function to exist
anymore.
parent 5f30ac27
No related branches found
No related tags found
No related merge requests found
......@@ -3619,7 +3619,6 @@ void avcodec_register_all(void);
* important mainly for encoders, e.g. libx264).
*
* @return An AVCodecContext filled with default values or NULL on failure.
* @see avcodec_get_context_defaults
*/
AVCodecContext *avcodec_alloc_context3(const AVCodec *codec);
......@@ -3629,16 +3628,14 @@ AVCodecContext *avcodec_alloc_context3(const AVCodec *codec);
*/
void avcodec_free_context(AVCodecContext **avctx);
#if FF_API_GET_CONTEXT_DEFAULTS
/**
* Set the fields of the given AVCodecContext to default values corresponding
* to the given codec (defaults may be codec-dependent).
*
* Do not call this function if a non-NULL codec has been passed
* to avcodec_alloc_context3() that allocated this AVCodecContext.
* If codec is non-NULL, it is illegal to call avcodec_open2() with a
* different codec on this AVCodecContext.
* @deprecated This function should not be used, as closing and opening a codec
* context multiple time is not supported. A new codec context should be
* allocated for each new use.
*/
int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec);
#endif
/**
* Get the AVClass for AVCodecContext. It can be used in combination with
......@@ -3741,9 +3738,8 @@ int avcodec_parameters_to_context(AVCodecContext *codec,
* @param avctx The context to initialize.
* @param codec The codec to open this context for. If a non-NULL codec has been
* previously passed to avcodec_alloc_context3() or
* avcodec_get_context_defaults3() for this context, then this
* parameter MUST be either NULL or equal to the previously passed
* codec.
* for this context, then this parameter MUST be either NULL or
* equal to the previously passed codec.
* @param options A dictionary filled with AVCodecContext and codec-private options.
* On return this object will be filled with options that were not found.
*
......@@ -3758,9 +3754,8 @@ int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **op
* (but not the AVCodecContext itself).
*
* Calling this function on an AVCodecContext that hasn't been opened will free
* the codec-specific data allocated in avcodec_alloc_context3() /
* avcodec_get_context_defaults3() with a non-NULL codec. Subsequent calls will
* do nothing.
* the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL
* codec. Subsequent calls will do nothing.
*/
int avcodec_close(AVCodecContext *avctx);
......
......@@ -80,7 +80,7 @@ static const AVClass av_codec_context_class = {
.child_class_next = codec_child_class_next,
};
int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec)
static int init_context_defaults(AVCodecContext *s, const AVCodec *codec)
{
memset(s, 0, sizeof(AVCodecContext));
......@@ -125,6 +125,13 @@ int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec)
return 0;
}
#if FF_API_GET_CONTEXT_DEFAULTS
int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec)
{
return init_context_defaults(s, codec);
}
#endif
AVCodecContext *avcodec_alloc_context3(const AVCodec *codec)
{
AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext));
......@@ -132,7 +139,7 @@ AVCodecContext *avcodec_alloc_context3(const AVCodec *codec)
if (!avctx)
return NULL;
if(avcodec_get_context_defaults3(avctx, codec) < 0){
if (init_context_defaults(avctx, codec) < 0) {
av_free(avctx);
return NULL;
}
......
......@@ -203,5 +203,8 @@
#ifndef FF_API_COPY_CONTEXT
#define FF_API_COPY_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59)
#endif
#ifndef FF_API_GET_CONTEXT_DEFAULTS
#define FF_API_GET_CONTEXT_DEFAULTS (LIBAVCODEC_VERSION_MAJOR < 59)
#endif
#endif /* AVCODEC_VERSION_H */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment