Anton Khirnov: > The only potentially unsafe operation is the codec-specific init > function. > --- > libavcodec/utils.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/libavcodec/utils.c b/libavcodec/utils.c > index e0f6234bd7..952adb5277 100644 > --- a/libavcodec/utils.c > +++ b/libavcodec/utils.c > @@ -570,8 +570,6 @@ int attribute_align_arg avcodec_open2(AVCodecContext > *avctx, const AVCodec *code > if (options) > av_dict_copy(&tmp, *options, 0); > > - lock_avcodec(codec); > - > avci = av_mallocz(sizeof(*avci)); > if (!avci) { > ret = AVERROR(ENOMEM); > @@ -723,9 +721,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext > *avctx, const AVCodec *code > av_log(avctx, AV_LOG_WARNING, "Warning: not compiled with thread > support, using thread emulation\n"); > > if (CONFIG_FRAME_THREAD_ENCODER && av_codec_is_encoder(avctx->codec)) { > - unlock_avcodec(codec); //we will instantiate a few encoders thus > kick the counter to prevent false detection of a problem > ret = ff_frame_thread_encoder_init(avctx, options ? *options : NULL); > - lock_avcodec(codec); > if (ret < 0) > goto free_and_end; > } > @@ -749,7 +745,9 @@ int attribute_align_arg avcodec_open2(AVCodecContext > *avctx, const AVCodec *code > > if ( avctx->codec->init && > (!(avctx->active_thread_type&FF_THREAD_FRAME) > || avci->frame_thread_encoder)) { > + lock_avcodec(codec); > ret = avctx->codec->init(avctx); > + unlock_avcodec(codec); > if (ret < 0) { > codec_init_ok = -1; > goto free_and_end; > @@ -834,7 +832,6 @@ int attribute_align_arg avcodec_open2(AVCodecContext > *avctx, const AVCodec *code > } > > end: > - unlock_avcodec(codec); > if (options) { > av_dict_free(options); > *options = tmp; > ff_frame_thread_init also calls codec->init directly.
- Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".