[Bug 711560] rtpsession: ssrc collision improvements

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Nov 22 07:03:57 PST 2013


https://bugzilla.gnome.org/show_bug.cgi?id=711560
  GStreamer | gst-plugins-good | git

Wim Taymans <wim.taymans> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #260106|none                        |needs-work
             status|                            |

--- Comment #18 from Wim Taymans <wim.taymans at gmail.com> 2013-11-22 15:03:51 UTC ---
(From update of attachment 260106)
>diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c
>index 49baeaa..b01f186 100644
>--- a/gst/rtpmanager/rtpsession.c
>+++ b/gst/rtpmanager/rtpsession.c
>@@ -2480,12 +2480,6 @@ rtp_session_process_rtcp (RTPSession * sess, GstBuffer * buffer,
> 
>     type = gst_rtcp_packet_get_type (&packet);
> 
>-    /* when we are leaving the session, we should ignore all non-BYE messages */
>-    if (sess->scheduled_bye && type != GST_RTCP_TYPE_BYE) {
>-      GST_DEBUG ("ignoring non-BYE RTCP packet because we are leaving");
>-      goto next;
>-    }
>-

When a source is sending BYE, all RTCP that is not BYE should be ignored (for
that
source only). 6.3.7 says that no other RTCP packets can influence the average
packet size calculation and the member database.

>-  /* if we are scheduling a BYE, we only want to count bye packets, else we
>-   * count everything */
>-  if (sess->scheduled_bye) {
>-    if (is_bye) {
>-      sess->stats.bye_members++;
>-      UPDATE_AVG (sess->stats.avg_rtcp_packet_size, pinfo.bytes);
>-    }
>-  } else {
>-    /* keep track of average packet size */
>-    UPDATE_AVG (sess->stats.avg_rtcp_packet_size, pinfo.bytes);
>-  }
>+  if (is_bye)
>+    sess->stats.bye_members++;
>+  /* keep track of average packet size */
>+  UPDATE_AVG (sess->stats.avg_rtcp_packet_size, pinfo.bytes);

Not correct, can only update the size for BYE packets when sending BYE.

> 
>-  /* nothing to do it we already scheduled bye */
>-  if (sess->scheduled_bye)
>-    goto done;
>-
>   /* we schedule BYE now */
>   sess->scheduled_bye = TRUE;
>-  /* at least one member wants to send a BYE */
>-  INIT_AVG (sess->stats.avg_rtcp_packet_size, 100);
>-  sess->stats.bye_members = 1;
>-  sess->first_rtcp = TRUE;
>+
>+  sess->stats.bye_members++;
>   sess->allow_early = TRUE;

Not correct, 6.3.7, first_rtcp needs to be set to schedule this packet
as if it was the first packet.

I'm starting to think that many of these stats should not be on the session
but on the source so that when one source is sending BYE, it can keep
it's own stats for doing so.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list