diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index 6f61ae246d..a65109e799 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -135,7 +135,6 @@ static int64_t get_bit_rate(AVCodecContext *ctx) int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options) { int ret = 0; - AVDictionary *tmp = NULL; AVCodecInternal *avci; if (avcodec_is_open(avctx)) @@ -168,9 +167,6 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code if (avctx->extradata_size < 0 || avctx->extradata_size >= FF_MAX_EXTRADATA_SIZE) return AVERROR(EINVAL); - if (options) - av_dict_copy(&tmp, *options, 0); - lock_avcodec(codec); avci = av_mallocz(sizeof(*avci)); @@ -207,12 +203,12 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code av_opt_set_defaults(avctx->priv_data); } } - if (codec->priv_class && (ret = av_opt_set_dict(avctx->priv_data, &tmp)) < 0) + if (codec->priv_class && (ret = av_opt_set_dict(avctx->priv_data, options)) < 0) goto free_and_end; } else { avctx->priv_data = NULL; } - if ((ret = av_opt_set_dict(avctx, &tmp)) < 0) + if ((ret = av_opt_set_dict(avctx, options)) < 0) goto free_and_end; if (avctx->codec_whitelist && av_match_list(codec->name, avctx->codec_whitelist, ',') <= 0) { @@ -372,15 +368,11 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code end: unlock_avcodec(codec); - if (options) { - av_dict_free(options); - *options = tmp; - } return ret; free_and_end: avcodec_close(avctx); - av_dict_free(&tmp); + av_dict_free(options); goto end; }