[gst-devel] PATCH: sockfd property to udpsrc/dynudpsink elements

Abner José abnerf at gmail.com
Tue Dec 13 06:58:03 CET 2005

Hello all,

I took a look at this patch and it works fine when I tested with STUN.
I made some tests with a simple NAT and I hadn't any problems.
I think it's a very important feature to be added on the next 0.10.xrelease.



From: Kai Vehmanen < kvehmanen at eca.cx>
> Date: Nov 30, 2005 3:33 PM
> Subject: [gst-devel] PATCH: sockfd property to udpsrc/dynudpsink elements
> To: gstreamer-devel at lists.sourceforge.net
> Hello all,
> here's a patch that adds a 'sockfd' property to the udpsrc/dynudpsink
> elements in gst-plugins-good.
> I'd like to get these into 0.10 if possible (sorry for the bad/late
> timing). If 0.10 is out of the question, when would be an appropriate
> time? I assume adding new properties to elements is possible in 0.10.x
> releases). Comments on the patch are of course also very much welcome.
> Anyways, this patch is needed for two+ reasons:
> * To be able to send&receive RTP+RTCP when connected to network
>    via a NAT/FW device, the same local port must be used for sending and
>    receiving (-> symmetric RTP). This is an essential feature for any VoIP
>    style client using RTP.
> * The current udpsrc/dynudpsink interface is clumsy if the
>    requested port is reserved at NULL->READY state change. And especially
>    if you need to reserve paired ports on a busy system (X for RTP, and
>    X+1 for RTCP) without race-conditions. It would be much easier to have
>    the app reserve and bind to the ports, and then pass the bound sockfds
> to
>    udpsrc/dynudpsink for use.
> * Longer term: to integrate NAT traversal mechanisms such as STUN
>    <http://www.faqs.org/rfcs/rfc3489.html> and UPnP-IGD to gstreamer, the
>    STUN client API has to create and bind the socket (you cannot do
>    this inside udpsrc/dynudpsink).
> For testing, I've committed patches to the Farsight darcs repository, and
> modified the gsmsendrecv.c test program to utilize the patched dynudpsink
> and udpsrc (see the below message). This allows to symmetric use of both
> RTP and RTCP (verified to work with current gstreamer CVS). You can get
> the needed elements with:
>    darcs get http://projects.collabora.co.uk/darcs/farsight/gst-plugins-farsight
> ---------- Forwarded message ----------
> Date: Wed, 30 Nov 2005 20:12:04 +0200 (EET)
> From: Kai Vehmanen < kvehmanen at eca.cx>
> To: farsight-devel at lists.sourceforge.net
> Subject: [Farsight-devel] darcs-commits; symmetric-rtp, accepting own
> packets
> Hello,
> I just committed some changes to enable symmetric RTP support:
> * Added 'rtp_sockfd' and 'rtcp_sockfd' properties to rtpbin.
>    - If not specified, rtpbin will behave as before.
>    - Requires the patches to udpsrc and dynudpsink (will
>      send to gstreamer-devel).
> * Configure jrtplib to accept own packets by default.
>    - This allows to use the test apps in gst-plugins-farsight
>      without patching jrtplib, and without getenv() hacks.
>    - If someone really wants to use multicast with rtpbin,
>      please go ahead and add a nice way to select this
>      at rtpbin creation time.
> * Modified gst-plugins-farsight/tests/gsmsendrecv.c
>    - Creates and binds sockets for RTP and RTCP, passes
>      these to rtpbin, and runs a RTP/GSM test over
>      local loopback.
>    - Tested to work with a snapshot of today's (2005-11-30)
>      gstreamer/gst-plugins-* CVS.
>    - Thanks to the accept-own-packets change above,
>      you can actually run the test without hacking'n'patching
>      jrtplib as you had to do before.
> --
>   under work: Sofia-SIP at http://sofia-sip.sf.net

current->id = 0;
>> Powered by Linux
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20051213/74a3452b/attachment.htm>

More information about the gstreamer-devel mailing list