summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/cairo/gsttextoverlay.c38
-rw-r--r--ext/cairo/gsttextoverlay.h8
-rw-r--r--ext/dv/gstdvdemux.c5
-rw-r--r--ext/flac/gstflacdec.c5
-rw-r--r--ext/gdk_pixbuf/gstgdkpixbufsink.c4
-rw-r--r--ext/jack/gstjackaudioclient.c2
-rw-r--r--ext/jack/gstjackaudiosink.c39
-rw-r--r--ext/jack/gstjackaudiosink.h1
-rw-r--r--ext/jack/gstjackaudiosrc.c39
-rw-r--r--ext/jack/gstjackaudiosrc.h1
-rw-r--r--ext/jpeg/gstjpegdec.c2
-rw-r--r--ext/pulse/pulsesink.c2
-rw-r--r--ext/soup/gstsouphttpclientsink.c40
-rw-r--r--ext/wavpack/gstwavpackparse.c5
14 files changed, 158 insertions, 33 deletions
diff --git a/ext/cairo/gsttextoverlay.c b/ext/cairo/gsttextoverlay.c
index 7d79f98f7..2a09b9cb1 100644
--- a/ext/cairo/gsttextoverlay.c
+++ b/ext/cairo/gsttextoverlay.c
@@ -106,7 +106,7 @@ static gboolean gst_text_overlay_setcaps (GstPad * pad, GstCaps * caps);
static GstPadLinkReturn gst_text_overlay_text_pad_linked (GstPad * pad,
GstPad * peer);
static void gst_text_overlay_text_pad_unlinked (GstPad * pad);
-static GstFlowReturn gst_text_overlay_collected (GstCollectPads * pads,
+static GstFlowReturn gst_text_overlay_collected (GstCollectPads2 * pads,
gpointer data);
static void gst_text_overlay_finalize (GObject * object);
static void gst_text_overlay_font_init (GstCairoTextOverlay * overlay);
@@ -215,7 +215,7 @@ gst_text_overlay_finalize (GObject * object)
{
GstCairoTextOverlay *overlay = GST_CAIRO_TEXT_OVERLAY (object);
- gst_collect_pads_stop (overlay->collect);
+ gst_collect_pads2_stop (overlay->collect);
gst_object_unref (overlay->collect);
g_free (overlay->text_fill_image);
@@ -279,16 +279,16 @@ gst_text_overlay_init (GstCairoTextOverlay * overlay,
overlay->fps_n = 0;
overlay->fps_d = 1;
- overlay->collect = gst_collect_pads_new ();
+ overlay->collect = gst_collect_pads2_new ();
- gst_collect_pads_set_function (overlay->collect,
+ gst_collect_pads2_set_function (overlay->collect,
GST_DEBUG_FUNCPTR (gst_text_overlay_collected), overlay);
- overlay->video_collect_data = gst_collect_pads_add_pad (overlay->collect,
- overlay->video_sinkpad, sizeof (GstCollectData), NULL);
+ overlay->video_collect_data = gst_collect_pads2_add_pad (overlay->collect,
+ overlay->video_sinkpad, sizeof (GstCollectData2));
/* FIXME: hacked way to override/extend the event function of
- * GstCollectPads; because it sets its own event function giving the
+ * GstCollectPads2; because it sets its own event function giving the
* element no access to events. Nicked from avimux. */
overlay->collect_event =
(GstPadEventFunction) GST_PAD_EVENTFUNC (overlay->video_sinkpad);
@@ -640,8 +640,8 @@ gst_text_overlay_text_pad_linked (GstPad * pad, GstPad * peer)
GST_DEBUG_OBJECT (overlay, "Text pad linked");
if (overlay->text_collect_data == NULL) {
- overlay->text_collect_data = gst_collect_pads_add_pad (overlay->collect,
- overlay->text_sinkpad, sizeof (GstCollectData), NULL);
+ overlay->text_collect_data = gst_collect_pads2_add_pad (overlay->collect,
+ overlay->text_sinkpad, sizeof (GstCollectData2));
}
overlay->need_render = TRUE;
@@ -660,7 +660,7 @@ gst_text_overlay_text_pad_unlinked (GstPad * pad)
GST_DEBUG_OBJECT (overlay, "Text pad unlinked");
if (overlay->text_collect_data) {
- gst_collect_pads_remove_pad (overlay->collect, overlay->text_sinkpad);
+ gst_collect_pads2_remove_pad (overlay->collect, overlay->text_sinkpad);
overlay->text_collect_data = NULL;
}
@@ -807,7 +807,7 @@ gst_text_overlay_pop_video (GstCairoTextOverlay * overlay)
{
GstBuffer *buf;
- buf = gst_collect_pads_pop (overlay->collect, overlay->video_collect_data);
+ buf = gst_collect_pads2_pop (overlay->collect, overlay->video_collect_data);
g_return_if_fail (buf != NULL);
gst_buffer_unref (buf);
}
@@ -818,7 +818,7 @@ gst_text_overlay_pop_text (GstCairoTextOverlay * overlay)
GstBuffer *buf;
if (overlay->text_collect_data) {
- buf = gst_collect_pads_pop (overlay->collect, overlay->text_collect_data);
+ buf = gst_collect_pads2_pop (overlay->collect, overlay->text_collect_data);
g_return_if_fail (buf != NULL);
gst_buffer_unref (buf);
}
@@ -828,7 +828,7 @@ gst_text_overlay_pop_text (GstCairoTextOverlay * overlay)
/* This function is called when there is data on all pads */
static GstFlowReturn
-gst_text_overlay_collected (GstCollectPads * pads, gpointer data)
+gst_text_overlay_collected (GstCollectPads2 * pads, gpointer data)
{
GstCairoTextOverlay *overlay;
GstFlowReturn ret = GST_FLOW_OK;
@@ -842,14 +842,14 @@ gst_text_overlay_collected (GstCollectPads * pads, gpointer data)
GST_DEBUG ("Collecting");
- video_frame = gst_collect_pads_peek (overlay->collect,
+ video_frame = gst_collect_pads2_peek (overlay->collect,
overlay->video_collect_data);
/* send EOS if video stream EOSed regardless of text stream */
if (video_frame == NULL) {
GST_DEBUG ("Video stream at EOS");
if (overlay->text_collect_data) {
- text_buf = gst_collect_pads_pop (overlay->collect,
+ text_buf = gst_collect_pads2_pop (overlay->collect,
overlay->text_collect_data);
}
gst_pad_push_event (overlay->srcpad, gst_event_new_eos ());
@@ -892,7 +892,7 @@ gst_text_overlay_collected (GstCollectPads * pads, gpointer data)
goto done;
}
- text_buf = gst_collect_pads_peek (overlay->collect,
+ text_buf = gst_collect_pads2_peek (overlay->collect,
overlay->text_collect_data);
/* just push the video frame if the text stream has EOSed */
@@ -1004,7 +1004,7 @@ gst_text_overlay_video_event (GstPad * pad, GstEvent * event)
gst_pad_push_event (overlay->srcpad, event);
}
- /* now GstCollectPads can take care of the rest, e.g. EOS */
+ /* now GstCollectPads2 can take care of the rest, e.g. EOS */
ret = overlay->collect_event (pad, event);
gst_object_unref (overlay);
return ret;
@@ -1018,12 +1018,12 @@ gst_text_overlay_change_state (GstElement * element, GstStateChange transition)
switch (transition) {
case GST_STATE_CHANGE_READY_TO_PAUSED:
- gst_collect_pads_start (overlay->collect);
+ gst_collect_pads2_start (overlay->collect);
break;
case GST_STATE_CHANGE_PAUSED_TO_READY:
/* need to unblock the collectpads before calling the
* parent change_state so that streaming can finish */
- gst_collect_pads_stop (overlay->collect);
+ gst_collect_pads2_stop (overlay->collect);
break;
default:
break;
diff --git a/ext/cairo/gsttextoverlay.h b/ext/cairo/gsttextoverlay.h
index dbb21546f..1f98d3d58 100644
--- a/ext/cairo/gsttextoverlay.h
+++ b/ext/cairo/gsttextoverlay.h
@@ -3,7 +3,7 @@
#define __GST_CAIRO_TEXT_OVERLAY_H__
#include <gst/gst.h>
-#include <gst/base/gstcollectpads.h>
+#include <gst/base/gstcollectpads2.h>
G_BEGIN_DECLS
@@ -45,9 +45,9 @@ struct _GstCairoTextOverlay {
GstPad *text_sinkpad;
GstPad *srcpad;
- GstCollectPads *collect;
- GstCollectData *video_collect_data;
- GstCollectData *text_collect_data;
+ GstCollectPads2 *collect;
+ GstCollectData2 *video_collect_data;
+ GstCollectData2 *text_collect_data;
GstPadEventFunction collect_event;
gint width;
diff --git a/ext/dv/gstdvdemux.c b/ext/dv/gstdvdemux.c
index d236c3ffa..d3618ed19 100644
--- a/ext/dv/gstdvdemux.c
+++ b/ext/dv/gstdvdemux.c
@@ -21,6 +21,11 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
+
+/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
+ * with newer GLib versions (>= 2.31.0) */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
#include <string.h>
#include <math.h>
diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c
index 94c0402cc..7066d7db9 100644
--- a/ext/flac/gstflacdec.c
+++ b/ext/flac/gstflacdec.c
@@ -41,6 +41,11 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
+
+/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
+ * with newer GLib versions (>= 2.31.0) */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
#include <string.h>
#include "gstflacdec.h"
diff --git a/ext/gdk_pixbuf/gstgdkpixbufsink.c b/ext/gdk_pixbuf/gstgdkpixbufsink.c
index f18d3c183..923538677 100644
--- a/ext/gdk_pixbuf/gstgdkpixbufsink.c
+++ b/ext/gdk_pixbuf/gstgdkpixbufsink.c
@@ -271,7 +271,7 @@ gst_gdk_pixbuf_sink_set_caps (GstBaseSink * basesink, GstCaps * caps)
GST_INFO_OBJECT (sink, "format : %d", fmt);
GST_INFO_OBJECT (sink, "width x height : %d x %d", w, h);
- GST_INFO_OBJECT (sink, "pixel-aspect-ratio : %d/%d", par_d, par_n);
+ GST_INFO_OBJECT (sink, "pixel-aspect-ratio : %d/%d", par_n, par_d);
return TRUE;
}
@@ -344,7 +344,7 @@ gst_gdk_pixbuf_sink_handle_buffer (GstBaseSink * basesink, GstBuffer * buf,
* The structure will take its own ref to the pixbuf. */
s = gst_structure_new (msg_name,
"pixbuf", GDK_TYPE_PIXBUF, pixbuf,
- "pixel-aspect-ratio", GST_TYPE_FRACTION, sink->par_d, sink->par_n,
+ "pixel-aspect-ratio", GST_TYPE_FRACTION, sink->par_n, sink->par_d,
NULL);
msg = gst_message_new_element (GST_OBJECT_CAST (sink), s);
diff --git a/ext/jack/gstjackaudioclient.c b/ext/jack/gstjackaudioclient.c
index 1789edb60..2bb355529 100644
--- a/ext/jack/gstjackaudioclient.c
+++ b/ext/jack/gstjackaudioclient.c
@@ -23,6 +23,8 @@
#include "gstjackaudioclient.h"
+#include <gst/glib-compat-private.h>
+
GST_DEBUG_CATEGORY_STATIC (gst_jack_audio_client_debug);
#define GST_CAT_DEFAULT gst_jack_audio_client_debug
diff --git a/ext/jack/gstjackaudiosink.c b/ext/jack/gstjackaudiosink.c
index fe911840f..8055f9219 100644
--- a/ext/jack/gstjackaudiosink.c
+++ b/ext/jack/gstjackaudiosink.c
@@ -329,7 +329,11 @@ gst_jack_ring_buffer_open_device (GstAudioRingBuffer * buf)
GST_DEBUG_OBJECT (sink, "open");
- name = g_get_application_name ();
+ if (sink->client_name) {
+ name = sink->client_name;
+ } else {
+ name = g_get_application_name ();
+ }
if (!name)
name = "GStreamer";
@@ -648,8 +652,9 @@ enum
SIGNAL_LAST
};
-#define DEFAULT_PROP_CONNECT GST_JACK_CONNECT_AUTO
-#define DEFAULT_PROP_SERVER NULL
+#define DEFAULT_PROP_CONNECT GST_JACK_CONNECT_AUTO
+#define DEFAULT_PROP_SERVER NULL
+#define DEFAULT_PROP_CLIENT_NAME NULL
enum
{
@@ -657,6 +662,7 @@ enum
PROP_CONNECT,
PROP_SERVER,
PROP_CLIENT,
+ PROP_CLIENT_NAME,
PROP_LAST
};
@@ -705,6 +711,19 @@ gst_jack_audio_sink_class_init (GstJackAudioSinkClass * klass)
"The Jack server to connect to (NULL = default)",
DEFAULT_PROP_SERVER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ /**
+ * GstJackAudioSink:client-name
+ *
+ * The client name to use.
+ *
+ * Since: 0.10.31
+ */
+ g_object_class_install_property (gobject_class, PROP_CLIENT_NAME,
+ g_param_spec_string ("client-name", "Client name",
+ "The client name of the Jack instance (NULL = default)",
+ DEFAULT_PROP_CLIENT_NAME,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
g_object_class_install_property (gobject_class, PROP_CLIENT,
g_param_spec_boxed ("client", "JackClient", "Handle for jack client",
GST_TYPE_JACK_CLIENT,
@@ -738,6 +757,7 @@ gst_jack_audio_sink_init (GstJackAudioSink * sink)
sink->jclient = NULL;
sink->ports = NULL;
sink->port_count = 0;
+ sink->client_name = g_strdup (DEFAULT_PROP_CLIENT_NAME);
sink->buffers = NULL;
}
@@ -747,6 +767,12 @@ gst_jack_audio_sink_dispose (GObject * object)
GstJackAudioSink *sink = GST_JACK_AUDIO_SINK (object);
gst_caps_replace (&sink->caps, NULL);
+
+ if (sink->client_name != NULL) {
+ g_free (sink->client_name);
+ sink->client_name = NULL;
+ }
+
G_OBJECT_CLASS (parent_class)->dispose (object);
}
@@ -759,6 +785,10 @@ gst_jack_audio_sink_set_property (GObject * object, guint prop_id,
sink = GST_JACK_AUDIO_SINK (object);
switch (prop_id) {
+ case PROP_CLIENT_NAME:
+ g_free (sink->client_name);
+ sink->client_name = g_value_dup_string (value);
+ break;
case PROP_CONNECT:
sink->connect = g_value_get_enum (value);
break;
@@ -787,6 +817,9 @@ gst_jack_audio_sink_get_property (GObject * object, guint prop_id,
sink = GST_JACK_AUDIO_SINK (object);
switch (prop_id) {
+ case PROP_CLIENT_NAME:
+ g_value_set_string (value, sink->client_name);
+ break;
case PROP_CONNECT:
g_value_set_enum (value, sink->connect);
break;
diff --git a/ext/jack/gstjackaudiosink.h b/ext/jack/gstjackaudiosink.h
index 02a8db9fc..0dbc142e0 100644
--- a/ext/jack/gstjackaudiosink.h
+++ b/ext/jack/gstjackaudiosink.h
@@ -58,6 +58,7 @@ struct _GstJackAudioSink {
GstJackConnect connect;
gchar *server;
jack_client_t *jclient;
+ gchar *client_name;
/* our client */
GstJackAudioClient *client;
diff --git a/ext/jack/gstjackaudiosrc.c b/ext/jack/gstjackaudiosrc.c
index 4973a8b77..cf21cbfc1 100644
--- a/ext/jack/gstjackaudiosrc.c
+++ b/ext/jack/gstjackaudiosrc.c
@@ -336,7 +336,11 @@ gst_jack_ring_buffer_open_device (GstAudioRingBuffer * buf)
GST_DEBUG_OBJECT (src, "open");
- name = g_get_application_name ();
+ if (src->client_name) {
+ name = src->client_name;
+ } else {
+ name = g_get_application_name ();
+ }
if (!name)
name = "GStreamer";
@@ -651,8 +655,9 @@ enum
LAST_SIGNAL
};
-#define DEFAULT_PROP_CONNECT GST_JACK_CONNECT_AUTO
-#define DEFAULT_PROP_SERVER NULL
+#define DEFAULT_PROP_CONNECT GST_JACK_CONNECT_AUTO
+#define DEFAULT_PROP_SERVER NULL
+#define DEFAULT_PROP_CLIENT_NAME NULL
enum
{
@@ -660,6 +665,7 @@ enum
PROP_CONNECT,
PROP_SERVER,
PROP_CLIENT,
+ PROP_CLIENT_NAME,
PROP_LAST
};
@@ -726,6 +732,19 @@ gst_jack_audio_src_class_init (GstJackAudioSrcClass * klass)
"The Jack server to connect to (NULL = default)",
DEFAULT_PROP_SERVER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ /**
+ * GstJackAudioSrc:client-name
+ *
+ * The client name to use.
+ *
+ * Since: 0.10.31
+ */
+ g_object_class_install_property (gobject_class, PROP_CLIENT_NAME,
+ g_param_spec_string ("client-name", "Client name",
+ "The client name of the Jack instance (NULL = default)",
+ DEFAULT_PROP_CLIENT_NAME,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
g_object_class_install_property (gobject_class, PROP_CLIENT,
g_param_spec_boxed ("client", "JackClient", "Handle for jack client",
GST_TYPE_JACK_CLIENT,
@@ -765,6 +784,7 @@ gst_jack_audio_src_init (GstJackAudioSrc * src)
src->ports = NULL;
src->port_count = 0;
src->buffers = NULL;
+ src->client_name = g_strdup (DEFAULT_PROP_CLIENT_NAME);
}
static void
@@ -773,6 +793,12 @@ gst_jack_audio_src_dispose (GObject * object)
GstJackAudioSrc *src = GST_JACK_AUDIO_SRC (object);
gst_caps_replace (&src->caps, NULL);
+
+ if (src->client_name != NULL) {
+ g_free (src->client_name);
+ src->client_name = NULL;
+ }
+
G_OBJECT_CLASS (parent_class)->dispose (object);
}
@@ -783,6 +809,10 @@ gst_jack_audio_src_set_property (GObject * object, guint prop_id,
GstJackAudioSrc *src = GST_JACK_AUDIO_SRC (object);
switch (prop_id) {
+ case PROP_CLIENT_NAME:
+ g_free (src->client_name);
+ src->client_name = g_value_dup_string (value);
+ break;
case PROP_CONNECT:
src->connect = g_value_get_enum (value);
break;
@@ -809,6 +839,9 @@ gst_jack_audio_src_get_property (GObject * object, guint prop_id,
GstJackAudioSrc *src = GST_JACK_AUDIO_SRC (object);
switch (prop_id) {
+ case PROP_CLIENT_NAME:
+ g_value_set_string (value, src->client_name);
+ break;
case PROP_CONNECT:
g_value_set_enum (value, src->connect);
break;
diff --git a/ext/jack/gstjackaudiosrc.h b/ext/jack/gstjackaudiosrc.h
index fa119472c..1401d9b0d 100644
--- a/ext/jack/gstjackaudiosrc.h
+++ b/ext/jack/gstjackaudiosrc.h
@@ -75,6 +75,7 @@ struct _GstJackAudioSrc
GstJackConnect connect;
gchar *server;
jack_client_t *jclient;
+ gchar *client_name;
/* our client */
GstJackAudioClient *client;
diff --git a/ext/jpeg/gstjpegdec.c b/ext/jpeg/gstjpegdec.c
index 15658ed25..8301214ec 100644
--- a/ext/jpeg/gstjpegdec.c
+++ b/ext/jpeg/gstjpegdec.c
@@ -761,7 +761,7 @@ gst_jpeg_dec_getcaps (GstPad * pad, GstCaps * filter)
templ_caps = gst_pad_get_pad_template_caps (pad);
caps = gst_caps_intersect_full (peer_caps, templ_caps,
GST_CAPS_INTERSECT_FIRST);
-
+ gst_caps_unref (peer_caps);
gst_object_unref (peer);
} else {
caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad));
diff --git a/ext/pulse/pulsesink.c b/ext/pulse/pulsesink.c
index 4fa873c4d..371863e7a 100644
--- a/ext/pulse/pulsesink.c
+++ b/ext/pulse/pulsesink.c
@@ -58,6 +58,8 @@
#include <gst/pbutils/pbutils.h> /* only used for GST_PLUGINS_BASE_VERSION_* */
+#include <gst/glib-compat-private.h>
+
#include "pulsesink.h"
#include "pulseutil.h"
diff --git a/ext/soup/gstsouphttpclientsink.c b/ext/soup/gstsouphttpclientsink.c
index af238277f..d8f46df9d 100644
--- a/ext/soup/gstsouphttpclientsink.c
+++ b/ext/soup/gstsouphttpclientsink.c
@@ -42,6 +42,8 @@
#include <gst/base/gstbasesink.h>
#include "gstsouphttpclientsink.h"
+#include <gst/glib-compat-private.h>
+
GST_DEBUG_CATEGORY_STATIC (souphttpclientsink_dbg);
#define GST_CAT_DEFAULT souphttpclientsink_dbg
@@ -445,6 +447,20 @@ gst_soup_http_client_sink_get_times (GstBaseSink * sink, GstBuffer * buffer,
}
+static gboolean
+thread_ready_idle_cb (gpointer data)
+{
+ GstSoupHttpClientSink *souphttpsink = GST_SOUP_HTTP_CLIENT_SINK (data);
+
+ GST_LOG_OBJECT (souphttpsink, "thread ready");
+
+ g_mutex_lock (souphttpsink->mutex);
+ g_cond_signal (souphttpsink->cond);
+ g_mutex_unlock (souphttpsink->mutex);
+
+ return FALSE; /* only run once */
+}
+
static gpointer
thread_func (gpointer ptr)
{
@@ -452,7 +468,6 @@ thread_func (gpointer ptr)
GST_DEBUG ("thread start");
- souphttpsink->loop = g_main_loop_new (souphttpsink->context, TRUE);
g_main_loop_run (souphttpsink->loop);
GST_DEBUG ("thread quit");
@@ -468,12 +483,35 @@ gst_soup_http_client_sink_start (GstBaseSink * sink)
if (souphttpsink->prop_session) {
souphttpsink->session = souphttpsink->prop_session;
} else {
+ GSource *source;
GError *error = NULL;
souphttpsink->context = g_main_context_new ();
+ /* set up idle source to signal when the main loop is running and
+ * it's safe for ::stop() to call g_main_loop_quit() */
+ source = g_idle_source_new ();
+ g_source_set_callback (source, thread_ready_idle_cb, sink, NULL);
+ g_source_attach (source, souphttpsink->context);
+ g_source_unref (source);
+
+ souphttpsink->loop = g_main_loop_new (souphttpsink->context, TRUE);
+
+ g_mutex_lock (souphttpsink->mutex);
+
+ /* FIXME: error handling */
+#if !GLIB_CHECK_VERSION (2, 31, 0)
souphttpsink->thread = g_thread_create (thread_func, souphttpsink,
TRUE, &error);
+#else
+ souphttpsink->thread = g_thread_try_new ("souphttpclientsink-thread",
+ thread_func, souphttpsink, &error);
+#endif
+
+ GST_LOG_OBJECT (souphttpsink, "waiting for main loop thread to start up");
+ g_cond_wait (souphttpsink->cond, souphttpsink->mutex);
+ g_mutex_unlock (souphttpsink->mutex);
+ GST_LOG_OBJECT (souphttpsink, "main loop thread running");
souphttpsink->session =
soup_session_async_new_with_options (SOUP_SESSION_ASYNC_CONTEXT,
diff --git a/ext/wavpack/gstwavpackparse.c b/ext/wavpack/gstwavpackparse.c
index 50e1df933..4bb1e7e2b 100644
--- a/ext/wavpack/gstwavpackparse.c
+++ b/ext/wavpack/gstwavpackparse.c
@@ -41,6 +41,11 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
+
+/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
+ * with newer GLib versions (>= 2.31.0) */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
#include <gst/gst.h>
#include <gst/gst-i18n-plugin.h>