summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2013-01-19 12:51:56 +0000
committerTim-Philipp Müller <tim@centricular.net>2013-01-19 12:51:56 +0000
commitc0926dc7cc9a0e180621ad454ee6eb54745f5de1 (patch)
treebffa05c0851b9008acea3013935d8a792b8fddc8 /gst
parentc015b70456710cf3d743b0ea04dab73a7c93e30f (diff)
pad: add gst_pad_get_stream_id() utility function
API: gst_pad_get_stream_id()
Diffstat (limited to 'gst')
-rw-r--r--gst/gstutils.c40
-rw-r--r--gst/gstutils.h2
2 files changed, 42 insertions, 0 deletions
diff --git a/gst/gstutils.c b/gst/gstutils.c
index 7c20a72ed3..8968024123 100644
--- a/gst/gstutils.c
+++ b/gst/gstutils.c
@@ -3707,3 +3707,43 @@ gst_pad_create_stream_id (GstPad * pad, GstElement * parent,
{
return gst_pad_create_stream_id_printf (pad, parent, stream_id, NULL);
}
+
+/**
+ * gst_pad_get_stream_id:
+ * @pad: A source #GstPad
+ *
+ * Returns the current stream-id for the @pad, or %NULL if none has been
+ * set yet, i.e. the pad has not received a stream-start event yet.
+ *
+ * This is a convenience wrapper around gst_pad_get_sticky_event() and
+ * gst_event_parse_stream_start().
+ *
+ * The returned stream-id string should be treated as an opaque string, its
+ * contents should not be interpreted.
+ *
+ * Returns: a newly-allocated copy of the stream-idfor @pad, or %NULL.
+ * g_free() the returned string when no longer needed.
+ *
+ * Since: 1.2
+ */
+gchar *
+gst_pad_get_stream_id (GstPad * pad)
+{
+ const gchar *stream_id = NULL;
+ GstEvent *event;
+ gchar *ret = NULL;
+
+ g_return_val_if_fail (GST_IS_PAD (pad), NULL);
+
+ event = gst_pad_get_sticky_event (pad, GST_EVENT_STREAM_START, 0);
+ if (event != NULL) {
+ gst_event_parse_stream_start (event, &stream_id);
+ ret = g_strdup (stream_id);
+ gst_event_unref (event);
+ GST_LOG_OBJECT (pad, "pad has stream-id '%s'", ret);
+ } else {
+ GST_DEBUG_OBJECT (pad, "pad has not received a stream-start event yet");
+ }
+
+ return ret;
+}
diff --git a/gst/gstutils.h b/gst/gstutils.h
index aa216dc49e..219e607bd0 100644
--- a/gst/gstutils.h
+++ b/gst/gstutils.h
@@ -892,6 +892,8 @@ gchar * gst_pad_create_stream_id (GstPad * pad, Gs
gchar * gst_pad_create_stream_id_printf (GstPad * pad, GstElement * parent, const gchar *stream_id, ...);
gchar * gst_pad_create_stream_id_printf_valist (GstPad * pad, GstElement * parent, const gchar *stream_id, va_list var_args);
+gchar * gst_pad_get_stream_id (GstPad * pad);
+
/* bin functions */
void gst_bin_add_many (GstBin *bin, GstElement *element_1, ...) G_GNUC_NULL_TERMINATED;
void gst_bin_remove_many (GstBin *bin, GstElement *element_1, ...) G_GNUC_NULL_TERMINATED;