<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[207952] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/207952">207952</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-10-27 00:31:13 -0700 (Thu, 27 Oct 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>MediaPayload does not need to be refcounted
https://bugs.webkit.org/show_bug.cgi?id=164015
Patch by Youenn Fablet <youenn@apple.com> 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):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaEndpointPeerConnectionh">trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamSDPProcessorcpp">trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamMediaEndpointh">trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamMediaPayloadh">trunk/Source/WebCore/platform/mediastream/MediaPayload.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamPeerMediaDescriptionh">trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamopenwebrtcMediaEndpointOwrcpp">trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockMediaEndpointcpp">trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (207951 => 207952)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,54 @@
</span><ins>+2016-10-27 Youenn Fablet <youenn@apple.com>
+
+ 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):
+
</ins><span class="cx"> 2016-10-26 Dan Bernstein <mitz@apple.com>
</span><span class="cx">
</span><span class="cx"> Improved the last build fix.
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaEndpointPeerConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h (207951 => 207952)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -119,8 +119,8 @@
</span><span class="cx">
</span><span class="cx"> std::unique_ptr<SDPProcessor> m_sdpProcessor;
</span><span class="cx">
</span><del>- Vector<RefPtr<MediaPayload>> m_defaultAudioPayloads;
- Vector<RefPtr<MediaPayload>> m_defaultVideoPayloads;
</del><ins>+ Vector<MediaPayload> m_defaultAudioPayloads;
+ Vector<MediaPayload> m_defaultVideoPayloads;
</ins><span class="cx">
</span><span class="cx"> String m_cname;
</span><span class="cx"> String m_iceUfrag;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamSDPProcessorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp (207951 => 207952)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -223,39 +223,39 @@
</span><span class="cx"> RefPtr<InspectorObject> payloadsObject = InspectorObject::create();
</span><span class="cx"> payloadsArray->get(j)->asObject(payloadsObject);
</span><span class="cx">
</span><del>- RefPtr<MediaPayload> payload = MediaPayload::create();
</del><ins>+ MediaPayload payload;
</ins><span class="cx">
</span><span class="cx"> if (payloadsObject->getInteger(typeString(), intValue))
</span><del>- payload->setType(intValue);
</del><ins>+ payload.type = intValue;
</ins><span class="cx">
</span><span class="cx"> if (payloadsObject->getString(encodingNameString(), stringValue))
</span><del>- payload->setEncodingName(stringValue);
</del><ins>+ payload.encodingName = stringValue;
</ins><span class="cx">
</span><span class="cx"> if (payloadsObject->getInteger(clockRateString(), intValue))
</span><del>- payload->setClockRate(intValue);
</del><ins>+ payload.clockRate = intValue;
</ins><span class="cx">
</span><span class="cx"> if (payloadsObject->getInteger(channelsString(), intValue))
</span><del>- payload->setChannels(intValue);
</del><ins>+ payload.channels = intValue;
</ins><span class="cx">
</span><span class="cx"> if (payloadsObject->getBoolean(ccmfirString(), boolValue))
</span><del>- payload->setCcmfir(boolValue);
</del><ins>+ payload.ccmfir = boolValue;
</ins><span class="cx">
</span><span class="cx"> if (payloadsObject->getBoolean(nackpliString(), boolValue))
</span><del>- payload->setNackpli(boolValue);
</del><ins>+ payload.nackpli = boolValue;
</ins><span class="cx">
</span><span class="cx"> if (payloadsObject->getBoolean(nackString(), boolValue))
</span><del>- payload->setNack(boolValue);
</del><ins>+ payload.nack = boolValue;
</ins><span class="cx">
</span><span class="cx"> RefPtr<InspectorObject> parametersObject = InspectorObject::create();
</span><span class="cx"> if (payloadsObject->getObject(parametersString(), parametersObject)) {
</span><span class="cx"> if (parametersObject->getInteger(packetizationModeString(), intValue))
</span><del>- payload->addParameter("packetizationMode", intValue);
</del><ins>+ payload.addParameter("packetizationMode", intValue);
</ins><span class="cx">
</span><span class="cx"> if (parametersObject->getInteger(aptString(), intValue))
</span><del>- payload->addParameter("apt", intValue);
</del><ins>+ payload.addParameter("apt", intValue);
</ins><span class="cx">
</span><span class="cx"> if (parametersObject->getInteger(rtxTimeString(), intValue))
</span><del>- payload->addParameter("rtxTime", intValue);
</del><ins>+ payload.addParameter("rtxTime", intValue);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> mediaDescription->addPayload(WTFMove(payload));
</span><span class="lines">@@ -362,22 +362,22 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<InspectorArray> payloadsArray = InspectorArray::create();
</span><span class="cx">
</span><del>- for (RefPtr<MediaPayload> payload : mediaDescription->payloads()) {
</del><ins>+ for (auto& payload : mediaDescription->payloads()) {
</ins><span class="cx"> RefPtr<InspectorObject> payloadObject = InspectorObject::create();
</span><span class="cx">
</span><del>- 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());
</del><ins>+ 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);
</ins><span class="cx">
</span><del>- if (!payload->parameters().isEmpty()) {
</del><ins>+ if (!payload.parameters.isEmpty()) {
</ins><span class="cx"> RefPtr<InspectorObject> parametersObject = InspectorObject::create();
</span><span class="cx">
</span><del>- for (auto& name : payload->parameters().keys())
- parametersObject->setInteger(name, payload->parameters().get(name));
</del><ins>+ for (auto& name : payload.parameters.keys())
+ parametersObject->setInteger(name, payload.parameters.get(name));
</ins><span class="cx">
</span><span class="cx"> payloadObject->setObject(parametersString(), parametersObject);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaEndpointh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h (207951 => 207952)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -43,11 +43,11 @@
</span><span class="cx"> class MediaEndpoint;
</span><span class="cx"> class MediaEndpointClient;
</span><span class="cx"> class MediaEndpointSessionConfiguration;
</span><del>-class MediaPayload;
</del><ins>+struct MediaPayload;
</ins><span class="cx"> class RealtimeMediaSource;
</span><span class="cx">
</span><span class="cx"> typedef std::unique_ptr<MediaEndpoint> (*CreateMediaEndpoint)(MediaEndpointClient&);
</span><del>-typedef Vector<RefPtr<MediaPayload>> MediaPayloadVector;
</del><ins>+typedef Vector<MediaPayload> MediaPayloadVector;
</ins><span class="cx"> typedef HashMap<String, RealtimeMediaSource*> RealtimeMediaSourceMap;
</span><span class="cx">
</span><span class="cx"> class MediaEndpoint {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaPayloadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaPayload.h (207951 => 207952)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -28,90 +28,34 @@
</span><span class="cx"> * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx"> */
</span><span class="cx">
</span><del>-#ifndef MediaPayload_h
-#define MediaPayload_h
</del><ins>+#pragma once
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(WEB_RTC)
</span><span class="cx">
</span><span class="cx"> #include <wtf/HashMap.h>
</span><del>-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
</del><span class="cx"> #include <wtf/text/StringHash.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class MediaPayload : public RefCounted<MediaPayload> {
</del><ins>+struct MediaPayload {
</ins><span class="cx"> public:
</span><del>- static RefPtr<MediaPayload> create()
- {
- return adoptRef(new MediaPayload());
- }
- virtual ~MediaPayload() { }
</del><ins>+ void addParameter(const String& name, unsigned value) { parameters.set(name, value); }
</ins><span class="cx">
</span><del>- unsigned type() const { return m_type; }
- void setType(unsigned type) { m_type = type; }
</del><ins>+ unsigned type { 0 };
+ String encodingName;
+ unsigned clockRate { 0 };
</ins><span class="cx">
</span><del>- 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 };
-
</del><span class="cx"> // audio
</span><del>- unsigned m_channels { 0 };
</del><ins>+ unsigned channels { 0 };
</ins><span class="cx">
</span><span class="cx"> // video
</span><del>- bool m_ccmfir { false };
- bool m_nackpli { false };
- bool m_nack { false };
</del><ins>+ bool ccmfir { false };
+ bool nackpli { false };
+ bool nack { false };
</ins><span class="cx">
</span><del>- HashMap<String, unsigned> m_parameters;
</del><ins>+ HashMap<String, unsigned> parameters;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #endif // ENABLE(WEB_RTC)
</span><del>-
-#endif // MediaPayload_h
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamPeerMediaDescriptionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h (207951 => 207952)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -64,10 +64,10 @@
</span><span class="cx"> const String& mid() const { return m_mid; }
</span><span class="cx"> void setMid(const String& mid) { m_mid = mid; }
</span><span class="cx">
</span><del>- 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; }
</del><ins>+ 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; }
</ins><span class="cx">
</span><span class="cx"> bool rtcpMux() const { return m_rtcpMux; }
</span><span class="cx"> void setRtcpMux(bool rtcpMux) { m_rtcpMux = rtcpMux; }
</span><span class="lines">@@ -119,8 +119,7 @@
</span><span class="cx"> copy->m_mode = String(m_mode);
</span><span class="cx"> copy->m_mid = String(m_mid);
</span><span class="cx">
</span><del>- for (auto& payload : m_payloads)
- copy->m_payloads.append(payload->clone());
</del><ins>+ copy->m_payloads = m_payloads;
</ins><span class="cx">
</span><span class="cx"> copy->m_rtcpMux = m_rtcpMux;
</span><span class="cx"> copy->m_rtcpAddress = String(m_rtcpAddress);
</span><span class="lines">@@ -155,7 +154,7 @@
</span><span class="cx"> String m_mode { "sendrecv" };
</span><span class="cx"> String m_mid;
</span><span class="cx">
</span><del>- Vector<RefPtr<MediaPayload>> m_payloads;
</del><ins>+ Vector<MediaPayload> m_payloads;
</ins><span class="cx">
</span><span class="cx"> bool m_rtcpMux { true };
</span><span class="cx"> String m_rtcpAddress;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamopenwebrtcMediaEndpointOwrcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp (207951 => 207952)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -110,26 +110,26 @@
</span><span class="cx"> MediaPayloadVector payloads;
</span><span class="cx">
</span><span class="cx"> // FIXME: This list should be based on what is available in the platform (bug: http://webkit.org/b/163723)
</span><del>- RefPtr<MediaPayload> payload = MediaPayload::create();
- payload->setType(111);
- payload->setEncodingName("OPUS");
- payload->setClockRate(48000);
- payload->setChannels(2);
- payloads.append(payload);
</del><ins>+ MediaPayload payload1;
+ payload1.type = 111;
+ payload1.encodingName = "OPUS";
+ payload1.clockRate = 48000;
+ payload1.channels = 2;
+ payloads.append(WTFMove(payload1));
</ins><span class="cx">
</span><del>- payload = MediaPayload::create();
- payload->setType(8);
- payload->setEncodingName("PCMA");
- payload->setClockRate(8000);
- payload->setChannels(1);
- payloads.append(payload);
</del><ins>+ MediaPayload payload2;
+ payload2.type = 8;
+ payload2.encodingName = "PCMA";
+ payload2.clockRate = 8000;
+ payload2.channels = 1;
+ payloads.append(WTFMove(payload2));
</ins><span class="cx">
</span><del>- payload = MediaPayload::create();
- payload->setType(0);
- payload->setEncodingName("PCMU");
- payload->setClockRate(8000);
- payload->setChannels(1);
- payloads.append(payload);
</del><ins>+ MediaPayload payload3;
+ payload3.type = 0;
+ payload3.encodingName = "PCMU";
+ payload3.clockRate = 8000;
+ payload3.channels = 1;
+ payloads.append(WTFMove(payload3));
</ins><span class="cx">
</span><span class="cx"> return payloads;
</span><span class="cx"> }
</span><span class="lines">@@ -139,39 +139,40 @@
</span><span class="cx"> MediaPayloadVector payloads;
</span><span class="cx">
</span><span class="cx"> // FIXME: This list should be based on what is available in the platform (bug: http://webkit.org/b/163723)
</span><del>- 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);
</del><ins>+ 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));
</ins><span class="cx">
</span><del>- payload = MediaPayload::create();
- payload->setType(100);
- payload->setEncodingName("VP8");
- payload->setClockRate(90000);
- payload->setCcmfir(true);
- payload->setNackpli(true);
- payload->setNack(true);
- payloads.append(payload);
</del><ins>+ MediaPayload payload2;
+ payload2.type = 100;
+ payload2.encodingName = "VP8";
+ payload2.clockRate = 90000;
+ payload2.ccmfir = true;
+ payload2.nackpli = true;
+ payload2.nack = true;
+ payloads.append(WTFMove(payload2));
</ins><span class="cx">
</span><del>- payload = MediaPayload::create();
- payload->setType(120);
- payload->setEncodingName("RTX");
- payload->setClockRate(90000);
- payload->addParameter("apt", 100);
- payload->addParameter("rtxTime", 200);
- payloads.append(payload);
</del><ins>+ MediaPayload payload3;
+ payload3.type = 120;
+ payload3.encodingName = "RTX";
+ payload3.clockRate = 90000;
+ payload1.addParameter("apt", 100);
+ payload1.addParameter("rtxTime", 200);
+ payloads.append(WTFMove(payload3));
</ins><span class="cx">
</span><span class="cx"> return payloads;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static bool payloadsContainType(MediaPayloadVector payloads, unsigned payloadType)
</del><ins>+static bool payloadsContainType(const Vector<const MediaPayload*>& payloads, unsigned payloadType)
</ins><span class="cx"> {
</span><del>- for (auto& payload : payloads) {
- if (payload->type() == payloadType)
</del><ins>+ for (auto payload : payloads) {
+ ASSERT(payload);
+ if (payload->type == payloadType)
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx"> return false;
</span><span class="lines">@@ -179,13 +180,13 @@
</span><span class="cx">
</span><span class="cx"> MediaPayloadVector MediaEndpointOwr::filterPayloads(const MediaPayloadVector& remotePayloads, const MediaPayloadVector& defaultPayloads)
</span><span class="cx"> {
</span><del>- MediaPayloadVector filteredPayloads;
</del><ins>+ Vector<const MediaPayload*> filteredPayloads;
</ins><span class="cx">
</span><span class="cx"> for (auto& remotePayload : remotePayloads) {
</span><del>- MediaPayload* defaultPayload = nullptr;
</del><ins>+ const MediaPayload* defaultPayload = nullptr;
</ins><span class="cx"> for (auto& p : defaultPayloads) {
</span><del>- if (p->encodingName() == remotePayload->encodingName().convertToASCIIUppercase()) {
- defaultPayload = p.get();
</del><ins>+ if (p.encodingName == remotePayload.encodingName.convertToASCIIUppercase()) {
+ defaultPayload = &p;
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -192,19 +193,19 @@
</span><span class="cx"> if (!defaultPayload)
</span><span class="cx"> continue;
</span><span class="cx">
</span><del>- if (defaultPayload->parameters().contains("packetizationMode") && remotePayload->parameters().contains("packetizationMode")
- && (defaultPayload->parameters().get("packetizationMode") != defaultPayload->parameters().get("packetizationMode")))
</del><ins>+ if (defaultPayload->parameters.contains("packetizationMode") && remotePayload.parameters.contains("packetizationMode")
+ && (defaultPayload->parameters.get("packetizationMode") != defaultPayload->parameters.get("packetizationMode")))
</ins><span class="cx"> continue;
</span><span class="cx">
</span><del>- filteredPayloads.append(remotePayload);
</del><ins>+ filteredPayloads.append(&remotePayload);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> MediaPayloadVector filteredAptPayloads;
</span><span class="cx">
</span><del>- for (auto& filteredPayload : filteredPayloads) {
- if (filteredPayload->parameters().contains("apt") && (!payloadsContainType(filteredPayloads, filteredPayload->parameters().get("apt"))))
</del><ins>+ for (auto filteredPayload : filteredPayloads) {
+ if (filteredPayload->parameters.contains("apt") && (!payloadsContainType(filteredPayloads, filteredPayload->parameters.get("apt"))))
</ins><span class="cx"> continue;
</span><del>- filteredAptPayloads.append(filteredPayload);
</del><ins>+ filteredAptPayloads.append(*filteredPayload);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return filteredAptPayloads;
</span><span class="lines">@@ -235,12 +236,12 @@
</span><span class="cx"> return UpdateResult::Success;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static RefPtr<MediaPayload> findRtxPayload(MediaPayloadVector payloads, unsigned apt)
</del><ins>+static const MediaPayload* findRtxPayload(const MediaPayloadVector& payloads, unsigned apt)
</ins><span class="cx"> {
</span><span class="cx"> for (auto& payload : payloads) {
</span><del>- if (payload->encodingName().convertToASCIIUppercase() == "RTX" && payload->parameters().contains("apt")
- && (payload->parameters().get("apt") == apt))
- return payload;
</del><ins>+ if (payload.encodingName.convertToASCIIUppercase() == "RTX" && payload.parameters.contains("apt")
+ && (payload.parameters.get("apt") == apt))
+ return &payload;
</ins><span class="cx"> }
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="lines">@@ -276,10 +277,10 @@
</span><span class="cx"> if (!sendSourceMap.contains(mdesc.mid()))
</span><span class="cx"> continue;
</span><span class="cx">
</span><del>- MediaPayload* payload = nullptr;
</del><ins>+ const MediaPayload* payload = nullptr;
</ins><span class="cx"> for (auto& p : mdesc.payloads()) {
</span><del>- if (p->encodingName().convertToASCIIUppercase() != "RTX") {
- payload = p.get();
</del><ins>+ if (p.encodingName.convertToASCIIUppercase() != "RTX") {
+ payload = &p;
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -287,19 +288,19 @@
</span><span class="cx"> if (!payload)
</span><span class="cx"> return UpdateResult::Failed;
</span><span class="cx">
</span><del>- RefPtr<MediaPayload> rtxPayload = findRtxPayload(mdesc.payloads(), payload->type());
- RealtimeMediaSourceOwr* source = static_cast<RealtimeMediaSourceOwr*>(sendSourceMap.get(mdesc.mid()));
</del><ins>+ auto* rtxPayload = findRtxPayload(mdesc.payloads(), payload->type);
+ auto* source = static_cast<RealtimeMediaSourceOwr*>(sendSourceMap.get(mdesc.mid()));
</ins><span class="cx">
</span><del>- ASSERT(codecTypes.find(payload->encodingName().convertToASCIIUppercase()) != notFound);
- OwrCodecType codecType = static_cast<OwrCodecType>(codecTypes.find(payload->encodingName().convertToASCIIUppercase()));
</del><ins>+ ASSERT(codecTypes.find(payload->encodingName.convertToASCIIUppercase()) != notFound);
+ auto codecType = static_cast<OwrCodecType>(codecTypes.find(payload->encodingName.convertToASCIIUppercase()));
</ins><span class="cx">
</span><span class="cx"> OwrPayload* sendPayload;
</span><span class="cx"> if (mdesc.type() == "audio")
</span><del>- sendPayload = owr_audio_payload_new(codecType, payload->type(), payload->clockRate(), payload->channels());
</del><ins>+ sendPayload = owr_audio_payload_new(codecType, payload->type, payload->clockRate, payload->channels);
</ins><span class="cx"> else {
</span><del>- 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);
</del><ins>+ 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);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> owr_media_session_set_send_payload(OWR_MEDIA_SESSION(session), sendPayload);
</span><span class="lines">@@ -489,21 +490,21 @@
</span><span class="cx"> g_signal_connect(mediaSession, "on-incoming-source", G_CALLBACK(gotIncomingSource), this);
</span><span class="cx">
</span><span class="cx"> for (auto& payload : mediaDescription->payloads()) {
</span><del>- if (payload->encodingName().convertToASCIIUppercase() == "RTX")
</del><ins>+ if (payload.encodingName.convertToASCIIUppercase() == "RTX")
</ins><span class="cx"> continue;
</span><span class="cx">
</span><del>- RefPtr<MediaPayload> rtxPayload = findRtxPayload(mediaDescription->payloads(), payload->type());
</del><ins>+ auto* rtxPayload = findRtxPayload(mediaDescription->payloads(), payload.type);
</ins><span class="cx">
</span><del>- ASSERT(codecTypes.find(payload->encodingName()) != notFound);
- OwrCodecType codecType = static_cast<OwrCodecType>(codecTypes.find(payload->encodingName().convertToASCIIUppercase()));
</del><ins>+ ASSERT(codecTypes.find(payload.encodingName) != notFound);
+ OwrCodecType codecType = static_cast<OwrCodecType>(codecTypes.find(payload.encodingName.convertToASCIIUppercase()));
</ins><span class="cx">
</span><span class="cx"> OwrPayload* receivePayload;
</span><span class="cx"> if (mediaDescription->type() == "audio")
</span><del>- receivePayload = owr_audio_payload_new(codecType, payload->type(), payload->clockRate(), payload->channels());
</del><ins>+ receivePayload = owr_audio_payload_new(codecType, payload.type, payload.clockRate, payload.channels);
</ins><span class="cx"> else {
</span><del>- 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);
</del><ins>+ 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);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> owr_media_session_add_receive_payload(mediaSession, receivePayload);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockMediaEndpointcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp (207951 => 207952)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -74,26 +74,26 @@
</span><span class="cx"> {
</span><span class="cx"> MediaPayloadVector payloads;
</span><span class="cx">
</span><del>- RefPtr<MediaPayload> payload = MediaPayload::create();
- payload->setType(111);
- payload->setEncodingName("OPUS");
- payload->setClockRate(48000);
- payload->setChannels(2);
- payloads.append(payload);
</del><ins>+ MediaPayload payload1;
+ payload1.type = 111;
+ payload1.encodingName = "OPUS";
+ payload1.clockRate = 48000;
+ payload1.channels = 2;
+ payloads.append(WTFMove(payload1));
</ins><span class="cx">
</span><del>- payload = MediaPayload::create();
- payload->setType(8);
- payload->setEncodingName("PCMA");
- payload->setClockRate(8000);
- payload->setChannels(1);
- payloads.append(payload);
</del><ins>+ MediaPayload payload2;
+ payload2.type = 8;
+ payload2.encodingName = "PCMA";
+ payload2.clockRate = 8000;
+ payload2.channels = 1;
+ payloads.append(WTFMove(payload2));
</ins><span class="cx">
</span><del>- payload = MediaPayload::create();
- payload->setType(0);
- payload->setEncodingName("PCMU");
- payload->setClockRate(8000);
- payload->setChannels(1);
- payloads.append(payload);
</del><ins>+ MediaPayload payload3;
+ payload3.type = 0;
+ payload3.encodingName = "PCMU";
+ payload3.clockRate = 8000;
+ payload3.channels = 1;
+ payloads.append(WTFMove(payload3));
</ins><span class="cx">
</span><span class="cx"> return payloads;
</span><span class="cx"> }
</span><span class="lines">@@ -102,31 +102,31 @@
</span><span class="cx"> {
</span><span class="cx"> MediaPayloadVector payloads;
</span><span class="cx">
</span><del>- 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);
</del><ins>+ 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));
</ins><span class="cx">
</span><del>- payload = MediaPayload::create();
- payload->setType(100);
- payload->setEncodingName("VP8");
- payload->setClockRate(90000);
- payload->setCcmfir(true);
- payload->setNackpli(true);
- payload->setNack(true);
- payloads.append(payload);
</del><ins>+ MediaPayload payload2;
+ payload2.type = 100;
+ payload2.encodingName = "VP8";
+ payload2.clockRate = 90000;
+ payload2.ccmfir = true;
+ payload2.nackpli = true;
+ payload2.nack = true;
+ payloads.append(WTFMove(payload2));
</ins><span class="cx">
</span><del>- payload = MediaPayload::create();
- payload->setType(120);
- payload->setEncodingName("RTX");
- payload->setClockRate(90000);
- payload->addParameter("apt", 100);
- payload->addParameter("rtxTime", 200);
- payloads.append(payload);
</del><ins>+ MediaPayload payload3;
+ payload3.type = 120;
+ payload3.encodingName = "RTX";
+ payload3.clockRate = 90000;
+ payload3.addParameter("apt", 100);
+ payload3.addParameter("rtxTime", 200);
+ payloads.append(WTFMove(payload3));
</ins><span class="cx">
</span><span class="cx"> return payloads;
</span><span class="cx"> }
</span><span class="lines">@@ -136,10 +136,10 @@
</span><span class="cx"> MediaPayloadVector filteredPayloads;
</span><span class="cx">
</span><span class="cx"> for (auto& remotePayload : remotePayloads) {
</span><del>- MediaPayload* defaultPayload = nullptr;
</del><ins>+ const MediaPayload* defaultPayload = nullptr;
</ins><span class="cx"> for (auto& payload : defaultPayloads) {
</span><del>- if (payload->encodingName() == remotePayload->encodingName().convertToASCIIUppercase()) {
- defaultPayload = payload.get();
</del><ins>+ if (payload.encodingName == remotePayload.encodingName.convertToASCIIUppercase()) {
+ defaultPayload = &payload;
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -146,8 +146,8 @@
</span><span class="cx"> if (!defaultPayload)
</span><span class="cx"> continue;
</span><span class="cx">
</span><del>- if (defaultPayload->parameters().contains("packetizationMode") && remotePayload->parameters().contains("packetizationMode")
- && (defaultPayload->parameters().get("packetizationMode") != defaultPayload->parameters().get("packetizationMode")))
</del><ins>+ if (defaultPayload->parameters.contains("packetizationMode") && remotePayload.parameters.contains("packetizationMode")
+ && (defaultPayload->parameters.get("packetizationMode") != defaultPayload->parameters.get("packetizationMode")))
</ins><span class="cx"> continue;
</span><span class="cx">
</span><span class="cx"> filteredPayloads.append(remotePayload);
</span></span></pre>
</div>
</div>
</body>
</html>