summaryrefslogtreecommitdiff
path: root/gst/rtpmanager/rtpsource.h
diff options
context:
space:
mode:
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2013-11-14 16:19:29 +0200
committerWim Taymans <wtaymans@redhat.com>2013-12-12 16:44:27 +0100
commit6a2de911fa665151c5a45781455b8aecd80f538b (patch)
tree7fb6f2c7dd7d80949ac616d4cdb55ac05e2c3d61 /gst/rtpmanager/rtpsource.h
parentf9b7f44938312ee3532c42da36db2b6fc250fd57 (diff)
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.
Diffstat (limited to 'gst/rtpmanager/rtpsource.h')
-rw-r--r--gst/rtpmanager/rtpsource.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gst/rtpmanager/rtpsource.h b/gst/rtpmanager/rtpsource.h
index 3a957bb65..9af7d8ace 100644
--- a/gst/rtpmanager/rtpsource.h
+++ b/gst/rtpmanager/rtpsource.h
@@ -136,6 +136,8 @@ struct _RTPSource {
guint32 ssrc;
guint16 generation;
+ GHashTable *reported_in_sr_of; /* set of SSRCs */
+
guint probation;
guint curr_probation;
gboolean validated;