GNOME Bugzilla – Bug 712567
rtpsession: RBs are not included in SRs after the first RTCP timeout when there are multiple internal senders
Last modified: 2013-12-13 04:35:53 UTC
Created attachment 260093 [details] [review] rtpsession: fix rb blocks disappearing after the first rtcp cycle with multiple senders When the session has multiple internal sender SSRCs, it issues SR reports with RB blocks only on the first RTCP timeout and afterwards SR reports are sent empty. This patch fixes the problem (unit test included).
Created attachment 260094 [details] [review] tests/check: add an rtpsession unit test to verify all RBs are included in all SRs, roundrobin
Created attachment 260301 [details] [review] tests/check: add an rtpsession unit test to verify all RBs are included in all SRs, roundrobin
Wim has pushed these already commit 6a2de911fa665151c5a45781455b8aecd80f538b Author: George Kiagiadakis <george.kiagiadakis@collabora.com> Date: Thu Nov 14 16:19:29 2013 +0200 rtpsession: fix rb blocks disappearing after the first rtcp cycle with multiple senders Previously, when the session had multiple internal sender SSRCs, it would issue SR reports with RB blocks only on the first RTCP timeout and afterwards SR reports would be sent empty. This was because the "generation" number in RTPSource would increase more than once during the same cycle and afterwards it would always be greater than the session's generation, which would cause it to be skipped from being included in RBs. This commit fixes this problem by: 1) Increasing the RTPSource generation only at the end of each cycle, which essentially fixes the problem but only when the internal senders are less than GST_RTCP_MAX_RB_COUNT. 2) Keeping for each RTPSource a set of SSRCs which stores which SSRC's SR the given RTPSource has been reported in, which also fixes the problem when the internal senders are more than GST_RTCP_MAX_RB_COUNT. This is necessary because of the fact that any RTPSource is marked as reported in itself's SR and makes it impossible to know if it has been reported in other SRs too or not, and which. commit f9b7f44938312ee3532c42da36db2b6fc250fd57 Author: George Kiagiadakis <george.kiagiadakis@collabora.com> Date: Thu Nov 14 16:23:35 2013 +0200 tests/check: add an rtpsession unit test to verify all RBs are included in all SRs, roundrobin This test checks that when we have multiple internal sender sources in rtpsession, SRs contain RBs for every other sender source, and that they are included roundrobin when they exceed ST_RTCP_MAX_RB_COUNT, which is the max number of RBs that can fit in a SR.