From 59c028a4ceb96a71e7d37c965ff72d9bc2cc4641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= Date: Wed, 31 Aug 2011 14:35:33 -0400 Subject: [PATCH] rtpsession: Hack to FIR because Google doesn't set the sender ssrc correctly https://bugzilla.gnome.org/show_bug.cgi?id=658419 --- gst/rtpmanager/rtpsession.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c index 1a651e08b7..9a7d2da6b5 100644 --- a/gst/rtpmanager/rtpsession.c +++ b/gst/rtpmanager/rtpsession.c @@ -2228,6 +2228,23 @@ rtp_session_process_fir (RTPSession * sess, guint32 sender_ssrc, src = g_hash_table_lookup (sess->ssrcs[sess->mask_idx], GINT_TO_POINTER (sender_ssrc)); + /* Hack because Google fails to set the sender_ssrc correctly */ + if (!src && sender_ssrc == 1) { + GHashTableIter iter; + + if (sess->stats.sender_sources > + RTP_SOURCE_IS_SENDER (sess->source) ? 2 : 1) + return; + + g_hash_table_iter_init (&iter, sess->ssrcs[sess->mask_idx]); + + while (g_hash_table_iter_next (&iter, NULL, (gpointer *) & src)) { + if (src != sess->source && rtp_source_is_sender (src)) + break; + src = NULL; + } + } + if (!src) return;