On 01/10/15 16:36, Derek Buitenhuis wrote:
> Signed-off-by: Derek Buitenhuis <[email protected]>
> ---
>  libavcodec/utils.c | 38 +++++++++++++++++++++-----------------
>  1 file changed, 21 insertions(+), 17 deletions(-)
> 
> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> index 1721c09..586e7be 100644
> --- a/libavcodec/utils.c
> +++ b/libavcodec/utils.c
> @@ -845,20 +845,21 @@ int attribute_align_arg avcodec_open2(AVCodecContext 
> *avctx, const AVCodec *code
>          av_dict_copy(&tmp, *options, 0);
>  
>      /* If there is a user-supplied mutex locking routine, call it. */
> -    if (lockmgr_cb) {
> -        if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_OBTAIN))
> -            return -1;
> -    }
> +    if (codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE) {
> +        if (lockmgr_cb) {
> +            if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_OBTAIN))
> +                return -1;
> +        }
>  
> -    entangled_thread_counter++;
> -    if (entangled_thread_counter != 1 &&
> -        !(codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE)) {
> -        av_log(avctx, AV_LOG_ERROR,
> -               "Insufficient thread locking. At least %d threads are "
> -               "calling avcodec_open2() at the same time right now.\n",
> -               entangled_thread_counter);
> -        ret = -1;
> -        goto end;
> +        entangled_thread_counter++;
> +        if (entangled_thread_counter != 1) {
> +            av_log(avctx, AV_LOG_ERROR,
> +                   "Insufficient thread locking. At least %d threads are "
> +                   "calling avcodec_open2() at the same time right now.\n",
> +                   entangled_thread_counter);
> +            ret = -1;
> +            goto end;
> +        }
>      }
>  
>      avctx->internal = av_mallocz(sizeof(AVCodecInternal));
> @@ -1085,12 +1086,15 @@ FF_ENABLE_DEPRECATION_WARNINGS
>  #endif
>      }
>  end:
> -    entangled_thread_counter--;
> +    if (codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE) {
> +        entangled_thread_counter--;
>  
> -    /* Release any user-supplied mutex. */
> -    if (lockmgr_cb) {
> -        (*lockmgr_cb)(&codec_mutex, AV_LOCK_RELEASE);
> +        /* Release any user-supplied mutex. */
> +        if (lockmgr_cb) {
> +            (*lockmgr_cb)(&codec_mutex, AV_LOCK_RELEASE);
> +        }
>      }
> +
>      if (options) {
>          av_dict_free(options);
>          *options = tmp;
> 

Looks fine to me.

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to