From 63addbc278c653c120c85a0fd16be7811a79559e Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 5 Mar 2010 13:27:18 +0100 Subject: [PATCH] session: handle transport setup correctly Handle UDP, MCAST and TCP transport negotiation more correctly. Store the server session SSRC in the transport. --- gst/rtsp-server/rtsp-session.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/gst/rtsp-server/rtsp-session.c b/gst/rtsp-server/rtsp-session.c index ea33fa05bb..b45530b875 100644 --- a/gst/rtsp-server/rtsp-session.c +++ b/gst/rtsp-server/rtsp-session.c @@ -491,9 +491,24 @@ gst_rtsp_session_stream_set_transport (GstRTSPSessionStream *stream, st->trans = ct->trans; st->profile = ct->profile; st->lower_transport = ct->lower_transport; - st->client_port = ct->client_port; - st->interleaved = ct->interleaved; - st->server_port = stream->media_stream->server_port; + + switch (st->lower_transport) { + case GST_RTSP_LOWER_TRANS_UDP: + st->client_port = ct->client_port; + st->server_port = stream->media_stream->server_port; + break; + case GST_RTSP_LOWER_TRANS_UDP_MCAST: + ct->port = st->port = stream->media_stream->server_port; + st->destination = g_strdup (ct->destination); + break; + case GST_RTSP_LOWER_TRANS_TCP: + st->interleaved = ct->interleaved; + default: + break; + } + + if (stream->media_stream->session) + g_object_get (stream->media_stream->session, "internal-ssrc", &st->ssrc, NULL); /* keep track of the transports in the stream. */ if (stream->trans.transport)