Title: [208942] trunk/Source/WebCore
Revision
208942
Author
[email protected]
Date
2016-11-21 01:29:22 -0800 (Mon, 21 Nov 2016)

Log Message

[WebRTC][OpenWebRTC] RTP bundling support
https://bugs.webkit.org/show_bug.cgi?id=162333

Reviewed by Alejandro G. Castro.

Configure the OpenWebRTC transport agent bundle policy according
to the RTCConfiguration and pass the receive SSRCs over to
OpenWebRTC as well. Those are needed so the agent is aware of the
bundle layout.

* platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:
(WebCore::MediaEndpointOwr::updateReceiveConfiguration):
(WebCore::MediaEndpointOwr::updateSendConfiguration):
(WebCore::MediaEndpointOwr::ensureTransportAgentAndTransceivers):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (208941 => 208942)


--- trunk/Source/WebCore/ChangeLog	2016-11-21 09:24:45 UTC (rev 208941)
+++ trunk/Source/WebCore/ChangeLog	2016-11-21 09:29:22 UTC (rev 208942)
@@ -1,3 +1,20 @@
+2016-11-21  Alejandro G. Castro  <[email protected]> and Philippe Normand  <[email protected]>
+
+        [WebRTC][OpenWebRTC] RTP bundling support
+        https://bugs.webkit.org/show_bug.cgi?id=162333
+
+        Reviewed by Alejandro G. Castro.
+
+        Configure the OpenWebRTC transport agent bundle policy according
+        to the RTCConfiguration and pass the receive SSRCs over to
+        OpenWebRTC as well. Those are needed so the agent is aware of the
+        bundle layout.
+
+        * platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:
+        (WebCore::MediaEndpointOwr::updateReceiveConfiguration):
+        (WebCore::MediaEndpointOwr::updateSendConfiguration):
+        (WebCore::MediaEndpointOwr::ensureTransportAgentAndTransceivers):
+
 2016-11-20  Zan Dobersek  <[email protected]>
 
         [EncryptedMedia] Make EME API runtime-enabled

Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp (208941 => 208942)


--- trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp	2016-11-21 09:24:45 UTC (rev 208941)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp	2016-11-21 09:29:22 UTC (rev 208942)
@@ -37,6 +37,7 @@
 #include "MediaPayload.h"
 #include "NotImplemented.h"
 #include "OpenWebRTCUtilities.h"
+#include "PeerConnectionStates.h"
 #include "RTCDataChannelHandler.h"
 #include "RealtimeMediaSourceOwr.h"
 #include <owr/owr.h>
@@ -239,6 +240,7 @@
         owr_transport_agent_add_session(m_transportAgent, session);
     }
 
+    owr_transport_agent_start(m_transportAgent);
     m_numberOfReceivePreparedSessions = m_transceivers.size();
 
     return UpdateResult::Success;
@@ -314,6 +316,14 @@
         owr_media_session_set_send_payload(OWR_MEDIA_SESSION(session), sendPayload);
         owr_media_session_set_send_source(OWR_MEDIA_SESSION(session), source->mediaSource());
 
+        // FIXME: Support for group-ssrc SDP line is missing.
+        const Vector<unsigned> receiveSsrcs = mdesc.ssrcs;
+        if (receiveSsrcs.size()) {
+            g_object_set(session, "receive-ssrc", receiveSsrcs[0], nullptr);
+            if (receiveSsrcs.size() == 2)
+                g_object_set(session, "receive-rtx-ssrc", receiveSsrcs[1], nullptr);
+        }
+
         m_numberOfSendPreparedSessions = i + 1;
     }
 
@@ -559,8 +569,25 @@
     ASSERT(m_dtlsCertificate);
 
     if (!m_transportAgent) {
-        m_transportAgent = owr_transport_agent_new(false);
+        // FIXME: Handle SDP BUNDLE line from the remote source instead of falling back to balanced.
+        OwrBundlePolicyType bundlePolicy = OWR_BUNDLE_POLICY_TYPE_BALANCED;
 
+        switch (m_configuration->bundlePolicy) {
+        case PeerConnectionStates::BundlePolicy::Balanced:
+            bundlePolicy = OWR_BUNDLE_POLICY_TYPE_BALANCED;
+            break;
+        case PeerConnectionStates::BundlePolicy::MaxCompat:
+            bundlePolicy = OWR_BUNDLE_POLICY_TYPE_MAX_COMPAT;
+            break;
+        case PeerConnectionStates::BundlePolicy::MaxBundle:
+            bundlePolicy = OWR_BUNDLE_POLICY_TYPE_MAX_BUNDLE;
+            break;
+        default:
+            ASSERT_NOT_REACHED();
+        };
+
+        m_transportAgent = owr_transport_agent_new(false, bundlePolicy);
+
         ASSERT(m_configuration);
         for (auto& server : m_configuration->iceServers) {
             for (auto& webkitUrl : server.urls) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to