[FFmpeg-devel] [PATCH 35/39] avcodec/avcodec: Avoid redundant copies of options in avcodec_open2

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Fri May 21 12:17:38 EEST 2021


It is no longer necessary now that ff_frame_thread_encoder_init()
no longer receives an options dictionary.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
 libavcodec/avcodec.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

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;
 }
 
-- 
2.27.0



More information about the ffmpeg-devel mailing list