mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-20 06:11:04 +00:00
avdevice/alldevices: make avdevice_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:
parent
af7010ad05
commit
776f289c0f
@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "libavutil/thread.h"
|
||||||
#include "avdevice.h"
|
#include "avdevice.h"
|
||||||
|
|
||||||
#define REGISTER_OUTDEV(X, x) \
|
#define REGISTER_OUTDEV(X, x) \
|
||||||
@ -37,14 +38,8 @@
|
|||||||
|
|
||||||
#define REGISTER_INOUTDEV(X, x) REGISTER_OUTDEV(X, x); REGISTER_INDEV(X, x)
|
#define REGISTER_INOUTDEV(X, x) REGISTER_OUTDEV(X, x); REGISTER_INDEV(X, x)
|
||||||
|
|
||||||
void avdevice_register_all(void)
|
static void register_all(void)
|
||||||
{
|
{
|
||||||
static int initialized;
|
|
||||||
|
|
||||||
if (initialized)
|
|
||||||
return;
|
|
||||||
initialized = 1;
|
|
||||||
|
|
||||||
/* devices */
|
/* devices */
|
||||||
REGISTER_INOUTDEV(ALSA, alsa);
|
REGISTER_INOUTDEV(ALSA, alsa);
|
||||||
REGISTER_INDEV (AVFOUNDATION, avfoundation);
|
REGISTER_INDEV (AVFOUNDATION, avfoundation);
|
||||||
@ -76,3 +71,10 @@ void avdevice_register_all(void)
|
|||||||
REGISTER_INDEV (LIBCDIO, libcdio);
|
REGISTER_INDEV (LIBCDIO, libcdio);
|
||||||
REGISTER_INDEV (LIBDC1394, libdc1394);
|
REGISTER_INDEV (LIBDC1394, libdc1394);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void avdevice_register_all(void)
|
||||||
|
{
|
||||||
|
AVOnce control = AV_ONCE_INIT;
|
||||||
|
|
||||||
|
ff_thread_once(&control, register_all);
|
||||||
|
}
|
||||||
|
@ -67,7 +67,6 @@ const char *avdevice_license(void);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize libavdevice and register all the input and output devices.
|
* Initialize libavdevice and register all the input and output devices.
|
||||||
* @warning This function is not thread safe.
|
|
||||||
*/
|
*/
|
||||||
void avdevice_register_all(void);
|
void avdevice_register_all(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user