X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Foptions.c;h=765bcb7730f7a9333bab9b5e02b8c8caf578069b;hb=a2ca8ed903b435446031a8a0792ca535e6ee2913;hp=49c8aea030436e7f213b9c0ab41417c0141605ca;hpb=059a934806d61f7af9ab3fd9f74994b838ea5eba;p=ffmpeg diff --git a/libavcodec/options.c b/libavcodec/options.c index 49c8aea0304..765bcb7730f 100644 --- a/libavcodec/options.c +++ b/libavcodec/options.c @@ -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)); @@ -98,6 +98,7 @@ int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec) s->execute2 = avcodec_default_execute2; s->sample_aspect_ratio = (AVRational){0,1}; s->pix_fmt = AV_PIX_FMT_NONE; + s->sw_pix_fmt = AV_PIX_FMT_NONE; s->sample_fmt = AV_SAMPLE_FMT_NONE; s->reordered_opaque = AV_NOPTS_VALUE; @@ -125,6 +126,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 +140,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; } @@ -155,6 +163,7 @@ void avcodec_free_context(AVCodecContext **pavctx) av_freep(pavctx); } +#if FF_API_COPY_CONTEXT int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src) { const AVCodec *orig_codec = dest->codec; @@ -182,16 +191,7 @@ int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src) dest->inter_matrix = NULL; dest->rc_override = NULL; dest->subtitle_header = NULL; -#if FF_API_MPV_OPT - FF_DISABLE_DEPRECATION_WARNINGS - dest->rc_eq = NULL; - if (src->rc_eq) { - dest->rc_eq = av_strdup(src->rc_eq); - if (!dest->rc_eq) - return AVERROR(ENOMEM); - } - FF_ENABLE_DEPRECATION_WARNINGS -#endif + dest->hw_frames_ctx = NULL; #define alloc_and_copy_or_fail(obj, size, pad) \ if (src->obj && size > 0) { \ @@ -211,20 +211,24 @@ int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src) dest->subtitle_header_size = src->subtitle_header_size; #undef alloc_and_copy_or_fail + if (src->hw_frames_ctx) { + dest->hw_frames_ctx = av_buffer_ref(src->hw_frames_ctx); + if (!dest->hw_frames_ctx) + goto fail; + } + return 0; fail: + av_freep(&dest->subtitle_header); av_freep(&dest->rc_override); av_freep(&dest->intra_matrix); av_freep(&dest->inter_matrix); av_freep(&dest->extradata); -#if FF_API_MPV_OPT - FF_DISABLE_DEPRECATION_WARNINGS - av_freep(&dest->rc_eq); - FF_ENABLE_DEPRECATION_WARNINGS -#endif + av_buffer_unref(&dest->hw_frames_ctx); return AVERROR(ENOMEM); } +#endif const AVClass *avcodec_get_class(void) {