diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/cairo/gsttextoverlay.c | 38 | ||||
-rw-r--r-- | ext/cairo/gsttextoverlay.h | 8 | ||||
-rw-r--r-- | ext/dv/gstdvdemux.c | 5 | ||||
-rw-r--r-- | ext/flac/gstflacdec.c | 5 | ||||
-rw-r--r-- | ext/gdk_pixbuf/gstgdkpixbufsink.c | 4 | ||||
-rw-r--r-- | ext/jack/gstjackaudioclient.c | 2 | ||||
-rw-r--r-- | ext/jack/gstjackaudiosink.c | 39 | ||||
-rw-r--r-- | ext/jack/gstjackaudiosink.h | 1 | ||||
-rw-r--r-- | ext/jack/gstjackaudiosrc.c | 39 | ||||
-rw-r--r-- | ext/jack/gstjackaudiosrc.h | 1 | ||||
-rw-r--r-- | ext/jpeg/gstjpegdec.c | 2 | ||||
-rw-r--r-- | ext/pulse/pulsesink.c | 2 | ||||
-rw-r--r-- | ext/soup/gstsouphttpclientsink.c | 40 | ||||
-rw-r--r-- | ext/wavpack/gstwavpackparse.c | 5 |
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> |