[FFmpeg-devel] [PATCH] lavc/utils: remove unnecessary locking

Hendrik Leppkes h.leppkes at gmail.com
Fri Dec 8 10:49:25 EET 2017


On Fri, Dec 8, 2017 at 6:09 AM, Rostislav Pehlivanov
<atomnuker at gmail.com> wrote:
> Its already done by lockmgr.
>
> Signed-off-by: Rostislav Pehlivanov <atomnuker at gmail.com>
> ---
>  libavcodec/utils.c | 6 ------
>  1 file changed, 6 deletions(-)
>
> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> index baf09119fe..796d24dcbb 100644
> --- a/libavcodec/utils.c
> +++ b/libavcodec/utils.c
> @@ -115,7 +115,6 @@ static int (*lockmgr_cb)(void **mutex, enum AVLockOp op) = NULL;
>  #endif
>
>
> -static atomic_bool ff_avcodec_locked;
>  static atomic_int entangled_thread_counter = ATOMIC_VAR_INIT(0);
>  static void *codec_mutex;
>  static void *avformat_mutex;
> @@ -1943,7 +1942,6 @@ int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op))
>
>  int ff_lock_avcodec(AVCodecContext *log_ctx, const AVCodec *codec)
>  {
> -    _Bool exp = 0;
>      if (codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE || !codec->init)
>          return 0;
>
> @@ -1959,21 +1957,17 @@ int ff_lock_avcodec(AVCodecContext *log_ctx, const AVCodec *codec)
>                 atomic_load(&entangled_thread_counter));
>          if (!lockmgr_cb)
>              av_log(log_ctx, AV_LOG_ERROR, "No lock manager is set, please see av_lockmgr_register()\n");
> -        atomic_store(&ff_avcodec_locked, 1);
>          ff_unlock_avcodec(codec);
>          return AVERROR(EINVAL);
>      }
> -    av_assert0(atomic_compare_exchange_strong(&ff_avcodec_locked, &exp, 1));
>      return 0;
>  }
>
>  int ff_unlock_avcodec(const AVCodec *codec)
>  {
> -    _Bool exp = 1;
>      if (codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE || !codec->init)
>          return 0;
>
> -    av_assert0(atomic_compare_exchange_strong(&ff_avcodec_locked, &exp, 0));
>      atomic_fetch_add(&entangled_thread_counter, -1);
>      if (lockmgr_cb) {
>          if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_RELEASE))
> --
> 2.15.1.424.g9478a66081
>

These variables never performed any locking, they only existed as a
sanity check that lock/unlock is always called in pairs. If that is
really required is up for discussion.

- Hendrik


More information about the ffmpeg-devel mailing list