rtpsession: Hack to FIR because Google doesn't set the sender ssrc correctly
authorOlivier CrĂȘte <olivier.crete@collabora.com>
Wed, 31 Aug 2011 18:35:33 +0000 (14:35 -0400)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 14 Nov 2011 11:26:27 +0000 (12:26 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=658419

gst/rtpmanager/rtpsession.c

index 1a651e0..9a7d2da 100644 (file)
@@ -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;