summaryrefslogtreecommitdiffstats
path: root/gst/rtpmanager/rtpsession.c
diff options
context:
space:
mode:
authorOlivier Crete <tester@tester.ca>2009-01-02 17:40:06 +0000
committerWim Taymans <wim.taymans@gmail.com>2009-01-02 17:40:06 +0000
commitc3060dfb647fbde116918eda3adee183fb7d35b7 (patch)
tree796e8301c451c1fb3ff195191341d724cf842673 /gst/rtpmanager/rtpsession.c
parent0df77bfcd66cc9b96d3ed4d425e7beec26b24508 (diff)
downloadgst-plugins-bad-c3060dfb647fbde116918eda3adee183fb7d35b7.tar.gz
gst-plugins-bad-c3060dfb647fbde116918eda3adee183fb7d35b7.tar.bz2
gst-plugins-bad-c3060dfb647fbde116918eda3adee183fb7d35b7.zip
gst/rtpmanager/: When an SSRC is found on the caps of the sender RTP, use this as the internal SSRC. Fixes #565910.
Original commit message from CVS: Patch by: Olivier Crete <tester at tester dot ca> * gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_setcaps_send_rtp), (create_send_rtp_sink): * gst/rtpmanager/rtpsession.c: (rtp_session_set_internal_ssrc): When an SSRC is found on the caps of the sender RTP, use this as the internal SSRC. Fixes #565910.
Diffstat (limited to 'gst/rtpmanager/rtpsession.c')
-rw-r--r--gst/rtpmanager/rtpsession.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c
index c57c9966..bd72ed98 100644
--- a/gst/rtpmanager/rtpsession.c
+++ b/gst/rtpmanager/rtpsession.c
@@ -1209,9 +1209,14 @@ rtp_session_set_internal_ssrc (RTPSession * sess, guint32 ssrc)
g_hash_table_steal (sess->ssrcs[sess->mask_idx],
GINT_TO_POINTER (sess->source->ssrc));
+ GST_DEBUG ("setting internal SSRC to %08x", ssrc);
+ /* After this call, any receiver of the old SSRC either in RTP or RTCP
+ * packets will timeout on the old SSRC, we could potentially schedule a
+ * BYE RTCP for the old SSRC... */
sess->source->ssrc = ssrc;
rtp_source_reset (sess->source);
+ /* rehash with the new SSRC */
g_hash_table_insert (sess->ssrcs[sess->mask_idx],
GINT_TO_POINTER (sess->source->ssrc), sess->source);
}