summaryrefslogtreecommitdiff
path: root/libavcodec/dsd.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-11-23 04:20:07 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-12-08 17:51:48 +0100
commit4f5bd6177da43263a47239d96ec1776ccf46368e (patch)
tree77c14371ab148cd679f253d1393ca0139432edb2 /libavcodec/dsd.c
parentfd5d66af744462a97237fa0474e77924c71729ec (diff)
avcodec/dsd: Make initializing DSD tables thread-safe
This automatically makes the DSD formats as well as DST and WavPack init-threadsafe. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavcodec/dsd.c')
-rw-r--r--libavcodec/dsd.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/libavcodec/dsd.c b/libavcodec/dsd.c
index d48f87fa0f..95aab61ea4 100644
--- a/libavcodec/dsd.c
+++ b/libavcodec/dsd.c
@@ -21,6 +21,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include "libavutil/thread.h"
#include "libavcodec/internal.h"
#include "libavcodec/mathops.h"
#include "avcodec.h"
@@ -45,11 +46,8 @@ static av_cold void dsd_ctables_tableinit(void)
av_cold void ff_init_dsd_data(void)
{
- static int done = 0;
- if (done)
- return;
- dsd_ctables_tableinit();
- done = 1;
+ static AVOnce init_static_once = AV_ONCE_INIT;
+ ff_thread_once(&init_static_once, dsd_ctables_tableinit);
}
void ff_dsd2pcm_translate(DSDContext* s, size_t samples, int lsbf,