After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 712567 - rtpsession: RBs are not included in SRs after the first RTCP timeout when there are multiple internal senders
rtpsession: RBs are not included in SRs after the first RTCP timeout when the...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: 1.3.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-11-18 10:01 UTC by George Kiagiadakis
Modified: 2013-12-13 04:35 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
rtpsession: fix rb blocks disappearing after the first rtcp cycle with multiple senders (5.70 KB, patch)
2013-11-18 10:01 UTC, George Kiagiadakis
committed Details | Review
tests/check: add an rtpsession unit test to verify all RBs are included in all SRs, roundrobin (7.61 KB, patch)
2013-11-18 10:02 UTC, George Kiagiadakis
none Details | Review
tests/check: add an rtpsession unit test to verify all RBs are included in all SRs, roundrobin (7.61 KB, patch)
2013-11-20 12:38 UTC, George Kiagiadakis
committed Details | Review

Description George Kiagiadakis 2013-11-18 10:01:32 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).
Comment 1 George Kiagiadakis 2013-11-18 10:02:05 UTC
Created attachment 260094 [details] [review]
tests/check: add an rtpsession unit test to verify all RBs are included in all SRs, roundrobin
Comment 2 George Kiagiadakis 2013-11-20 12:38:02 UTC
Created attachment 260301 [details] [review]
tests/check: add an rtpsession unit test to verify all RBs are included in all SRs, roundrobin
Comment 3 Olivier Crête 2013-12-13 04:35:39 UTC
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.