Invoking "add-local-ip-address" on GstWebRTCICE

Ben Rush ben at ben-rush.net
Thu Jul 16 21:55:12 UTC 2020


Admittedly I seem to occasionally get myself confused when it comes to
navigating objects and their properties in the GLib Object System. Often I
find myself exploring sample code and piecing together an understanding
from that. However, I can't seem to get at what I need here and am hoping
someone can help.

First, the main problem I'm attempting to solve is forcing WebRTCBin to
restrict the addresses and ports used when generating ICE candidates. I'm
behind a firewall, don't want to / can't use a TURN server in my specific
scenario, and so would like to specify the exact ports / addresses to be
considered as candidates. From examining the source, it appears as though
my only way to do that is to rely on emitting this signal with the address
information (IP/port):

https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=c#GstWebRTCICE::add-local-ip-address

So, I assume I'll need to call g_signal_emit_by_name() with the proper
arguments, one of which being the object to receive the signal. All well
and good, except for the fact that the receiving object is of type
GstWebRTCICE. So, I need to get that object. Per this documentation:
https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=c#webrtcbin:ice-agent
it
appears to be a property on the webrtcbin element.

So, I have this code:

    _pipeline = gst_parse_launch("webrtcbin bundle-policy=max-bundle
name=sendrecv "
        "autoaudiosrc ! audioconvert ! audioresample ! queue ! opusenc !
rtpopuspay ! "
        "queue ! " RTP_CAPS_OPUS "97 ! sendrecv. ", &error);
.....
    _webRtcElement = gst_bin_get_by_name(GST_BIN(_pipeline), "sendrecv");
.....
            GValue value = { 0, };
            g_value_init(&value, G_TYPE_OBJECT);
            g_object_get_property(G_OBJECT(_webRtcElement), "ice-agent",
&value);
            GObject* object = (GObject*)g_value_get_object(&value);

But the value of the object is always null. What am I doing wrong? How am I
navigating this improperly?

Also, I noticed this merge request:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/856. I'm
hoping this doesn't mean forcing a particular IP/port is even possible with
webrtcbin.

Thanks in advance.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20200716/54417edd/attachment.htm>


More information about the gstreamer-devel mailing list