avcodec/allcodecs: make avcodec_register_all thread safe

use ff_thread_once

Suggested-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
This commit is contained in:
Muhammad Faiz 2017-03-07 15:51:12 +07:00
parent a6b1180e39
commit e85e840880

View File

@ -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);
}