Title: [235649] trunk/Source/WebCore
Revision
235649
Author
you...@apple.com
Date
2018-09-04 17:04:01 -0700 (Tue, 04 Sep 2018)

Log Message

Make LibWebRTCRtpSenderBackend own its libwebrtc RTP sender backend
https://bugs.webkit.org/show_bug.cgi?id=189270

Reviewed by Eric Carlson.

Previously, the libwebrtc senders were owned in LibWebRTCMediaEndpoint.
This patch makes them be owned by LibWebRTCRtpSenderBackend.
This simplifies the implementation of RTCRtpSender::getParameters.
This will help simplify the implementation of RTCRtpSender::replaceTrack.

removeTrack is also refactored so that LibWebRTCMediaEndpoint directly uses libwebrtc constructs and not WebCore libwebrtc-agnostic ones.

No change of behavior.

* Modules/mediastream/PeerConnectionBackend.h:
(WebCore::PeerConnectionBackend::removeTrack):
(WebCore::PeerConnectionBackend::notifyRemovedTrack): Deleted.
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::removeTrack):
* Modules/mediastream/RTCRtpSender.cpp:
(WebCore::RTCRtpSender::getParameters):
* Modules/mediastream/RTCRtpSender.h:
(WebCore::RTCRtpSender::backend):
* Modules/mediastream/RTCRtpSenderBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::addTrack):
(WebCore::LibWebRTCMediaEndpoint::removeTrack):
(WebCore::LibWebRTCMediaEndpoint::doCreateOffer):
(WebCore::LibWebRTCMediaEndpoint::stop):
(WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveAudio const): Deleted.
(WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveVideo const): Deleted.
(WebCore::LibWebRTCMediaEndpoint::getRTCRtpSenderParameters): Deleted.
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::backendFromRTPSender):
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiver):
(WebCore::LibWebRTCPeerConnectionBackend::removeTrack):
(WebCore::LibWebRTCPeerConnectionBackend::shouldOfferAllowToReceive const):
(WebCore::LibWebRTCPeerConnectionBackend::notifyRemovedTrack): Deleted.
(WebCore::LibWebRTCPeerConnectionBackend::getParameters const): Deleted.
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
(WebCore::LibWebRTCRtpSenderBackend::getParameters const):
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (235648 => 235649)


--- trunk/Source/WebCore/ChangeLog	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/ChangeLog	2018-09-05 00:04:01 UTC (rev 235649)
@@ -1,3 +1,51 @@
+2018-09-04  Youenn Fablet  <you...@apple.com>
+
+        Make LibWebRTCRtpSenderBackend own its libwebrtc RTP sender backend
+        https://bugs.webkit.org/show_bug.cgi?id=189270
+
+        Reviewed by Eric Carlson.
+
+        Previously, the libwebrtc senders were owned in LibWebRTCMediaEndpoint.
+        This patch makes them be owned by LibWebRTCRtpSenderBackend.
+        This simplifies the implementation of RTCRtpSender::getParameters.
+        This will help simplify the implementation of RTCRtpSender::replaceTrack.
+
+        removeTrack is also refactored so that LibWebRTCMediaEndpoint directly uses libwebrtc constructs and not WebCore libwebrtc-agnostic ones.
+
+        No change of behavior.
+
+        * Modules/mediastream/PeerConnectionBackend.h:
+        (WebCore::PeerConnectionBackend::removeTrack):
+        (WebCore::PeerConnectionBackend::notifyRemovedTrack): Deleted.
+        * Modules/mediastream/RTCPeerConnection.cpp:
+        (WebCore::RTCPeerConnection::removeTrack):
+        * Modules/mediastream/RTCRtpSender.cpp:
+        (WebCore::RTCRtpSender::getParameters):
+        * Modules/mediastream/RTCRtpSender.h:
+        (WebCore::RTCRtpSender::backend):
+        * Modules/mediastream/RTCRtpSenderBackend.h:
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+        (WebCore::LibWebRTCMediaEndpoint::addTrack):
+        (WebCore::LibWebRTCMediaEndpoint::removeTrack):
+        (WebCore::LibWebRTCMediaEndpoint::doCreateOffer):
+        (WebCore::LibWebRTCMediaEndpoint::stop):
+        (WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveAudio const): Deleted.
+        (WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveVideo const): Deleted.
+        (WebCore::LibWebRTCMediaEndpoint::getRTCRtpSenderParameters): Deleted.
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
+        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
+        (WebCore::backendFromRTPSender):
+        (WebCore::LibWebRTCPeerConnectionBackend::addTrack):
+        (WebCore::LibWebRTCPeerConnectionBackend::addTransceiver):
+        (WebCore::LibWebRTCPeerConnectionBackend::removeTrack):
+        (WebCore::LibWebRTCPeerConnectionBackend::shouldOfferAllowToReceive const):
+        (WebCore::LibWebRTCPeerConnectionBackend::notifyRemovedTrack): Deleted.
+        (WebCore::LibWebRTCPeerConnectionBackend::getParameters const): Deleted.
+        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
+        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
+        (WebCore::LibWebRTCRtpSenderBackend::getParameters const):
+        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
+
 2018-09-04  Wenson Hsieh  <wenson_hs...@apple.com>
 
         Populate "text/uri-list" with multiple URLs when the pasteboard contains multiple URLs

Modified: trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.h (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.h	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.h	2018-09-05 00:04:01 UTC (rev 235649)
@@ -102,7 +102,7 @@
 
     virtual Ref<RTCRtpReceiver> createReceiver(const String& transceiverMid, const String& trackKind, const String& trackId) = 0;
     virtual ExceptionOr<Ref<RTCRtpSender>> addTrack(RTCRtpSender*, MediaStreamTrack&, const Vector<String>&);
-    virtual void notifyRemovedTrack(RTCRtpSender&) { }
+    virtual void removeTrack(RTCRtpSender&) { }
 
     virtual ExceptionOr<Ref<RTCRtpTransceiver>> addTransceiver(const String&, const RTCRtpTransceiverInit&);
     virtual ExceptionOr<Ref<RTCRtpTransceiver>> addTransceiver(Ref<MediaStreamTrack>&&, const RTCRtpTransceiverInit&);

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp	2018-09-05 00:04:01 UTC (rev 235649)
@@ -157,9 +157,8 @@
     if (shouldAbort)
         return { };
 
+    m_backend->removeTrack(sender);
     sender.stop();
-
-    m_backend->notifyRemovedTrack(sender);
     return { };
 }
 

Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.cpp (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.cpp	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.cpp	2018-09-05 00:04:01 UTC (rev 235649)
@@ -96,7 +96,7 @@
 {
     if (isStopped())
         return { };
-    return m_backend->getParameters(*this);
+    return m_backend->getParameters();
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.h (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.h	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.h	2018-09-05 00:04:01 UTC (rev 235649)
@@ -57,6 +57,7 @@
     void replaceTrack(RefPtr<MediaStreamTrack>&&, DOMPromiseDeferred<void>&&);
 
     RTCRtpParameters getParameters();
+    RTCRtpSenderBackend* backend() { return m_backend.get(); }
 
 private:
     RTCRtpSender(String&& trackKind, Vector<String>&& mediaStreamIds, std::unique_ptr<RTCRtpSenderBackend>&&);

Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpSenderBackend.h (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/RTCRtpSenderBackend.h	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpSenderBackend.h	2018-09-05 00:04:01 UTC (rev 235649)
@@ -37,7 +37,7 @@
 class RTCRtpSenderBackend {
 public:
     virtual void replaceTrack(RTCRtpSender&, RefPtr<MediaStreamTrack>&&, DOMPromiseDeferred<void>&&) = 0;
-    virtual RTCRtpParameters getParameters(RTCRtpSender&) const = 0;
+    virtual RTCRtpParameters getParameters() const = 0;
     virtual ~RTCRtpSenderBackend() = default;
 };
 

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp	2018-09-05 00:04:01 UTC (rev 235649)
@@ -194,9 +194,10 @@
     startLoggingStats();
 }
 
-bool LibWebRTCMediaEndpoint::addTrack(RTCRtpSender& sender, MediaStreamTrack& track, const Vector<String>& mediaStreamIds)
+bool LibWebRTCMediaEndpoint::addTrack(LibWebRTCRtpSenderBackend& sender, MediaStreamTrack& track, const Vector<String>& mediaStreamIds)
 {
     ASSERT(m_backend);
+    ASSERT(!sender.rtcSender());
 
     if (!RuntimeEnabledFeatures::sharedFeatures().webRTCUnifiedPlanEnabled()) {
         String mediaStreamId = mediaStreamIds.isEmpty() ? createCanonicalUUIDString() : mediaStreamIds[0];
@@ -217,9 +218,10 @@
         auto audioTrack = m_peerConnectionFactory.CreateAudioTrack(track.id().utf8().data(), trackSource.ptr());
         m_peerConnectionBackend.addAudioSource(WTFMove(trackSource));
         auto rtpSender = m_backend->AddTrack(audioTrack.get(), WTFMove(ids));
-        if (rtpSender.ok())
-            m_senders.add(&sender, rtpSender.MoveValue());
-        return rtpSender.ok();
+        if (!rtpSender.ok())
+            return false;
+        sender.setRTCSender(rtpSender.MoveValue());
+        return true;
     }
     case RealtimeMediaSource::Type::Video: {
         auto videoSource = RealtimeOutgoingVideoSource::create(track.privateTrack());
@@ -226,9 +228,10 @@
         auto videoTrack = m_peerConnectionFactory.CreateVideoTrack(track.id().utf8().data(), videoSource.ptr());
         m_peerConnectionBackend.addVideoSource(WTFMove(videoSource));
         auto rtpSender = m_backend->AddTrack(videoTrack.get(), WTFMove(ids));
-        if (rtpSender.ok())
-            m_senders.add(&sender, rtpSender.MoveValue());
-        return rtpSender.ok();
+        if (!rtpSender.ok())
+            return false;
+        sender.setRTCSender(rtpSender.MoveValue());
+        return true;
     }
     case RealtimeMediaSource::Type::None:
         ASSERT_NOT_REACHED();
@@ -236,48 +239,12 @@
     return false;
 }
 
-void LibWebRTCMediaEndpoint::removeTrack(RTCRtpSender& sender)
+void LibWebRTCMediaEndpoint::removeTrack(LibWebRTCRtpSenderBackend& sender)
 {
     ASSERT(m_backend);
-
-    auto rtcSender = m_senders.get(&sender);
-    if (!rtcSender)
-        return;
-    m_backend->RemoveTrack(rtcSender.get());
+    m_backend->RemoveTrack(sender.rtcSender());
 }
 
-bool LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveAudio() const
-{
-    ASSERT(!RuntimeEnabledFeatures::sharedFeatures().webRTCUnifiedPlanEnabled());
-    for (const auto& transceiver : m_peerConnectionBackend.connection().getTransceivers()) {
-        if (transceiver->sender().trackKind() != "audio")
-            continue;
-
-        if (transceiver->direction() == RTCRtpTransceiverDirection::Recvonly)
-            return true;
-
-        if (transceiver->direction() == RTCRtpTransceiverDirection::Sendrecv && !m_senders.contains(&transceiver->sender()))
-            return true;
-    }
-    return false;
-}
-
-bool LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveVideo() const
-{
-    ASSERT(!RuntimeEnabledFeatures::sharedFeatures().webRTCUnifiedPlanEnabled());
-    for (const auto& transceiver : m_peerConnectionBackend.connection().getTransceivers()) {
-        if (transceiver->sender().trackKind() != "video")
-            continue;
-
-        if (transceiver->direction() == RTCRtpTransceiverDirection::Recvonly)
-            return true;
-
-        if (transceiver->direction() == RTCRtpTransceiverDirection::Sendrecv && !m_senders.contains(&transceiver->sender()))
-            return true;
-    }
-    return false;
-}
-
 void LibWebRTCMediaEndpoint::doCreateOffer(const RTCOfferOptions& options)
 {
     ASSERT(m_backend);
@@ -288,9 +255,9 @@
     rtcOptions.voice_activity_detection = options.voiceActivityDetection;
 
     if (!RuntimeEnabledFeatures::sharedFeatures().webRTCUnifiedPlanEnabled()) {
-        if (shouldOfferAllowToReceiveAudio())
+        if (m_peerConnectionBackend.shouldOfferAllowToReceive("audio"_s))
             rtcOptions.offer_to_receive_audio = webrtc::PeerConnectionInterface::RTCOfferAnswerOptions::kOfferToReceiveMediaTrue;
-        if (shouldOfferAllowToReceiveVideo())
+        if (m_peerConnectionBackend.shouldOfferAllowToReceive("video"_s))
             rtcOptions.offer_to_receive_video = webrtc::PeerConnectionInterface::RTCOfferAnswerOptions::kOfferToReceiveMediaTrue;
     }
     m_backend->CreateOffer(&m_createSessionDescriptionObserver, rtcOptions);
@@ -470,7 +437,6 @@
     m_backend->Close();
     m_backend = nullptr;
     m_streams.clear();
-    m_senders.clear();
 }
 
 void LibWebRTCMediaEndpoint::OnRenegotiationNeeded()
@@ -614,14 +580,6 @@
     });
 }
 
-RTCRtpParameters LibWebRTCMediaEndpoint::getRTCRtpSenderParameters(RTCRtpSender& sender)
-{
-    auto rtcSender = m_senders.get(&sender);
-    if (!rtcSender)
-        return { };
-    return fillRtpParameters(rtcSender->GetParameters());
-}
-
 void LibWebRTCMediaEndpoint::gatherStatsForLogging()
 {
     LibWebRTCProvider::callOnWebRTCSignalingThread([protectedThis = makeRef(*this)] {

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h	2018-09-05 00:04:01 UTC (rev 235649)
@@ -61,6 +61,7 @@
 
 class LibWebRTCProvider;
 class LibWebRTCPeerConnectionBackend;
+class LibWebRTCRtpSenderBackend;
 class MediaStreamTrack;
 class RTCSessionDescription;
 
@@ -97,9 +98,8 @@
     RefPtr<RTCSessionDescription> pendingLocalDescription() const;
     RefPtr<RTCSessionDescription> pendingRemoteDescription() const;
 
-    bool addTrack(RTCRtpSender&, MediaStreamTrack&, const Vector<String>&);
-    void removeTrack(RTCRtpSender&);
-    RTCRtpParameters getRTCRtpSenderParameters(RTCRtpSender&);
+    bool addTrack(LibWebRTCRtpSenderBackend&, MediaStreamTrack&, const Vector<String>&);
+    void removeTrack(LibWebRTCRtpSenderBackend&);
 
 private:
     LibWebRTCMediaEndpoint(LibWebRTCPeerConnectionBackend&, LibWebRTCProvider&);
@@ -142,9 +142,6 @@
         : rtc::RefCountReleaseStatus::kDroppedLastRef;
     }
 
-    bool shouldOfferAllowToReceiveAudio() const;
-    bool shouldOfferAllowToReceiveVideo() const;
-
 #if !RELEASE_LOG_DISABLED
     const Logger& logger() const final { return m_logger.get(); }
     const void* logIdentifier() const final { return m_logIdentifier; }
@@ -167,7 +164,6 @@
     SetRemoteSessionDescriptionObserver<LibWebRTCMediaEndpoint> m_setRemoteSessionDescriptionObserver;
 
     HashMap<webrtc::MediaStreamInterface*, RefPtr<MediaStream>> m_streams;
-    HashMap<RTCRtpSender*, rtc::scoped_refptr<webrtc::RtpSenderInterface>> m_senders;
 
     bool m_isInitiator { false };
     Timer m_statsLogTimer;

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp	2018-09-05 00:04:01 UTC (rev 235649)
@@ -43,6 +43,7 @@
 #include "RealtimeIncomingVideoSource.h"
 #include "RealtimeOutgoingAudioSource.h"
 #include "RealtimeOutgoingVideoSource.h"
+#include "RuntimeEnabledFeatures.h"
 
 namespace WebCore {
 
@@ -331,6 +332,11 @@
     return m_endpoint->remoteDescription();
 }
 
+static inline LibWebRTCRtpSenderBackend& backendFromRTPSender(RTCRtpSender& sender)
+{
+    return static_cast<LibWebRTCRtpSenderBackend&>(*sender.backend());
+}
+
 ExceptionOr<Ref<RTCRtpSender>> LibWebRTCPeerConnectionBackend::addTrack(RTCRtpSender* sender, MediaStreamTrack& track, const Vector<String>& mediaStreamIds)
 {
     if (!sender) {
@@ -351,7 +357,7 @@
         m_peerConnection.addInternalTransceiver(WTFMove(transceiver));
     }
 
-    if (!m_endpoint->addTrack(*sender, track, mediaStreamIds))
+    if (!m_endpoint->addTrack(backendFromRTPSender(*sender), track, mediaStreamIds))
         return Exception { TypeError, "Unable to add track"_s };
 
     return makeRef(*sender);
@@ -367,8 +373,9 @@
 ExceptionOr<Ref<RTCRtpTransceiver>> LibWebRTCPeerConnectionBackend::addTransceiver(Ref<MediaStreamTrack>&& track, const RTCRtpTransceiverInit& init)
 {
     auto senderBackend = std::make_unique<LibWebRTCRtpSenderBackend>(*this, nullptr);
+    auto& backend = *senderBackend;
     auto sender = RTCRtpSender::create(track.copyRef(), Vector<String>(), WTFMove(senderBackend));
-    if (!m_endpoint->addTrack(sender.get(), track, Vector<String> { }))
+    if (!m_endpoint->addTrack(backend, track, Vector<String> { }))
         return Exception { InvalidAccessError, "Unable to add track"_s };
 
     return completeAddTransceiver(WTFMove(sender), init, track->id(), track->kind());
@@ -386,9 +393,9 @@
     return transceiver;
 }
 
-void LibWebRTCPeerConnectionBackend::notifyRemovedTrack(RTCRtpSender& sender)
+void LibWebRTCPeerConnectionBackend::removeTrack(RTCRtpSender& sender)
 {
-    m_endpoint->removeTrack(sender);
+    m_endpoint->removeTrack(backendFromRTPSender(sender));
 }
 
 template<typename Source>
@@ -444,11 +451,6 @@
     }
 }
 
-RTCRtpParameters LibWebRTCPeerConnectionBackend::getParameters(RTCRtpSender& sender) const
-{
-    return m_endpoint->getRTCRtpSenderParameters(sender);
-}
-
 void LibWebRTCPeerConnectionBackend::applyRotationForOutgoingVideoSources()
 {
     for (auto& source : m_videoSources)
@@ -455,6 +457,26 @@
         source->setApplyRotation(true);
 }
 
+bool LibWebRTCPeerConnectionBackend::shouldOfferAllowToReceive(const char* kind) const
+{
+    ASSERT(!RuntimeEnabledFeatures::sharedFeatures().webRTCUnifiedPlanEnabled());
+    for (const auto& transceiver : m_peerConnection.getTransceivers()) {
+        if (transceiver->sender().trackKind() != kind)
+            continue;
+
+        if (transceiver->direction() == RTCRtpTransceiverDirection::Recvonly)
+            return true;
+
+        if (transceiver->direction() != RTCRtpTransceiverDirection::Sendrecv)
+            continue;
+
+        auto& backend = static_cast<LibWebRTCRtpSenderBackend&>(*transceiver->sender().backend());
+        if (!backend.rtcSender())
+            return true;
+    }
+    return false;
+}
+
 } // namespace WebCore
 
 #endif // USE(LIBWEBRTC)

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h	2018-09-05 00:04:01 UTC (rev 235649)
@@ -56,8 +56,9 @@
     bool hasVideoSources() const { return m_videoSources.size(); }
 
     void replaceTrack(RTCRtpSender&, RefPtr<MediaStreamTrack>&&, DOMPromiseDeferred<void>&&);
-    RTCRtpParameters getParameters(RTCRtpSender&) const;
 
+    bool shouldOfferAllowToReceive(const char*) const;
+
 private:
     void doCreateOffer(RTCOfferOptions&&) final;
     void doCreateAnswer(RTCAnswerOptions&&) final;
@@ -90,7 +91,7 @@
     void getStatsSucceeded(const DeferredPromise&, Ref<RTCStatsReport>&&);
 
     ExceptionOr<Ref<RTCRtpSender>> addTrack(RTCRtpSender*, MediaStreamTrack&, const Vector<String>&) final;
-    void notifyRemovedTrack(RTCRtpSender&) final;
+    void removeTrack(RTCRtpSender&) final;
 
     ExceptionOr<Ref<RTCRtpTransceiver>> addTransceiver(const String&, const RTCRtpTransceiverInit&) final;
     ExceptionOr<Ref<RTCRtpTransceiver>> addTransceiver(Ref<MediaStreamTrack>&&, const RTCRtpTransceiverInit&) final;

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp	2018-09-05 00:04:01 UTC (rev 235649)
@@ -49,14 +49,11 @@
     m_peerConnectionBackend->replaceTrack(sender, WTFMove(track), WTFMove(promise));
 }
 
-RTCRtpParameters LibWebRTCRtpSenderBackend::getParameters(RTCRtpSender& sender) const
+RTCRtpParameters LibWebRTCRtpSenderBackend::getParameters() const
 {
-    if (!m_rtcSender) {
-        // FIXME: We should not need to go through the backend and should directly have m_rtcSender here.
-        if (!m_peerConnectionBackend)
-            return { };
-        return m_peerConnectionBackend->getParameters(sender);
-    }
+    if (!m_rtcSender)
+        return { };
+
     return fillRtpParameters(m_rtcSender->GetParameters());
 }
 

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h (235648 => 235649)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h	2018-09-04 23:51:12 UTC (rev 235648)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h	2018-09-05 00:04:01 UTC (rev 235649)
@@ -50,10 +50,12 @@
     {
     }
 
+    void setRTCSender(rtc::scoped_refptr<webrtc::RtpSenderInterface>&& rtcSender) { m_rtcSender = WTFMove(rtcSender); }
+    webrtc::RtpSenderInterface* rtcSender() { return m_rtcSender.get(); }
+
 private:
-    void setRTCSender(rtc::scoped_refptr<webrtc::RtpSenderInterface>&& rtcSender) { m_rtcSender = WTFMove(rtcSender); }
     void replaceTrack(RTCRtpSender&, RefPtr<MediaStreamTrack>&&, DOMPromiseDeferred<void>&&) final;
-    RTCRtpParameters getParameters(RTCRtpSender&) const final;
+    RTCRtpParameters getParameters() const final;
 
     WeakPtr<LibWebRTCPeerConnectionBackend> m_peerConnectionBackend;
     rtc::scoped_refptr<webrtc::RtpSenderInterface> m_rtcSender;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to