g_slice_free (RTSPDestination, dest);
}
+void
+gst_rtsp_media_trans_cleanup (GstRTSPMediaTrans *trans)
+{
+ if (trans->transport) {
+ gst_rtsp_transport_free (trans->transport);
+ trans->transport = NULL;
+ }
+ if (trans->rtpsource) {
+ g_object_set_qdata (trans->rtpsource, ssrc_stream_map_key, NULL);
+ trans->rtpsource = NULL;
+ }
+}
+
static void
gst_rtsp_media_stream_free (GstRTSPMediaStream * stream)
{
}
}
+/* executed from streaming thread */
static void
caps_notify (GstPad * pad, GParamSpec * unused, GstRTSPMediaStream * stream)
{
return ret;
}
+/* called from streaming threads */
static void
pad_added_cb (GstElement * element, GstPad * pad, GstRTSPMedia * media)
{
gst_rtsp_session_stream_set_callbacks (stream, NULL, NULL, NULL, NULL);
gst_rtsp_session_stream_set_keepalive (stream, NULL, NULL, NULL);
- if (stream->trans.transport)
- gst_rtsp_transport_free (stream->trans.transport);
+ gst_rtsp_media_trans_cleanup (&stream->trans);
g_free (stream);
}