Title: [207952] trunk/Source/WebCore
Revision
207952
Author
[email protected]
Date
2016-10-27 00:31:13 -0700 (Thu, 27 Oct 2016)

Log Message

MediaPayload does not need to be refcounted
https://bugs.webkit.org/show_bug.cgi?id=164015

Patch by Youenn Fablet <[email protected]> on 2016-10-27
Reviewed by Eric Carlson.

No change of behavior.
Making MediaPayload a struct and no-longer ref-counted.
Small performance improvements in MediaEndpointOwr.

* Modules/mediastream/MediaEndpointPeerConnection.h:
* Modules/mediastream/SDPProcessor.cpp:
(WebCore::configurationFromJSON):
(WebCore::configurationToJSON):
* platform/mediastream/MediaEndpoint.h:
* platform/mediastream/MediaPayload.h:
(WebCore::MediaPayload::addParameter):
(WebCore::MediaPayload::create): Deleted.
(WebCore::MediaPayload::~MediaPayload): Deleted.
(WebCore::MediaPayload::type): Deleted.
(WebCore::MediaPayload::setType): Deleted.
(WebCore::MediaPayload::encodingName): Deleted.
(WebCore::MediaPayload::setEncodingName): Deleted.
(WebCore::MediaPayload::clockRate): Deleted.
(WebCore::MediaPayload::setClockRate): Deleted.
(WebCore::MediaPayload::channels): Deleted.
(WebCore::MediaPayload::setChannels): Deleted.
(WebCore::MediaPayload::ccmfir): Deleted.
(WebCore::MediaPayload::setCcmfir): Deleted.
(WebCore::MediaPayload::nackpli): Deleted.
(WebCore::MediaPayload::setNackpli): Deleted.
(WebCore::MediaPayload::nack): Deleted.
(WebCore::MediaPayload::setNack): Deleted.
(WebCore::MediaPayload::parameters): Deleted.
(WebCore::MediaPayload::clone): Deleted.
(WebCore::MediaPayload::MediaPayload): Deleted.
* platform/mediastream/PeerMediaDescription.h:
(WebCore::PeerMediaDescription::payloads):
(WebCore::PeerMediaDescription::addPayload):
(WebCore::PeerMediaDescription::setPayloads):
(WebCore::PeerMediaDescription::clone):
* platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:
(WebCore::MediaEndpointOwr::getDefaultAudioPayloads):
(WebCore::MediaEndpointOwr::getDefaultVideoPayloads):
(WebCore::MediaEndpointOwr::filterPayloads):
* platform/mock/MockMediaEndpoint.cpp:
(WebCore::MockMediaEndpoint::getDefaultAudioPayloads):
(WebCore::MockMediaEndpoint::getDefaultVideoPayloads):
(WebCore::MockMediaEndpoint::filterPayloads):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (207951 => 207952)


--- trunk/Source/WebCore/ChangeLog	2016-10-27 07:28:58 UTC (rev 207951)
+++ trunk/Source/WebCore/ChangeLog	2016-10-27 07:31:13 UTC (rev 207952)
@@ -1,3 +1,54 @@
+2016-10-27  Youenn Fablet  <[email protected]>
+
+        MediaPayload does not need to be refcounted
+        https://bugs.webkit.org/show_bug.cgi?id=164015
+
+        Reviewed by Eric Carlson.
+
+        No change of behavior.
+        Making MediaPayload a struct and no-longer ref-counted.
+        Small performance improvements in MediaEndpointOwr.
+
+        * Modules/mediastream/MediaEndpointPeerConnection.h:
+        * Modules/mediastream/SDPProcessor.cpp:
+        (WebCore::configurationFromJSON):
+        (WebCore::configurationToJSON):
+        * platform/mediastream/MediaEndpoint.h:
+        * platform/mediastream/MediaPayload.h:
+        (WebCore::MediaPayload::addParameter):
+        (WebCore::MediaPayload::create): Deleted.
+        (WebCore::MediaPayload::~MediaPayload): Deleted.
+        (WebCore::MediaPayload::type): Deleted.
+        (WebCore::MediaPayload::setType): Deleted.
+        (WebCore::MediaPayload::encodingName): Deleted.
+        (WebCore::MediaPayload::setEncodingName): Deleted.
+        (WebCore::MediaPayload::clockRate): Deleted.
+        (WebCore::MediaPayload::setClockRate): Deleted.
+        (WebCore::MediaPayload::channels): Deleted.
+        (WebCore::MediaPayload::setChannels): Deleted.
+        (WebCore::MediaPayload::ccmfir): Deleted.
+        (WebCore::MediaPayload::setCcmfir): Deleted.
+        (WebCore::MediaPayload::nackpli): Deleted.
+        (WebCore::MediaPayload::setNackpli): Deleted.
+        (WebCore::MediaPayload::nack): Deleted.
+        (WebCore::MediaPayload::setNack): Deleted.
+        (WebCore::MediaPayload::parameters): Deleted.
+        (WebCore::MediaPayload::clone): Deleted.
+        (WebCore::MediaPayload::MediaPayload): Deleted.
+        * platform/mediastream/PeerMediaDescription.h:
+        (WebCore::PeerMediaDescription::payloads):
+        (WebCore::PeerMediaDescription::addPayload):
+        (WebCore::PeerMediaDescription::setPayloads):
+        (WebCore::PeerMediaDescription::clone):
+        * platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:
+        (WebCore::MediaEndpointOwr::getDefaultAudioPayloads):
+        (WebCore::MediaEndpointOwr::getDefaultVideoPayloads):
+        (WebCore::MediaEndpointOwr::filterPayloads):
+        * platform/mock/MockMediaEndpoint.cpp:
+        (WebCore::MockMediaEndpoint::getDefaultAudioPayloads):
+        (WebCore::MockMediaEndpoint::getDefaultVideoPayloads):
+        (WebCore::MockMediaEndpoint::filterPayloads):
+
 2016-10-26  Dan Bernstein  <[email protected]>
 
         Improved the last build fix.

Modified: trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h (207951 => 207952)


--- trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h	2016-10-27 07:28:58 UTC (rev 207951)
+++ trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h	2016-10-27 07:31:13 UTC (rev 207952)
@@ -119,8 +119,8 @@
 
     std::unique_ptr<SDPProcessor> m_sdpProcessor;
 
-    Vector<RefPtr<MediaPayload>> m_defaultAudioPayloads;
-    Vector<RefPtr<MediaPayload>> m_defaultVideoPayloads;
+    Vector<MediaPayload> m_defaultAudioPayloads;
+    Vector<MediaPayload> m_defaultVideoPayloads;
 
     String m_cname;
     String m_iceUfrag;

Modified: trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp (207951 => 207952)


--- trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp	2016-10-27 07:28:58 UTC (rev 207951)
+++ trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp	2016-10-27 07:31:13 UTC (rev 207952)
@@ -223,39 +223,39 @@
             RefPtr<InspectorObject> payloadsObject = InspectorObject::create();
             payloadsArray->get(j)->asObject(payloadsObject);
 
-            RefPtr<MediaPayload> payload = MediaPayload::create();
+            MediaPayload payload;
 
             if (payloadsObject->getInteger(typeString(), intValue))
-                payload->setType(intValue);
+                payload.type = intValue;
 
             if (payloadsObject->getString(encodingNameString(), stringValue))
-                payload->setEncodingName(stringValue);
+                payload.encodingName = stringValue;
 
             if (payloadsObject->getInteger(clockRateString(), intValue))
-                payload->setClockRate(intValue);
+                payload.clockRate = intValue;
 
             if (payloadsObject->getInteger(channelsString(), intValue))
-                payload->setChannels(intValue);
+                payload.channels = intValue;
 
             if (payloadsObject->getBoolean(ccmfirString(), boolValue))
-                payload->setCcmfir(boolValue);
+                payload.ccmfir = boolValue;
 
             if (payloadsObject->getBoolean(nackpliString(), boolValue))
-                payload->setNackpli(boolValue);
+                payload.nackpli = boolValue;
 
             if (payloadsObject->getBoolean(nackString(), boolValue))
-                payload->setNack(boolValue);
+                payload.nack = boolValue;
 
             RefPtr<InspectorObject> parametersObject = InspectorObject::create();
             if (payloadsObject->getObject(parametersString(), parametersObject)) {
                 if (parametersObject->getInteger(packetizationModeString(), intValue))
-                    payload->addParameter("packetizationMode", intValue);
+                    payload.addParameter("packetizationMode", intValue);
 
                 if (parametersObject->getInteger(aptString(), intValue))
-                    payload->addParameter("apt", intValue);
+                    payload.addParameter("apt", intValue);
 
                 if (parametersObject->getInteger(rtxTimeString(), intValue))
-                    payload->addParameter("rtxTime", intValue);
+                    payload.addParameter("rtxTime", intValue);
             }
 
             mediaDescription->addPayload(WTFMove(payload));
@@ -362,22 +362,22 @@
 
         RefPtr<InspectorArray> payloadsArray = InspectorArray::create();
 
-        for (RefPtr<MediaPayload> payload : mediaDescription->payloads()) {
+        for (auto& payload : mediaDescription->payloads()) {
             RefPtr<InspectorObject> payloadObject = InspectorObject::create();
 
-            payloadObject->setInteger(typeString(), payload->type());
-            payloadObject->setString(encodingNameString(), payload->encodingName());
-            payloadObject->setInteger(clockRateString(), payload->clockRate());
-            payloadObject->setInteger(channelsString(), payload->channels());
-            payloadObject->setBoolean(ccmfirString(), payload->ccmfir());
-            payloadObject->setBoolean(nackpliString(), payload->nackpli());
-            payloadObject->setBoolean(nackString(), payload->nack());
+            payloadObject->setInteger(typeString(), payload.type);
+            payloadObject->setString(encodingNameString(), payload.encodingName);
+            payloadObject->setInteger(clockRateString(), payload.clockRate);
+            payloadObject->setInteger(channelsString(), payload.channels);
+            payloadObject->setBoolean(ccmfirString(), payload.ccmfir);
+            payloadObject->setBoolean(nackpliString(), payload.nackpli);
+            payloadObject->setBoolean(nackString(), payload.nack);
 
-            if (!payload->parameters().isEmpty()) {
+            if (!payload.parameters.isEmpty()) {
                 RefPtr<InspectorObject> parametersObject = InspectorObject::create();
 
-                for (auto& name : payload->parameters().keys())
-                    parametersObject->setInteger(name, payload->parameters().get(name));
+                for (auto& name : payload.parameters.keys())
+                    parametersObject->setInteger(name, payload.parameters.get(name));
 
                 payloadObject->setObject(parametersString(), parametersObject);
             }

Modified: trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h (207951 => 207952)


--- trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h	2016-10-27 07:28:58 UTC (rev 207951)
+++ trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h	2016-10-27 07:31:13 UTC (rev 207952)
@@ -43,11 +43,11 @@
 class MediaEndpoint;
 class MediaEndpointClient;
 class MediaEndpointSessionConfiguration;
-class MediaPayload;
+struct MediaPayload;
 class RealtimeMediaSource;
 
 typedef std::unique_ptr<MediaEndpoint> (*CreateMediaEndpoint)(MediaEndpointClient&);
-typedef Vector<RefPtr<MediaPayload>> MediaPayloadVector;
+typedef Vector<MediaPayload> MediaPayloadVector;
 typedef HashMap<String, RealtimeMediaSource*> RealtimeMediaSourceMap;
 
 class MediaEndpoint {

Modified: trunk/Source/WebCore/platform/mediastream/MediaPayload.h (207951 => 207952)


--- trunk/Source/WebCore/platform/mediastream/MediaPayload.h	2016-10-27 07:28:58 UTC (rev 207951)
+++ trunk/Source/WebCore/platform/mediastream/MediaPayload.h	2016-10-27 07:31:13 UTC (rev 207952)
@@ -28,90 +28,34 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef MediaPayload_h
-#define MediaPayload_h
+#pragma once
 
 #if ENABLE(WEB_RTC)
 
 #include <wtf/HashMap.h>
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
 #include <wtf/text/StringHash.h>
 
 namespace WebCore {
 
-class MediaPayload : public RefCounted<MediaPayload> {
+struct MediaPayload {
 public:
-    static RefPtr<MediaPayload> create()
-    {
-        return adoptRef(new MediaPayload());
-    }
-    virtual ~MediaPayload() { }
+    void addParameter(const String& name, unsigned value) { parameters.set(name, value); }
 
-    unsigned type() const { return m_type; }
-    void setType(unsigned type) { m_type = type; }
+    unsigned type { 0 };
+    String encodingName;
+    unsigned clockRate { 0 };
 
-    const String& encodingName() const { return m_encodingName; }
-    void setEncodingName(const String & encodingName) { m_encodingName = encodingName; }
-
-    unsigned clockRate() const { return m_clockRate; }
-    void setClockRate(unsigned clockRate) { m_clockRate = clockRate; }
-
-    unsigned channels() const { return m_channels; }
-    void setChannels(unsigned channels) { m_channels = channels; }
-
-    bool ccmfir() const { return m_ccmfir; }
-    void setCcmfir(bool ccmfir) { m_ccmfir = ccmfir; }
-
-    bool nackpli() const { return m_nackpli; }
-    void setNackpli(bool nackpli) { m_nackpli = nackpli; }
-
-    bool nack() const { return m_nack; }
-    void setNack(bool nack) { m_nack = nack; }
-
-    const HashMap<String, unsigned>& parameters() const { return m_parameters; }
-    void addParameter(const String& name, unsigned value) { m_parameters.set(name, value); }
-
-    RefPtr<MediaPayload> clone() const
-    {
-        RefPtr<MediaPayload> copy = create();
-
-        copy->m_type = m_type;
-        copy->m_encodingName = String(m_encodingName);
-        copy->m_clockRate = m_clockRate;
-
-        copy->m_channels = m_channels;
-
-        copy->m_ccmfir = m_ccmfir;
-        copy->m_nackpli = m_nackpli;
-        copy->m_nack = m_nack;
-
-        for (auto& key : m_parameters.keys())
-            copy->m_parameters.add(key, m_parameters.get(key));
-
-        return copy;
-    }
-
-private:
-    MediaPayload() { }
-
-    unsigned m_type { 0 };
-    String m_encodingName;
-    unsigned m_clockRate { 0 };
-
     // audio
-    unsigned m_channels { 0 };
+    unsigned channels { 0 };
 
     // video
-    bool m_ccmfir { false };
-    bool m_nackpli { false };
-    bool m_nack { false };
+    bool ccmfir { false };
+    bool nackpli { false };
+    bool nack { false };
 
-    HashMap<String, unsigned> m_parameters;
+    HashMap<String, unsigned> parameters;
 };
 
 } // namespace WebCore
 
 #endif // ENABLE(WEB_RTC)
-
-#endif // MediaPayload_h

Modified: trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h (207951 => 207952)


--- trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h	2016-10-27 07:28:58 UTC (rev 207951)
+++ trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h	2016-10-27 07:31:13 UTC (rev 207952)
@@ -64,10 +64,10 @@
     const String& mid() const { return m_mid; }
     void setMid(const String& mid) { m_mid = mid; }
 
-    const Vector<RefPtr<MediaPayload>>& payloads() const { return m_payloads; }
-    void addPayload(RefPtr<MediaPayload>&& payload) { m_payloads.append(WTFMove(payload)); }
-    void setPayloads(Vector<RefPtr<MediaPayload>>&& payloads) { m_payloads = payloads; }
-    void setPayloads(const Vector<RefPtr<MediaPayload>>& payloads) { m_payloads = payloads; }
+    const Vector<MediaPayload>& payloads() const { return m_payloads; }
+    void addPayload(MediaPayload&& payload) { m_payloads.append(WTFMove(payload)); }
+    void setPayloads(Vector<MediaPayload>&& payloads) { m_payloads = payloads; }
+    void setPayloads(const Vector<MediaPayload>& payloads) { m_payloads = payloads; }
 
     bool rtcpMux() const { return m_rtcpMux; }
     void setRtcpMux(bool rtcpMux) { m_rtcpMux = rtcpMux; }
@@ -119,8 +119,7 @@
         copy->m_mode = String(m_mode);
         copy->m_mid = String(m_mid);
 
-        for (auto& payload : m_payloads)
-            copy->m_payloads.append(payload->clone());
+        copy->m_payloads = m_payloads;
 
         copy->m_rtcpMux = m_rtcpMux;
         copy->m_rtcpAddress = String(m_rtcpAddress);
@@ -155,7 +154,7 @@
     String m_mode { "sendrecv" };
     String m_mid;
 
-    Vector<RefPtr<MediaPayload>> m_payloads;
+    Vector<MediaPayload> m_payloads;
 
     bool m_rtcpMux { true };
     String m_rtcpAddress;

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


--- trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp	2016-10-27 07:28:58 UTC (rev 207951)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp	2016-10-27 07:31:13 UTC (rev 207952)
@@ -110,26 +110,26 @@
     MediaPayloadVector payloads;
 
     // FIXME: This list should be based on what is available in the platform (bug: http://webkit.org/b/163723)
-    RefPtr<MediaPayload> payload = MediaPayload::create();
-    payload->setType(111);
-    payload->setEncodingName("OPUS");
-    payload->setClockRate(48000);
-    payload->setChannels(2);
-    payloads.append(payload);
+    MediaPayload payload1;
+    payload1.type = 111;
+    payload1.encodingName = "OPUS";
+    payload1.clockRate = 48000;
+    payload1.channels = 2;
+    payloads.append(WTFMove(payload1));
 
-    payload = MediaPayload::create();
-    payload->setType(8);
-    payload->setEncodingName("PCMA");
-    payload->setClockRate(8000);
-    payload->setChannels(1);
-    payloads.append(payload);
+    MediaPayload payload2;
+    payload2.type = 8;
+    payload2.encodingName = "PCMA";
+    payload2.clockRate = 8000;
+    payload2.channels = 1;
+    payloads.append(WTFMove(payload2));
 
-    payload = MediaPayload::create();
-    payload->setType(0);
-    payload->setEncodingName("PCMU");
-    payload->setClockRate(8000);
-    payload->setChannels(1);
-    payloads.append(payload);
+    MediaPayload payload3;
+    payload3.type = 0;
+    payload3.encodingName = "PCMU";
+    payload3.clockRate = 8000;
+    payload3.channels = 1;
+    payloads.append(WTFMove(payload3));
 
     return payloads;
 }
@@ -139,39 +139,40 @@
     MediaPayloadVector payloads;
 
     // FIXME: This list should be based on what is available in the platform (bug: http://webkit.org/b/163723)
-    RefPtr<MediaPayload> payload = MediaPayload::create();
-    payload->setType(103);
-    payload->setEncodingName("H264");
-    payload->setClockRate(90000);
-    payload->setCcmfir(true);
-    payload->setNackpli(true);
-    payload->addParameter("packetizationMode", 1);
-    payloads.append(payload);
+    MediaPayload payload1;
+    payload1.type = 103;
+    payload1.encodingName = "H264";
+    payload1.clockRate = 90000;
+    payload1.ccmfir = true;
+    payload1.nackpli = true;
+    payload1.addParameter("packetizationMode", 1);
+    payloads.append(WTFMove(payload1));
 
-    payload = MediaPayload::create();
-    payload->setType(100);
-    payload->setEncodingName("VP8");
-    payload->setClockRate(90000);
-    payload->setCcmfir(true);
-    payload->setNackpli(true);
-    payload->setNack(true);
-    payloads.append(payload);
+    MediaPayload payload2;
+    payload2.type = 100;
+    payload2.encodingName = "VP8";
+    payload2.clockRate = 90000;
+    payload2.ccmfir = true;
+    payload2.nackpli = true;
+    payload2.nack = true;
+    payloads.append(WTFMove(payload2));
 
-    payload = MediaPayload::create();
-    payload->setType(120);
-    payload->setEncodingName("RTX");
-    payload->setClockRate(90000);
-    payload->addParameter("apt", 100);
-    payload->addParameter("rtxTime", 200);
-    payloads.append(payload);
+    MediaPayload payload3;
+    payload3.type = 120;
+    payload3.encodingName = "RTX";
+    payload3.clockRate = 90000;
+    payload1.addParameter("apt", 100);
+    payload1.addParameter("rtxTime", 200);
+    payloads.append(WTFMove(payload3));
 
     return payloads;
 }
 
-static bool payloadsContainType(MediaPayloadVector payloads, unsigned payloadType)
+static bool payloadsContainType(const Vector<const MediaPayload*>& payloads, unsigned payloadType)
 {
-    for (auto& payload : payloads) {
-        if (payload->type() == payloadType)
+    for (auto payload : payloads) {
+        ASSERT(payload);
+        if (payload->type == payloadType)
             return true;
     }
     return false;
@@ -179,13 +180,13 @@
 
 MediaPayloadVector MediaEndpointOwr::filterPayloads(const MediaPayloadVector& remotePayloads, const MediaPayloadVector& defaultPayloads)
 {
-    MediaPayloadVector filteredPayloads;
+    Vector<const MediaPayload*> filteredPayloads;
 
     for (auto& remotePayload : remotePayloads) {
-        MediaPayload* defaultPayload = nullptr;
+        const MediaPayload* defaultPayload = nullptr;
         for (auto& p : defaultPayloads) {
-            if (p->encodingName() == remotePayload->encodingName().convertToASCIIUppercase()) {
-                defaultPayload = p.get();
+            if (p.encodingName == remotePayload.encodingName.convertToASCIIUppercase()) {
+                defaultPayload = &p;
                 break;
             }
         }
@@ -192,19 +193,19 @@
         if (!defaultPayload)
             continue;
 
-        if (defaultPayload->parameters().contains("packetizationMode") && remotePayload->parameters().contains("packetizationMode")
-            && (defaultPayload->parameters().get("packetizationMode") != defaultPayload->parameters().get("packetizationMode")))
+        if (defaultPayload->parameters.contains("packetizationMode") && remotePayload.parameters.contains("packetizationMode")
+            && (defaultPayload->parameters.get("packetizationMode") != defaultPayload->parameters.get("packetizationMode")))
             continue;
 
-        filteredPayloads.append(remotePayload);
+        filteredPayloads.append(&remotePayload);
     }
 
     MediaPayloadVector filteredAptPayloads;
 
-    for (auto& filteredPayload : filteredPayloads) {
-        if (filteredPayload->parameters().contains("apt") && (!payloadsContainType(filteredPayloads, filteredPayload->parameters().get("apt"))))
+    for (auto filteredPayload : filteredPayloads) {
+        if (filteredPayload->parameters.contains("apt") && (!payloadsContainType(filteredPayloads, filteredPayload->parameters.get("apt"))))
             continue;
-        filteredAptPayloads.append(filteredPayload);
+        filteredAptPayloads.append(*filteredPayload);
     }
 
     return filteredAptPayloads;
@@ -235,12 +236,12 @@
     return UpdateResult::Success;
 }
 
-static RefPtr<MediaPayload> findRtxPayload(MediaPayloadVector payloads, unsigned apt)
+static const MediaPayload* findRtxPayload(const MediaPayloadVector& payloads, unsigned apt)
 {
     for (auto& payload : payloads) {
-        if (payload->encodingName().convertToASCIIUppercase() == "RTX" && payload->parameters().contains("apt")
-            && (payload->parameters().get("apt") == apt))
-            return payload;
+        if (payload.encodingName.convertToASCIIUppercase() == "RTX" && payload.parameters.contains("apt")
+            && (payload.parameters.get("apt") == apt))
+            return &payload;
     }
     return nullptr;
 }
@@ -276,10 +277,10 @@
         if (!sendSourceMap.contains(mdesc.mid()))
             continue;
 
-        MediaPayload* payload = nullptr;
+        const MediaPayload* payload = nullptr;
         for (auto& p : mdesc.payloads()) {
-            if (p->encodingName().convertToASCIIUppercase() != "RTX") {
-                payload = p.get();
+            if (p.encodingName.convertToASCIIUppercase() != "RTX") {
+                payload = &p;
                 break;
             }
         }
@@ -287,19 +288,19 @@
         if (!payload)
             return UpdateResult::Failed;
 
-        RefPtr<MediaPayload> rtxPayload = findRtxPayload(mdesc.payloads(), payload->type());
-        RealtimeMediaSourceOwr* source = static_cast<RealtimeMediaSourceOwr*>(sendSourceMap.get(mdesc.mid()));
+        auto* rtxPayload = findRtxPayload(mdesc.payloads(), payload->type);
+        auto* source = static_cast<RealtimeMediaSourceOwr*>(sendSourceMap.get(mdesc.mid()));
 
-        ASSERT(codecTypes.find(payload->encodingName().convertToASCIIUppercase()) != notFound);
-        OwrCodecType codecType = static_cast<OwrCodecType>(codecTypes.find(payload->encodingName().convertToASCIIUppercase()));
+        ASSERT(codecTypes.find(payload->encodingName.convertToASCIIUppercase()) != notFound);
+        auto codecType = static_cast<OwrCodecType>(codecTypes.find(payload->encodingName.convertToASCIIUppercase()));
 
         OwrPayload* sendPayload;
         if (mdesc.type() == "audio")
-            sendPayload = owr_audio_payload_new(codecType, payload->type(), payload->clockRate(), payload->channels());
+            sendPayload = owr_audio_payload_new(codecType, payload->type, payload->clockRate, payload->channels);
         else {
-            sendPayload = owr_video_payload_new(codecType, payload->type(), payload->clockRate(), payload->ccmfir(), payload->nackpli());
-            g_object_set(sendPayload, "rtx-payload-type", rtxPayload ? rtxPayload->type() : -1,
-                "rtx-time", rtxPayload && rtxPayload->parameters().contains("rtxTime") ? rtxPayload->parameters().get("rtxTime") : 0, nullptr);
+            sendPayload = owr_video_payload_new(codecType, payload->type, payload->clockRate, payload->ccmfir, payload->nackpli);
+            g_object_set(sendPayload, "rtx-payload-type", rtxPayload ? rtxPayload->type : -1,
+                "rtx-time", rtxPayload && rtxPayload->parameters.contains("rtxTime") ? rtxPayload->parameters.get("rtxTime") : 0, nullptr);
         }
 
         owr_media_session_set_send_payload(OWR_MEDIA_SESSION(session), sendPayload);
@@ -489,21 +490,21 @@
     g_signal_connect(mediaSession, "on-incoming-source", G_CALLBACK(gotIncomingSource), this);
 
     for (auto& payload : mediaDescription->payloads()) {
-        if (payload->encodingName().convertToASCIIUppercase() == "RTX")
+        if (payload.encodingName.convertToASCIIUppercase() == "RTX")
             continue;
 
-        RefPtr<MediaPayload> rtxPayload = findRtxPayload(mediaDescription->payloads(), payload->type());
+        auto* rtxPayload = findRtxPayload(mediaDescription->payloads(), payload.type);
 
-        ASSERT(codecTypes.find(payload->encodingName()) != notFound);
-        OwrCodecType codecType = static_cast<OwrCodecType>(codecTypes.find(payload->encodingName().convertToASCIIUppercase()));
+        ASSERT(codecTypes.find(payload.encodingName) != notFound);
+        OwrCodecType codecType = static_cast<OwrCodecType>(codecTypes.find(payload.encodingName.convertToASCIIUppercase()));
 
         OwrPayload* receivePayload;
         if (mediaDescription->type() == "audio")
-            receivePayload = owr_audio_payload_new(codecType, payload->type(), payload->clockRate(), payload->channels());
+            receivePayload = owr_audio_payload_new(codecType, payload.type, payload.clockRate, payload.channels);
         else {
-            receivePayload = owr_video_payload_new(codecType, payload->type(), payload->clockRate(), payload->ccmfir(), payload->nackpli());
-            g_object_set(receivePayload, "rtx-payload-type", rtxPayload ? rtxPayload->type() : -1,
-                "rtx-time", rtxPayload && rtxPayload->parameters().contains("rtxTime") ? rtxPayload->parameters().get("rtxTime") : 0, nullptr);
+            receivePayload = owr_video_payload_new(codecType, payload.type, payload.clockRate, payload.ccmfir, payload.nackpli);
+            g_object_set(receivePayload, "rtx-payload-type", rtxPayload ? rtxPayload->type : -1,
+                "rtx-time", rtxPayload && rtxPayload->parameters.contains("rtxTime") ? rtxPayload->parameters.get("rtxTime") : 0, nullptr);
         }
 
         owr_media_session_add_receive_payload(mediaSession, receivePayload);

Modified: trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp (207951 => 207952)


--- trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp	2016-10-27 07:28:58 UTC (rev 207951)
+++ trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp	2016-10-27 07:31:13 UTC (rev 207952)
@@ -74,26 +74,26 @@
 {
     MediaPayloadVector payloads;
 
-    RefPtr<MediaPayload> payload = MediaPayload::create();
-    payload->setType(111);
-    payload->setEncodingName("OPUS");
-    payload->setClockRate(48000);
-    payload->setChannels(2);
-    payloads.append(payload);
+    MediaPayload payload1;
+    payload1.type = 111;
+    payload1.encodingName = "OPUS";
+    payload1.clockRate = 48000;
+    payload1.channels = 2;
+    payloads.append(WTFMove(payload1));
 
-    payload = MediaPayload::create();
-    payload->setType(8);
-    payload->setEncodingName("PCMA");
-    payload->setClockRate(8000);
-    payload->setChannels(1);
-    payloads.append(payload);
+    MediaPayload payload2;
+    payload2.type = 8;
+    payload2.encodingName = "PCMA";
+    payload2.clockRate = 8000;
+    payload2.channels = 1;
+    payloads.append(WTFMove(payload2));
 
-    payload = MediaPayload::create();
-    payload->setType(0);
-    payload->setEncodingName("PCMU");
-    payload->setClockRate(8000);
-    payload->setChannels(1);
-    payloads.append(payload);
+    MediaPayload payload3;
+    payload3.type = 0;
+    payload3.encodingName = "PCMU";
+    payload3.clockRate = 8000;
+    payload3.channels = 1;
+    payloads.append(WTFMove(payload3));
 
     return payloads;
 }
@@ -102,31 +102,31 @@
 {
     MediaPayloadVector payloads;
 
-    RefPtr<MediaPayload> payload = MediaPayload::create();
-    payload->setType(103);
-    payload->setEncodingName("H264");
-    payload->setClockRate(90000);
-    payload->setCcmfir(true);
-    payload->setNackpli(true);
-    payload->addParameter("packetizationMode", 1);
-    payloads.append(payload);
+    MediaPayload payload1;
+    payload1.type = 103;
+    payload1.encodingName = "H264";
+    payload1.clockRate = 90000;
+    payload1.ccmfir = true;
+    payload1.nackpli = true;
+    payload1.addParameter("packetizationMode", 1);
+    payloads.append(WTFMove(payload1));
 
-    payload = MediaPayload::create();
-    payload->setType(100);
-    payload->setEncodingName("VP8");
-    payload->setClockRate(90000);
-    payload->setCcmfir(true);
-    payload->setNackpli(true);
-    payload->setNack(true);
-    payloads.append(payload);
+    MediaPayload payload2;
+    payload2.type = 100;
+    payload2.encodingName = "VP8";
+    payload2.clockRate = 90000;
+    payload2.ccmfir = true;
+    payload2.nackpli = true;
+    payload2.nack = true;
+    payloads.append(WTFMove(payload2));
 
-    payload = MediaPayload::create();
-    payload->setType(120);
-    payload->setEncodingName("RTX");
-    payload->setClockRate(90000);
-    payload->addParameter("apt", 100);
-    payload->addParameter("rtxTime", 200);
-    payloads.append(payload);
+    MediaPayload payload3;
+    payload3.type = 120;
+    payload3.encodingName = "RTX";
+    payload3.clockRate = 90000;
+    payload3.addParameter("apt", 100);
+    payload3.addParameter("rtxTime", 200);
+    payloads.append(WTFMove(payload3));
 
     return payloads;
 }
@@ -136,10 +136,10 @@
     MediaPayloadVector filteredPayloads;
 
     for (auto& remotePayload : remotePayloads) {
-        MediaPayload* defaultPayload = nullptr;
+        const MediaPayload* defaultPayload = nullptr;
         for (auto& payload : defaultPayloads) {
-            if (payload->encodingName() == remotePayload->encodingName().convertToASCIIUppercase()) {
-                defaultPayload = payload.get();
+            if (payload.encodingName == remotePayload.encodingName.convertToASCIIUppercase()) {
+                defaultPayload = &payload;
                 break;
             }
         }
@@ -146,8 +146,8 @@
         if (!defaultPayload)
             continue;
 
-        if (defaultPayload->parameters().contains("packetizationMode") && remotePayload->parameters().contains("packetizationMode")
-            && (defaultPayload->parameters().get("packetizationMode") != defaultPayload->parameters().get("packetizationMode")))
+        if (defaultPayload->parameters.contains("packetizationMode") && remotePayload.parameters.contains("packetizationMode")
+            && (defaultPayload->parameters.get("packetizationMode") != defaultPayload->parameters.get("packetizationMode")))
             continue;
 
         filteredPayloads.append(remotePayload);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to