Signed-off-by: Muhammad Faiz <mfc...@gmail.com> --- libavcodec/allcodecs.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index eee322b..1d05fc1 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -24,6 +24,8 @@ * Provide registration of all codecs, parsers and bitstream filters for libavcodec. */ +#include <stdatomic.h> + #include "config.h" #include "avcodec.h" #include "version.h" @@ -60,11 +62,14 @@ void avcodec_register_all(void) { - static int initialized; + static atomic_int initialized; + static atomic_int ready; - if (initialized) + if (atomic_exchange_explicit(&initialized, 1, memory_order_relaxed)) { + while (!atomic_load_explicit(&ready, memory_order_relaxed)) + ; return; - initialized = 1; + } /* hardware accelerators */ REGISTER_HWACCEL(H263_VAAPI, h263_vaapi); @@ -716,4 +721,6 @@ void avcodec_register_all(void) REGISTER_PARSER(VP8, vp8); REGISTER_PARSER(VP9, vp9); REGISTER_PARSER(XMA, xma); + + atomic_store_explicit(&ready, 1, memory_order_relaxed); } -- 2.9.3 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel