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 565910 - allow forcing the ssrc on a rtpsession
allow forcing the ssrc on a rtpsession
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal normal
: 0.10.10
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2008-12-29 08:14 UTC by Olivier Crête
Modified: 2009-01-02 17:42 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
allow setting the ssrc in the send-side setcaps (2.53 KB, patch)
2008-12-29 08:15 UTC, Olivier Crête
committed Details | Review

Description Olivier Crête 2008-12-29 08:14:26 UTC
I'm attaching a patch so we can force a specific ssrc when sending using rtpsession (it will accept the ssrc in the caps and not try to overwrite it). This is useful because some very broken RTP implementations (hello Google) only accept buffers from a specific SSRC.
Comment 1 Olivier Crête 2008-12-29 08:15:20 UTC
Created attachment 125467 [details] [review]
allow setting the ssrc in the send-side setcaps
Comment 2 Wim Taymans 2008-12-29 15:15:10 UTC
This could only work if the rtpsession did not already send out an RTCP packet with the old SSRC.

I think a more robust approach is to set the SSRC of the internal source of the session and let the negotiation convey the SSRC to the payloader. 
Comment 3 Wim Taymans 2008-12-29 15:21:31 UTC
the SSRC check is valid and now commited.

        * gst/rtpmanager/rtpsession.c: (rtp_session_set_internal_ssrc):
        Only change the SSRC of the session and reset the internal source when
        the SSRC actually changed.
Comment 4 Wim Taymans 2008-12-29 15:49:47 UTC
Something like this:

        * gst/rtpmanager/gstrtpsession.c:
        (gst_rtp_session_getcaps_send_rtp):
        Use method to get the internal SSRC.

        * gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
        (rtp_session_set_property), (rtp_session_get_property):
        Add property to congiure the internal SSRC of the session.
        Fixes #565910.
Comment 5 Olivier Crête 2008-12-29 17:27:41 UTC
Maybe changing the ssrc should send a BYE if something was already sent with the previous ssrc ?
Comment 6 Wim Taymans 2008-12-29 18:42:14 UTC
I think that is allowed and it should also be possible.
Comment 7 Wim Taymans 2009-01-02 17:42:47 UTC
Ok, commited. It should work fine, any receiver that got the previous SSRC through RTP or RTCP will time out and eventually use the new SSRC. Sending a BYE on the old SSRC would be nice but it does not seem to be required and it should certainly not cause any problems for the typical use case here.

Unfortunatly, forcing the SSRC on the payloader does not work like it should because the negotiated SSRC has higher priority than the one set with the property.


        Patch by: Olivier Crete <tester at tester dot ca>

        * gst/rtpmanager/gstrtpsession.c:
        (gst_rtp_session_setcaps_send_rtp), (create_send_rtp_sink):
        * gst/rtpmanager/rtpsession.c: (rtp_session_set_internal_ssrc):
        When an SSRC is found on the caps of the sender RTP, use this as the
        internal SSRC. Fixes #565910.