diff options
author | Muhammad Faiz <mfcc64@gmail.com> | 2017-03-07 15:54:44 +0700 |
---|---|---|
committer | Muhammad Faiz <mfcc64@gmail.com> | 2017-03-07 20:34:44 +0700 |
commit | af7010ad0557fe66d35886581eecebf02e92637c (patch) | |
tree | 8cab1573caa9613f9fb5a13dcd2b746e61607189 /libavfilter | |
parent | 49635f0a46365f361ce665356bb41e199176021b (diff) | |
download | ffmpeg-af7010ad0557fe66d35886581eecebf02e92637c.tar.gz |
avfilter/allfilters: make avfilter_register_all thread safe
use ff_thread_once
Suggested-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
Diffstat (limited to 'libavfilter')
-rw-r--r-- | libavfilter/allfilters.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index 15a74c4eed..df1af8de23 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/thread.h" #include "avfilter.h" #include "config.h" #include "opencl_allkernels.h" @@ -37,14 +38,8 @@ avfilter_register(&ff_##x); \ } -void avfilter_register_all(void) +static void register_all(void) { - static int initialized; - - if (initialized) - return; - initialized = 1; - REGISTER_FILTER(ABENCH, abench, af); REGISTER_FILTER(ACOMPRESSOR, acompressor, af); REGISTER_FILTER(ACROSSFADE, acrossfade, af); @@ -380,3 +375,10 @@ void avfilter_register_all(void) REGISTER_FILTER_UNCONDITIONAL(vf_fifo); ff_opencl_register_filter_kernel_code_all(); } + +void avfilter_register_all(void) +{ + AVOnce control = AV_ONCE_INIT; + + ff_thread_once(&control, register_all); +} |