summary refs log tree commit diff
diff options
context:
space:
mode:
authortrilene <trilene@runbox.com>2020-08-22 08:18:42 -0400
committertrilene <trilene@runbox.com>2020-08-22 08:18:42 -0400
commit473293b6a5d06e670065dd4d35af0e456621e9e6 (patch)
tree0f7ddf1a2aad72bdc97a4526d2c2f270c5fbfb0b
parentStop SendFile and Call buttons swapping places on file upload (diff)
downloadnheko-473293b6a5d06e670065dd4d35af0e456621e9e6.tar.xz
Under GStreamer >= 1.17 gather all candidates before sending offer/answer
-rw-r--r--src/WebRTCSession.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/WebRTCSession.cpp b/src/WebRTCSession.cpp
index 2248fb1a..b4e7eeb3 100644
--- a/src/WebRTCSession.cpp
+++ b/src/WebRTCSession.cpp
@@ -223,18 +223,19 @@ addLocalICECandidate(GstElement *webrtc G_GNUC_UNUSED,
 {
         nhlog::ui()->debug("WebRTC: local candidate: (m-line:{}):{}", mlineIndex, candidate);
 
+#if GST_CHECK_VERSION(1, 17, 0)
+        localcandidates_.push_back({"audio", (uint16_t)mlineIndex, candidate});
+        return;
+#else
         if (WebRTCSession::instance().state() >= WebRTCSession::State::OFFERSENT) {
                 emit WebRTCSession::instance().newICECandidate(
                   {"audio", (uint16_t)mlineIndex, candidate});
                 return;
         }
 
-        localcandidates_.push_back({"audio", (uint16_t)mlineIndex, candidate});
-
         // GStreamer v1.16: webrtcbin's notify::ice-gathering-state triggers
         // GST_WEBRTC_ICE_GATHERING_STATE_COMPLETE too early. Fixed in v1.17.
         // Use a 100ms timeout in the meantime
-#if !GST_CHECK_VERSION(1, 17, 0)
         static guint timerid = 0;
         if (timerid)
                 g_source_remove(timerid);
@@ -447,6 +448,7 @@ WebRTCSession::startPipeline(int opusPayloadType)
                 g_object_set(webrtc_, "stun-server", stunServer_.c_str(), nullptr);
         }
 
+
         for (const auto &uri : turnServers_) {
                 nhlog::ui()->info("WebRTC: setting TURN server: {}", uri);
                 gboolean udata;