gint64 * position);
static gboolean default_query_stop (GstRTSPMedia * media, gint64 * stop);
static GstElement *default_create_rtpbin (GstRTSPMedia * media);
+static gboolean default_setup_sdp (GstRTSPMedia * media, GstSDPMessage * sdp,
+ GstSDPInfo * info);
static gboolean wait_preroll (GstRTSPMedia * media);
klass->query_position = default_query_position;
klass->query_stop = default_query_stop;
klass->create_rtpbin = default_create_rtpbin;
+ klass->setup_sdp = default_setup_sdp;
}
static void
return provider;
}
+static gboolean
+default_setup_sdp (GstRTSPMedia * media, GstSDPMessage * sdp, GstSDPInfo * info)
+{
+ return gst_rtsp_sdp_from_media (sdp, info, media);
+}
+
+/**
+ * gst_rtsp_media_setup_sdp:
+ * @sdp: a #GstSDPMessage
+ * @info: info
+ * @media: a #GstRTSPMedia
+ *
+ * Add @media specific info to @sdp. @info is used to configure the connection
+ * information in the SDP.
+ *
+ * Returns: TRUE on success.
+ */
+gboolean
+gst_rtsp_media_setup_sdp (GstRTSPMedia * media, GstSDPMessage * sdp,
+ GstSDPInfo * info)
+{
+ GstRTSPMediaPrivate *priv;
+ GstRTSPMediaClass *klass;
+ gboolean res;
+
+ g_return_val_if_fail (GST_IS_RTSP_MEDIA (media), FALSE);
+ g_return_val_if_fail (sdp != NULL, FALSE);
+ g_return_val_if_fail (info != NULL, FALSE);
+
+ priv = media->priv;
+
+ g_rec_mutex_lock (&priv->state_lock);
+
+ klass = GST_RTSP_MEDIA_GET_CLASS (media);
+
+ if (!klass->setup_sdp)
+ goto no_setup_sdp;
+
+ res = klass->setup_sdp (media, sdp, info);
+
+ g_rec_mutex_unlock (&priv->state_lock);
+
+ return res;
+
+ /* ERRORS */
+no_setup_sdp:
+ {
+ g_rec_mutex_unlock (&priv->state_lock);
+ GST_ERROR ("no setup_sdp function");
+ g_critical ("no setup_sdp vmethod function set");
+ return FALSE;
+ }
+}
+
/**
* gst_rtsp_media_suspend:
* @media: a #GstRTSPMedia
#include "rtsp-thread-pool.h"
#include "rtsp-permissions.h"
#include "rtsp-address-pool.h"
+#include "rtsp-sdp.h"
/**
* GstRTSPMedia:
gboolean (*query_stop) (GstRTSPMedia *media, gint64 *stop);
GstElement * (*create_rtpbin) (GstRTSPMedia *media);
gboolean (*setup_rtpbin) (GstRTSPMedia *media, GstElement *rtpbin);
+ gboolean (*setup_sdp) (GstRTSPMedia *media, GstSDPMessage *sdp, GstSDPInfo *info);
/* signals */
void (*new_stream) (GstRTSPMedia *media, GstRTSPStream * stream);
gboolean gst_rtsp_media_suspend (GstRTSPMedia *media);
gboolean gst_rtsp_media_unsuspend (GstRTSPMedia *media);
+gboolean gst_rtsp_media_setup_sdp (GstRTSPMedia * media, GstSDPMessage * sdp,
+ GstSDPInfo * info);
+
/* creating streams */
void gst_rtsp_media_collect_streams (GstRTSPMedia *media);
GstRTSPStream * gst_rtsp_media_create_stream (GstRTSPMedia *media,