From 5b0298c63eb8d52d9f7b81aede0b59000d52876d Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 26 Jul 2013 17:21:08 +0200 Subject: [PATCH] session: reorganize the report block code --- gst/rtpmanager/rtpsession.c | 60 ++++++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c index e94339a..3e4914f 100644 --- a/gst/rtpmanager/rtpsession.c +++ b/gst/rtpmanager/rtpsession.c @@ -2800,33 +2800,43 @@ static void session_report_blocks (const gchar * key, RTPSource * source, ReportData * data) { GstRTCPPacket *packet = &data->packet; + guint8 fractionlost; + gint32 packetslost; + guint32 exthighestseq, jitter; + guint32 lsr, dlsr; - if (gst_rtcp_packet_get_rb_count (packet) < GST_RTCP_MAX_RB_COUNT) { - /* only report about other sender sources */ - if (source != data->source && RTP_SOURCE_IS_SENDER (source)) { - guint8 fractionlost; - gint32 packetslost; - guint32 exthighestseq, jitter; - guint32 lsr, dlsr; - - /* get new stats */ - rtp_source_get_new_rb (source, data->current_time, &fractionlost, - &packetslost, &exthighestseq, &jitter, &lsr, &dlsr); - - /* store last generated RR packet */ - source->last_rr.is_valid = TRUE; - source->last_rr.fractionlost = fractionlost; - source->last_rr.packetslost = packetslost; - source->last_rr.exthighestseq = exthighestseq; - source->last_rr.jitter = jitter; - source->last_rr.lsr = lsr; - source->last_rr.dlsr = dlsr; - - /* packet is not yet filled, add report block for this source. */ - gst_rtcp_packet_add_rb (packet, source->ssrc, fractionlost, packetslost, - exthighestseq, jitter, lsr, dlsr); - } + /* only report about other sender */ + if (source == data->source) + return; + + if (gst_rtcp_packet_get_rb_count (packet) == GST_RTCP_MAX_RB_COUNT) { + GST_DEBUG ("max RB count reached"); + return; } + + if (!RTP_SOURCE_IS_SENDER (source)) { + GST_DEBUG ("source %08x not sender", source->ssrc); + return; + } + + GST_DEBUG ("create RB for SSRC %08x", source->ssrc); + + /* get new stats */ + rtp_source_get_new_rb (source, data->current_time, &fractionlost, + &packetslost, &exthighestseq, &jitter, &lsr, &dlsr); + + /* store last generated RR packet */ + source->last_rr.is_valid = TRUE; + source->last_rr.fractionlost = fractionlost; + source->last_rr.packetslost = packetslost; + source->last_rr.exthighestseq = exthighestseq; + source->last_rr.jitter = jitter; + source->last_rr.lsr = lsr; + source->last_rr.dlsr = dlsr; + + /* packet is not yet filled, add report block for this source. */ + gst_rtcp_packet_add_rb (packet, source->ssrc, fractionlost, packetslost, + exthighestseq, jitter, lsr, dlsr); } /* perform cleanup of sources that timed out */ -- 2.7.4