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);