<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix"><br>
      <br>
      On 17/7/20 7:55 am, Ben Rush wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CANV0r95f7hkgOAgZC0af-Hon_bRsgNY9ns-kuJUJ0XGyss4xhA@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <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"
                            moz-do-not-send="true">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"
                            moz-do-not-send="true">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>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    Do you have a version of GStreamer that includes that?  The
    'ice-agent' property on webrtcbin and 'add-local-ip-address' on
    gstwebrtcice is only available in master and is not in any released
    version yet.<br>
    <br>
    <blockquote type="cite"
cite="mid:CANV0r95f7hkgOAgZC0af-Hon_bRsgNY9ns-kuJUJ0XGyss4xhA@mail.gmail.com">
      <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>Also, I noticed this merge request: <a
href="https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/856"
                            moz-do-not-send="true">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>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    This MR would probably by your best bet but it needs updating to
    place the necessary properties on the ICE object rather than on
    webrtcbin itself.<br>
    <br>
    Cheers<br>
    -Matt<br>
    <br>
    <blockquote type="cite"
cite="mid:CANV0r95f7hkgOAgZC0af-Hon_bRsgNY9ns-kuJUJ0XGyss4xhA@mail.gmail.com">
      <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>Thanks in advance. </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
gstreamer-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>