summaryrefslogtreecommitdiff
path: root/libavcodec/mpegaudiodsp.c
diff options
context:
space:
mode:
authorDale Curtis <dalecurtis@chromium.org>2017-11-17 14:51:09 -0800
committerMichael Niedermayer <michael@niedermayer.cc>2017-11-18 11:57:57 +0100
commit5eaaffaf64d1854493f0fe9ec822eed1b3cd9fe1 (patch)
tree12979d206eb7db6f5f3a8b65eaa88810b01ffe9d /libavcodec/mpegaudiodsp.c
parentd073be2291e40129d107ca4573097d6d6d2dbf68 (diff)
downloadffmpeg-5eaaffaf64d1854493f0fe9ec822eed1b3cd9fe1.tar.gz
Use ff_thread_once for fixed, float table init.
These tables are static so they should only be initialized once instead of on every call to ff_mpadsp_init(). Signed-off-by: Dale Curtis <dalecurtis@chromium.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/mpegaudiodsp.c')
-rw-r--r--libavcodec/mpegaudiodsp.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libavcodec/mpegaudiodsp.c b/libavcodec/mpegaudiodsp.c
index a5d20df629..3cafca27bf 100644
--- a/libavcodec/mpegaudiodsp.c
+++ b/libavcodec/mpegaudiodsp.c
@@ -20,17 +20,21 @@
#include "config.h"
#include "libavutil/attributes.h"
+#include "libavutil/thread.h"
#include "mpegaudiodsp.h"
#include "dct.h"
#include "dct32.h"
+static AVOnce mpadsp_float_table_init = AV_ONCE_INIT;
+static AVOnce mpadsp_fixed_table_init = AV_ONCE_INIT;
+
av_cold void ff_mpadsp_init(MPADSPContext *s)
{
DCTContext dct;
ff_dct_init(&dct, 5, DCT_II);
- ff_init_mpadsp_tabs_float();
- ff_init_mpadsp_tabs_fixed();
+ ff_thread_once(&mpadsp_float_table_init, &ff_init_mpadsp_tabs_float);
+ ff_thread_once(&mpadsp_fixed_table_init, &ff_init_mpadsp_tabs_fixed);
s->apply_window_float = ff_mpadsp_apply_window_float;
s->apply_window_fixed = ff_mpadsp_apply_window_fixed;