From 3999bd4e4e73f1c0812f173b4399eed327bcdf37 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 3 Jul 2013 15:14:39 +0200 Subject: [PATCH] media: add method to find a stream by control url --- gst/rtsp-server/rtsp-media.c | 39 +++++++++++++++++++++++++++++++++++++++ gst/rtsp-server/rtsp-media.h | 1 + 2 files changed, 40 insertions(+) diff --git a/gst/rtsp-server/rtsp-media.c b/gst/rtsp-server/rtsp-media.c index c8a35d7..d20087d 100644 --- a/gst/rtsp-server/rtsp-media.c +++ b/gst/rtsp-server/rtsp-media.c @@ -1095,6 +1095,45 @@ gst_rtsp_media_get_stream (GstRTSPMedia * media, guint idx) } /** + * gst_rtsp_media_find_stream: + * @media: a #GstRTSPMedia + * @control: the control of the stream + * + * Find a stream in @media with @control as the control uri. + * + * Returns: (transfer none): the #GstRTSPStream with control uri @control + * or %NULL when a stream with that control did not exist. + */ +GstRTSPStream * +gst_rtsp_media_find_stream (GstRTSPMedia * media, const gchar * control) +{ + GstRTSPMediaPrivate *priv; + GstRTSPStream *res; + gint i; + + g_return_val_if_fail (GST_IS_RTSP_MEDIA (media), NULL); + g_return_val_if_fail (control != NULL, NULL); + + priv = media->priv; + + res = NULL; + + g_mutex_lock (&priv->lock); + for (i = 0; i < priv->streams->len; i++) { + GstRTSPStream *test; + + test = g_ptr_array_index (priv->streams, i); + if (gst_rtsp_stream_has_control (test, control)) { + res = test; + break; + } + } + g_mutex_unlock (&priv->lock); + + return res; +} + +/** * gst_rtsp_media_get_range_string: * @media: a #GstRTSPMedia * @play: for the PLAY request diff --git a/gst/rtsp-server/rtsp-media.h b/gst/rtsp-server/rtsp-media.h index 2b906cf..d6d2153 100644 --- a/gst/rtsp-server/rtsp-media.h +++ b/gst/rtsp-server/rtsp-media.h @@ -167,6 +167,7 @@ GstClockTime gst_rtsp_media_get_base_time (GstRTSPMedia *media); guint gst_rtsp_media_n_streams (GstRTSPMedia *media); GstRTSPStream * gst_rtsp_media_get_stream (GstRTSPMedia *media, guint idx); +GstRTSPStream * gst_rtsp_media_find_stream (GstRTSPMedia *media, const gchar * control); gboolean gst_rtsp_media_seek (GstRTSPMedia *media, GstRTSPTimeRange *range); gchar * gst_rtsp_media_get_range_string (GstRTSPMedia *media, -- 2.7.4