a52_init initializes the IMDCT global state as well as creating
a new state. When two A52 decoders are created (eg, when two AC3
tracks are contained in a video), calls to a52_init may happen
at the same time, and the IMDCT initialization is not reentrant.
https://bugzilla.gnome.org/show_bug.cgi?id=746781
{
GstA52Dec *a52dec = GST_A52DEC (dec);
GstA52DecClass *klass;
+ static GMutex init_mutex;
GST_DEBUG_OBJECT (dec, "start");
klass = GST_A52DEC_CLASS (G_OBJECT_GET_CLASS (a52dec));
+ g_mutex_lock (&init_mutex);
#if defined(A52_ACCEL_DETECT)
a52dec->state = a52_init ();
/* This line is just to avoid being accused of not using klass */
#else
a52dec->state = a52_init (klass->a52_cpuflags);
#endif
+ g_mutex_unlock (&init_mutex);
if (!a52dec->state) {
GST_ELEMENT_ERROR (GST_ELEMENT (a52dec), LIBRARY, INIT, (NULL),