From e85e8408802dc3a474e6a610867df8e57c768339 Mon Sep 17 00:00:00 2001 From: Muhammad Faiz Date: Tue, 7 Mar 2017 15:51:12 +0700 Subject: [PATCH] avcodec/allcodecs: make avcodec_register_all thread safe use ff_thread_once Suggested-by: wm4 Signed-off-by: Muhammad Faiz --- libavcodec/allcodecs.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index a265ce5728..074efd463f 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -25,6 +25,7 @@ */ #include "config.h" +#include "libavutil/thread.h" #include "avcodec.h" #include "version.h" @@ -58,14 +59,8 @@ av_register_codec_parser(&ff_##x##_parser); \ } -void avcodec_register_all(void) +static void register_all(void) { - static int initialized; - - if (initialized) - return; - initialized = 1; - /* hardware accelerators */ REGISTER_HWACCEL(H263_VAAPI, h263_vaapi); REGISTER_HWACCEL(H263_VIDEOTOOLBOX, h263_videotoolbox); @@ -718,3 +713,10 @@ void avcodec_register_all(void) REGISTER_PARSER(VP9, vp9); REGISTER_PARSER(XMA, xma); } + +void avcodec_register_all(void) +{ + static AVOnce control = AV_ONCE_INIT; + + ff_thread_once(&control, register_all); +}