<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">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. <br><br>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): <br><br><a href="https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=c#GstWebRTCICE::add-local-ip-address">https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=c#GstWebRTCICE::add-local-ip-address</a><br></div><div dir="ltr"><br></div><div>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: <a href="https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=c#webrtcbin:ice-agent">https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=c#webrtcbin:ice-agent</a> it appears to be a property on the webrtcbin element. </div><div><br>So, I have this code:  <br><br><div>    _pipeline = gst_parse_launch("webrtcbin bundle-policy=max-bundle name=sendrecv "</div><div>        "autoaudiosrc ! audioconvert ! audioresample ! queue ! opusenc ! rtpopuspay ! "</div><div>        "queue ! " RTP_CAPS_OPUS "97 ! sendrecv. ", &error);<br>.....<br>    _webRtcElement = gst_bin_get_by_name(GST_BIN(_pipeline), "sendrecv");<br></div></div><div>.....<br>            GValue value = { 0, };</div><div>            g_value_init(&value, G_TYPE_OBJECT);</div><div>            g_object_get_property(G_OBJECT(_webRtcElement), "ice-agent", &value);</div><div>            GObject* object = (GObject*)g_value_get_object(&value);</div><div><br></div><div>But the value of the object is always null. What am I doing wrong? How am I navigating this improperly? <br><br>Also, I noticed this merge request: <a href="https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/856">https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/856</a>. I'm hoping this doesn't mean forcing a particular IP/port is even possible with webrtcbin. <br><br>Thanks in advance. </div></div></div></div></div></div></div></div></div></div>