Diff
Modified: trunk/Source/WebCore/ChangeLog (208042 => 208043)
--- trunk/Source/WebCore/ChangeLog 2016-10-28 09:40:44 UTC (rev 208042)
+++ trunk/Source/WebCore/ChangeLog 2016-10-28 11:14:51 UTC (rev 208043)
@@ -1,3 +1,86 @@
+2016-10-28 Youenn Fablet <you...@apple.com>
+
+ PeerMediaDescription does not need to be refcounted
+ https://bugs.webkit.org/show_bug.cgi?id=164059
+
+ Reviewed by Darin Adler.
+
+ No change of behavior.
+
+ * Modules/mediastream/MediaEndpointPeerConnection.cpp:
+ (WebCore::MediaEndpointPeerConnection::createOfferTask):
+ (WebCore::MediaEndpointPeerConnection::createAnswerTask):
+ (WebCore::createSourceMap):
+ (WebCore::MediaEndpointPeerConnection::setLocalDescriptionTask):
+ (WebCore::MediaEndpointPeerConnection::setRemoteDescriptionTask):
+ (WebCore::MediaEndpointPeerConnection::addIceCandidateTask):
+ (WebCore::MediaEndpointPeerConnection::gotIceCandidate):
+ * Modules/mediastream/MediaEndpointPeerConnection.h:
+ * Modules/mediastream/SDPProcessor.cpp:
+ (WebCore::configurationFromJSON):
+ (WebCore::configurationToJSON):
+ (WebCore::SDPProcessor::generateCandidateLine):
+ (WebCore::SDPProcessor::parseCandidateLine):
+ * platform/mediastream/IceCandidate.h:
+ * platform/mediastream/MediaEndpointSessionConfiguration.h:
+ (WebCore::MediaEndpointSessionConfiguration::mediaDescriptions):
+ (WebCore::MediaEndpointSessionConfiguration::addMediaDescription):
+ (WebCore::MediaEndpointSessionConfiguration::clone):
+ * platform/mediastream/PeerMediaDescription.h:
+ (WebCore::PeerMediaDescription::addPayload):
+ (WebCore::PeerMediaDescription::addSsrc):
+ (WebCore::PeerMediaDescription::clearSsrcs):
+ (WebCore::PeerMediaDescription::addIceCandidate):
+ (WebCore::PeerMediaDescription::create): Deleted.
+ (WebCore::PeerMediaDescription::~PeerMediaDescription): Deleted.
+ (WebCore::PeerMediaDescription::type): Deleted.
+ (WebCore::PeerMediaDescription::setType): Deleted.
+ (WebCore::PeerMediaDescription::port): Deleted.
+ (WebCore::PeerMediaDescription::setPort): Deleted.
+ (WebCore::PeerMediaDescription::address): Deleted.
+ (WebCore::PeerMediaDescription::setAddress): Deleted.
+ (WebCore::PeerMediaDescription::mode): Deleted.
+ (WebCore::PeerMediaDescription::setMode): Deleted.
+ (WebCore::PeerMediaDescription::mid): Deleted.
+ (WebCore::PeerMediaDescription::setMid): Deleted.
+ (WebCore::PeerMediaDescription::payloads): Deleted.
+ (WebCore::PeerMediaDescription::setPayloads): Deleted.
+ (WebCore::PeerMediaDescription::rtcpMux): Deleted.
+ (WebCore::PeerMediaDescription::setRtcpMux): Deleted.
+ (WebCore::PeerMediaDescription::rtcpAddress): Deleted.
+ (WebCore::PeerMediaDescription::setRtcpAddress): Deleted.
+ (WebCore::PeerMediaDescription::rtcpPort): Deleted.
+ (WebCore::PeerMediaDescription::setRtcpPort): Deleted.
+ (WebCore::PeerMediaDescription::mediaStreamId): Deleted.
+ (WebCore::PeerMediaDescription::setMediaStreamId): Deleted.
+ (WebCore::PeerMediaDescription::mediaStreamTrackId): Deleted.
+ (WebCore::PeerMediaDescription::setMediaStreamTrackId): Deleted.
+ (WebCore::PeerMediaDescription::dtlsSetup): Deleted.
+ (WebCore::PeerMediaDescription::setDtlsSetup): Deleted.
+ (WebCore::PeerMediaDescription::dtlsFingerprintHashFunction): Deleted.
+ (WebCore::PeerMediaDescription::setDtlsFingerprintHashFunction): Deleted.
+ (WebCore::PeerMediaDescription::dtlsFingerprint): Deleted.
+ (WebCore::PeerMediaDescription::setDtlsFingerprint): Deleted.
+ (WebCore::PeerMediaDescription::cname): Deleted.
+ (WebCore::PeerMediaDescription::setCname): Deleted.
+ (WebCore::PeerMediaDescription::ssrcs): Deleted.
+ (WebCore::PeerMediaDescription::iceUfrag): Deleted.
+ (WebCore::PeerMediaDescription::setIceUfrag): Deleted.
+ (WebCore::PeerMediaDescription::icePassword): Deleted.
+ (WebCore::PeerMediaDescription::setIcePassword): Deleted.
+ (WebCore::PeerMediaDescription::iceCandidates): Deleted.
+ (WebCore::PeerMediaDescription::clone): Deleted.
+ (WebCore::PeerMediaDescription::PeerMediaDescription): Deleted.
+ * platform/mediastream/mac/MediaEndpointMac.cpp:
+ (WebCore::MediaEndpointMac::addRemoteCandidate):
+ (WebCore::MediaEndpointMac::OnIceCandidate):
+ * platform/mediastream/mac/MediaEndpointMac.h:
+ * platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:
+ (WebCore::MediaEndpointOwr::updateSendConfiguration):
+ * platform/mediastream/openwebrtc/MediaEndpointOwr.h:
+ * platform/mock/MockMediaEndpoint.cpp:
+ (WebCore::MockMediaEndpoint::updateConfigurationMids):
+
2016-10-28 Antoine Quint <grao...@apple.com>
[Modern Media Controls] Media Controller: scrubbing support
Modified: trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp (208042 => 208043)
--- trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp 2016-10-28 09:40:44 UTC (rev 208042)
+++ trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp 2016-10-28 11:14:51 UTC (rev 208043)
@@ -160,21 +160,21 @@
// Remove any transceiver objects from transceivers that can be matched to an existing media description.
for (auto& mediaDescription : configurationSnapshot->mediaDescriptions()) {
- if (!mediaDescription->port()) {
+ if (!mediaDescription.port) {
// This media description should be recycled.
continue;
}
- RTCRtpTransceiver* transceiver = matchTransceiverByMid(transceivers, mediaDescription->mid());
+ RTCRtpTransceiver* transceiver = matchTransceiverByMid(transceivers, mediaDescription.mid);
if (!transceiver)
continue;
- mediaDescription->setMode(transceiver->directionString());
+ mediaDescription.mode = transceiver->directionString();
if (transceiver->hasSendingDirection()) {
RTCRtpSender& sender = *transceiver->sender();
- mediaDescription->setMediaStreamId(sender.mediaStreamIds()[0]);
- mediaDescription->setMediaStreamTrackId(sender.trackId());
+ mediaDescription.mediaStreamId = sender.mediaStreamIds()[0];
+ mediaDescription.mediaStreamTrackId = sender.trackId();
}
transceivers.removeFirst(transceiver);
@@ -182,23 +182,23 @@
// Add media descriptions for remaining transceivers.
for (auto& transceiver : transceivers) {
- RefPtr<PeerMediaDescription> mediaDescription = PeerMediaDescription::create();
+ PeerMediaDescription mediaDescription;
RTCRtpSender& sender = *transceiver->sender();
- mediaDescription->setMode(transceiver->directionString());
- mediaDescription->setMid(transceiver->provisionalMid());
- mediaDescription->setMediaStreamId(sender.mediaStreamIds()[0]);
- mediaDescription->setType(sender.trackKind());
- mediaDescription->setPayloads(sender.trackKind() == "audio" ? m_defaultAudioPayloads : m_defaultVideoPayloads);
- mediaDescription->setDtlsFingerprintHashFunction(m_dtlsFingerprintFunction);
- mediaDescription->setDtlsFingerprint(m_dtlsFingerprint);
- mediaDescription->setCname(m_cname);
- mediaDescription->addSsrc(cryptographicallyRandomNumber());
- mediaDescription->setIceUfrag(m_iceUfrag);
- mediaDescription->setIcePassword(m_icePassword);
+ mediaDescription.mode = transceiver->directionString();
+ mediaDescription.mid = transceiver->provisionalMid();
+ mediaDescription.mediaStreamId = sender.mediaStreamIds()[0];
+ mediaDescription.type = sender.trackKind();
+ mediaDescription.payloads = sender.trackKind() == "audio" ? m_defaultAudioPayloads : m_defaultVideoPayloads;
+ mediaDescription.dtlsFingerprintHashFunction = m_dtlsFingerprintFunction;
+ mediaDescription.dtlsFingerprint = m_dtlsFingerprint;
+ mediaDescription.cname = m_cname;
+ mediaDescription.addSsrc(cryptographicallyRandomNumber());
+ mediaDescription.iceUfrag = m_iceUfrag;
+ mediaDescription.icePassword = m_icePassword;
if (sender.track())
- mediaDescription->setMediaStreamTrackId(sender.trackId());
+ mediaDescription.mediaStreamTrackId = sender.trackId();
configurationSnapshot->addMediaDescription(WTFMove(mediaDescription));
}
@@ -233,12 +233,12 @@
configurationSnapshot->setSessionVersion(m_sdpAnswerSessionVersion++);
auto transceivers = RtpTransceiverVector(m_client->getTransceivers());
- const MediaDescriptionVector& remoteMediaDescriptions = internalRemoteDescription()->configuration()->mediaDescriptions();
+ auto& remoteMediaDescriptions = internalRemoteDescription()->configuration()->mediaDescriptions();
for (unsigned i = 0; i < remoteMediaDescriptions.size(); ++i) {
- PeerMediaDescription& remoteMediaDescription = *remoteMediaDescriptions[i];
+ auto& remoteMediaDescription = remoteMediaDescriptions[i];
- RTCRtpTransceiver* transceiver = matchTransceiverByMid(transceivers, remoteMediaDescription.mid());
+ auto* transceiver = matchTransceiverByMid(transceivers, remoteMediaDescription.mid);
if (!transceiver) {
LOG_ERROR("Could not find a matching transceiver for remote description while creating answer");
continue;
@@ -245,39 +245,39 @@
}
if (i >= configurationSnapshot->mediaDescriptions().size()) {
- auto newMediaDescription = PeerMediaDescription::create();
+ PeerMediaDescription newMediaDescription;
RTCRtpSender& sender = *transceiver->sender();
if (sender.track()) {
if (sender.mediaStreamIds().size())
- newMediaDescription->setMediaStreamId(sender.mediaStreamIds()[0]);
- newMediaDescription->setMediaStreamTrackId(sender.trackId());
- newMediaDescription->addSsrc(cryptographicallyRandomNumber());
+ newMediaDescription.mediaStreamId = sender.mediaStreamIds()[0];
+ newMediaDescription.mediaStreamTrackId = sender.trackId();
+ newMediaDescription.addSsrc(cryptographicallyRandomNumber());
}
- newMediaDescription->setMode(transceiver->directionString());
- newMediaDescription->setType(remoteMediaDescription.type());
- newMediaDescription->setMid(remoteMediaDescription.mid());
- newMediaDescription->setDtlsSetup(remoteMediaDescription.dtlsSetup() == "active" ? "passive" : "active");
- newMediaDescription->setDtlsFingerprintHashFunction(m_dtlsFingerprintFunction);
- newMediaDescription->setDtlsFingerprint(m_dtlsFingerprint);
- newMediaDescription->setCname(m_cname);
- newMediaDescription->setIceUfrag(m_iceUfrag);
- newMediaDescription->setIcePassword(m_icePassword);
+ newMediaDescription.mode = transceiver->directionString();
+ newMediaDescription.type = remoteMediaDescription.type;
+ newMediaDescription.mid = remoteMediaDescription.mid;
+ newMediaDescription.dtlsSetup = remoteMediaDescription.dtlsSetup == "active" ? "passive" : "active";
+ newMediaDescription.dtlsFingerprintHashFunction = m_dtlsFingerprintFunction;
+ newMediaDescription.dtlsFingerprint = m_dtlsFingerprint;
+ newMediaDescription.cname = m_cname;
+ newMediaDescription.iceUfrag = m_iceUfrag;
+ newMediaDescription.icePassword = m_icePassword;
configurationSnapshot->addMediaDescription(WTFMove(newMediaDescription));
}
- PeerMediaDescription& localMediaDescription = *configurationSnapshot->mediaDescriptions()[i];
+ PeerMediaDescription& localMediaDescription = configurationSnapshot->mediaDescriptions()[i];
- localMediaDescription.setPayloads(remoteMediaDescription.payloads());
- localMediaDescription.setRtcpMux(remoteMediaDescription.rtcpMux());
+ localMediaDescription.payloads = remoteMediaDescription.payloads;
+ localMediaDescription.rtcpMux = remoteMediaDescription.rtcpMux;
- if (!localMediaDescription.ssrcs().size())
+ if (!localMediaDescription.ssrcs.size())
localMediaDescription.addSsrc(cryptographicallyRandomNumber());
- if (localMediaDescription.dtlsSetup() == "actpass")
- localMediaDescription.setDtlsSetup("passive");
+ if (localMediaDescription.dtlsSetup == "actpass")
+ localMediaDescription.dtlsSetup = "passive";
transceivers.removeFirst(transceiver);
}
@@ -295,11 +295,11 @@
RealtimeMediaSourceMap sourceMap;
for (unsigned i = 0; i < remoteMediaDescriptions.size() && i < localMediaDescriptionCount; ++i) {
- PeerMediaDescription& remoteMediaDescription = *remoteMediaDescriptions[i];
- if (remoteMediaDescription.type() != "audio" && remoteMediaDescription.type() != "video")
+ auto& remoteMediaDescription = remoteMediaDescriptions[i];
+ if (remoteMediaDescription.type != "audio" && remoteMediaDescription.type != "video")
continue;
- RTCRtpTransceiver* transceiver = matchTransceiverByMid(transceivers, remoteMediaDescription.mid());
+ RTCRtpTransceiver* transceiver = matchTransceiverByMid(transceivers, remoteMediaDescription.mid);
if (transceiver) {
if (transceiver->hasSendingDirection() && transceiver->sender()->track())
sourceMap.set(transceiver->mid(), &transceiver->sender()->track()->source());
@@ -359,11 +359,9 @@
}
// Associate media descriptions with transceivers (set provisional mid to 'final' mid).
- for (unsigned i = previousNumberOfMediaDescriptions; i < mediaDescriptions.size(); ++i) {
- PeerMediaDescription& mediaDescription = *mediaDescriptions[i];
-
+ for (auto& mediaDescription : mediaDescriptions) {
RTCRtpTransceiver* transceiver = matchTransceiver(transceivers, [&mediaDescription] (RTCRtpTransceiver& current) {
- return current.provisionalMid() == mediaDescription.mid();
+ return current.provisionalMid() == mediaDescription.mid;
});
if (transceiver)
transceiver->setMid(transceiver->provisionalMid());
@@ -464,13 +462,12 @@
return;
}
- const MediaDescriptionVector& mediaDescriptions = newDescription->configuration()->mediaDescriptions();
+ auto& mediaDescriptions = newDescription->configuration()->mediaDescriptions();
for (auto& mediaDescription : mediaDescriptions) {
- if (mediaDescription->type() != "audio" && mediaDescription->type() != "video")
+ if (mediaDescription.type != "audio" && mediaDescription.type != "video")
continue;
- mediaDescription->setPayloads(m_mediaEndpoint->filterPayloads(mediaDescription->payloads(),
- mediaDescription->type() == "audio" ? m_defaultAudioPayloads : m_defaultVideoPayloads));
+ mediaDescription.payloads = m_mediaEndpoint->filterPayloads(mediaDescription.payloads, mediaDescription.type == "audio" ? m_defaultAudioPayloads : m_defaultVideoPayloads);
}
bool isInitiator = newDescription->type() == RTCSessionDescription::SdpType::Answer;
@@ -488,32 +485,32 @@
// One legacy MediaStreamEvent will be fired for every new MediaStream created as this remote description is set.
Vector<RefPtr<MediaStreamEvent>> legacyMediaStreamEvents;
- for (auto mediaDescription : mediaDescriptions) {
- RTCRtpTransceiver* transceiver = matchTransceiverByMid(transceivers, mediaDescription->mid());
+ for (auto& mediaDescription : mediaDescriptions) {
+ RTCRtpTransceiver* transceiver = matchTransceiverByMid(transceivers, mediaDescription.mid);
if (!transceiver) {
bool receiveOnlyFlag = false;
- if (mediaDescription->mode() == "sendrecv" || mediaDescription->mode() == "recvonly") {
+ if (mediaDescription.mode == "sendrecv" || mediaDescription.mode == "recvonly") {
// Try to match an existing transceiver.
transceiver = matchTransceiver(transceivers, [&mediaDescription] (RTCRtpTransceiver& current) {
- return !current.stopped() && current.mid().isNull() && current.sender()->trackKind() == mediaDescription->type();
+ return !current.stopped() && current.mid().isNull() && current.sender()->trackKind() == mediaDescription.type;
});
if (transceiver) {
// This transceiver was created locally with a provisional mid. Its real mid will now be set by the remote
// description so we need to update the mid of the transceiver's muted source to preserve the association.
- transceiver->setMid(mediaDescription->mid());
- m_mediaEndpoint->replaceMutedRemoteSourceMid(transceiver->provisionalMid(), mediaDescription->mid());
+ transceiver->setMid(mediaDescription.mid);
+ m_mediaEndpoint->replaceMutedRemoteSourceMid(transceiver->provisionalMid(), mediaDescription.mid);
} else
receiveOnlyFlag = true;
}
if (!transceiver) {
- auto sender = RTCRtpSender::create(mediaDescription->type(), Vector<String>(), m_client->senderClient());
- auto receiver = createReceiver(mediaDescription->mid(), mediaDescription->type(), mediaDescription->mediaStreamTrackId());
+ auto sender = RTCRtpSender::create(mediaDescription.type, Vector<String>(), m_client->senderClient());
+ auto receiver = createReceiver(mediaDescription.mid, mediaDescription.type, mediaDescription.mediaStreamTrackId);
auto newTransceiver = RTCRtpTransceiver::create(WTFMove(sender), WTFMove(receiver));
- newTransceiver->setMid(mediaDescription->mid());
+ newTransceiver->setMid(mediaDescription.mid);
if (receiveOnlyFlag)
newTransceiver->disableSendingDirection();
@@ -522,7 +519,7 @@
}
}
- if (mediaDescription->mode() == "sendrecv" || mediaDescription->mode() == "sendonly") {
+ if (mediaDescription.mode == "sendrecv" || mediaDescription.mode == "sendonly") {
RTCRtpReceiver& receiver = *transceiver->receiver();
if (receiver.isDispatched())
continue;
@@ -529,8 +526,8 @@
receiver.setDispatched(true);
Vector<String> mediaStreamIds;
- if (!mediaDescription->mediaStreamId().isEmpty())
- mediaStreamIds.append(mediaDescription->mediaStreamId());
+ if (!mediaDescription.mediaStreamId.isEmpty())
+ mediaStreamIds.append(mediaDescription.mediaStreamId);
// A remote track can be associated with 0..* MediaStreams. We create a new stream for
// a track in case of an unrecognized stream id, or just add the track if the stream
@@ -646,7 +643,7 @@
return;
}
- const MediaDescriptionVector& remoteMediaDescriptions = internalRemoteDescription()->configuration()->mediaDescriptions();
+ auto& remoteMediaDescriptions = internalRemoteDescription()->configuration()->mediaDescriptions();
PeerMediaDescription* targetMediaDescription = nullptr;
// When identifying the target media description, sdpMid takes precedence over sdpMLineIndex
@@ -654,8 +651,8 @@
if (!rtcCandidate.sdpMid().isNull()) {
const String& mid = rtcCandidate.sdpMid();
for (auto& description : remoteMediaDescriptions) {
- if (description->mid() == mid) {
- targetMediaDescription = description.get();
+ if (description.mid == mid) {
+ targetMediaDescription = &description;
break;
}
}
@@ -670,7 +667,7 @@
promise.reject(OperationError, "sdpMLineIndex is out of range");
return;
}
- targetMediaDescription = remoteMediaDescriptions[sdpMLineIndex].get();
+ targetMediaDescription = &remoteMediaDescriptions[sdpMLineIndex];
} else {
ASSERT_NOT_REACHED();
return;
@@ -685,7 +682,8 @@
return;
}
- m_mediaEndpoint->addRemoteCandidate(result.candidate(), targetMediaDescription->mid(), targetMediaDescription->iceUfrag(), targetMediaDescription->icePassword());
+ ASSERT(targetMediaDescription);
+ m_mediaEndpoint->addRemoteCandidate(result.candidate(), targetMediaDescription->mid, targetMediaDescription->iceUfrag, targetMediaDescription->icePassword);
targetMediaDescription->addIceCandidate(WTFMove(result.candidate()));
@@ -837,11 +835,11 @@
{
ASSERT(isMainThread());
- const MediaDescriptionVector& mediaDescriptions = internalLocalDescription()->configuration()->mediaDescriptions();
+ auto& mediaDescriptions = internalLocalDescription()->configuration()->mediaDescriptions();
size_t mediaDescriptionIndex = notFound;
for (size_t i = 0; i < mediaDescriptions.size(); ++i) {
- if (mediaDescriptions[i]->mid() == mid) {
+ if (mediaDescriptions[i].mid == mid) {
mediaDescriptionIndex = i;
break;
}
@@ -855,9 +853,7 @@
return;
}
- auto& mediaDescription = mediaDescriptions[mediaDescriptionIndex];
- ASSERT(mediaDescription);
- mediaDescription->addIceCandidate(WTFMove(candidate));
+ mediaDescriptions[mediaDescriptionIndex].addIceCandidate(WTFMove(candidate));
m_client->fireEvent(RTCIceCandidateEvent::create(false, false, RTCIceCandidate::create(candidateLine, mid, mediaDescriptionIndex)));
}
Modified: trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h (208042 => 208043)
--- trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h 2016-10-28 09:40:44 UTC (rev 208042)
+++ trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h 2016-10-28 11:14:51 UTC (rev 208043)
@@ -43,13 +43,14 @@
class MediaStream;
class MediaStreamTrack;
-class PeerMediaDescription;
class SDPProcessor;
-typedef Vector<RefPtr<PeerMediaDescription>> MediaDescriptionVector;
-typedef Vector<RefPtr<RTCRtpSender>> RtpSenderVector;
-typedef Vector<RefPtr<RTCRtpTransceiver>> RtpTransceiverVector;
+struct PeerMediaDescription;
+using MediaDescriptionVector = Vector<PeerMediaDescription>;
+using RtpSenderVector = Vector<RefPtr<RTCRtpSender>>;
+using RtpTransceiverVector = Vector<RefPtr<RTCRtpTransceiver>>;
+
class MediaEndpointPeerConnection : public PeerConnectionBackend, public MediaEndpointClient {
public:
MediaEndpointPeerConnection(PeerConnectionBackendClient*);
Modified: trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp (208042 => 208043)
--- trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp 2016-10-28 09:40:44 UTC (rev 208042)
+++ trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp 2016-10-28 11:14:51 UTC (rev 208043)
@@ -199,22 +199,22 @@
RefPtr<InspectorObject> mediaDescriptionObject = InspectorObject::create();
mediaDescriptionsArray->get(i)->asObject(mediaDescriptionObject);
- RefPtr<PeerMediaDescription> mediaDescription = PeerMediaDescription::create();
+ PeerMediaDescription mediaDescription;
if (mediaDescriptionObject->getString(typeString(), stringValue))
- mediaDescription->setType(stringValue);
+ mediaDescription.type = stringValue;
if (mediaDescriptionObject->getInteger(portString(), intValue))
- mediaDescription->setPort(intValue);
+ mediaDescription.port = intValue;
if (mediaDescriptionObject->getString(addressString(), stringValue))
- mediaDescription->setAddress(stringValue);
+ mediaDescription.address = stringValue;
if (mediaDescriptionObject->getString(modeString(), stringValue))
- mediaDescription->setMode(stringValue);
+ mediaDescription.mode = stringValue;
if (mediaDescriptionObject->getString(midString(), stringValue))
- mediaDescription->setMid(stringValue);
+ mediaDescription.mid = stringValue;
RefPtr<InspectorArray> payloadsArray = InspectorArray::create();
mediaDescriptionObject->getArray(payloadsString(), payloadsArray);
@@ -258,37 +258,37 @@
payload.addParameter("rtxTime", intValue);
}
- mediaDescription->addPayload(WTFMove(payload));
+ mediaDescription.addPayload(WTFMove(payload));
}
RefPtr<InspectorObject> rtcpObject = InspectorObject::create();
if (mediaDescriptionObject->getObject(rtcpString(), rtcpObject)) {
if (rtcpObject->getBoolean(muxString(), boolValue))
- mediaDescription->setRtcpMux(boolValue);
+ mediaDescription.rtcpMux = boolValue;
if (rtcpObject->getString(rtcpAddressString(), stringValue))
- mediaDescription->setRtcpAddress(stringValue);
+ mediaDescription.rtcpAddress = stringValue;
if (rtcpObject->getInteger(rtcpPortString(), intValue))
- mediaDescription->setRtcpPort(intValue);
+ mediaDescription.rtcpPort = intValue;
}
if (mediaDescriptionObject->getString(mediaStreamIdString(), stringValue))
- mediaDescription->setMediaStreamId(stringValue);
+ mediaDescription.mediaStreamId = stringValue;
if (mediaDescriptionObject->getString(mediaStreamTrackIdString(), stringValue))
- mediaDescription->setMediaStreamTrackId(stringValue);
+ mediaDescription.mediaStreamTrackId = stringValue;
RefPtr<InspectorObject> dtlsObject = InspectorObject::create();
if (mediaDescriptionObject->getObject(dtlsString(), dtlsObject)) {
if (dtlsObject->getString(setupString(), stringValue))
- mediaDescription->setDtlsSetup(stringValue);
+ mediaDescription.dtlsSetup = stringValue;
if (dtlsObject->getString(fingerprintHashFunctionString(), stringValue))
- mediaDescription->setDtlsFingerprintHashFunction(stringValue);
+ mediaDescription.dtlsFingerprintHashFunction = stringValue;
if (dtlsObject->getString(fingerprintString(), stringValue))
- mediaDescription->setDtlsFingerprint(stringValue);
+ mediaDescription.dtlsFingerprint = stringValue;
}
RefPtr<InspectorArray> ssrcsArray = InspectorArray::create();
@@ -296,19 +296,19 @@
for (unsigned j = 0; j < ssrcsArray->length(); ++j) {
ssrcsArray->get(j)->asInteger(intValue);
- mediaDescription->addSsrc(intValue);
+ mediaDescription.addSsrc(intValue);
}
if (mediaDescriptionObject->getString(cnameString(), stringValue))
- mediaDescription->setCname(stringValue);
+ mediaDescription.cname = stringValue;
RefPtr<InspectorObject> iceObject = InspectorObject::create();
if (mediaDescriptionObject->getObject(iceString(), iceObject)) {
if (iceObject->getString(ufragString(), stringValue))
- mediaDescription->setIceUfrag(stringValue);
+ mediaDescription.iceUfrag = stringValue;
if (iceObject->getString(passwordString(), stringValue))
- mediaDescription->setIcePassword(stringValue);
+ mediaDescription.icePassword = stringValue;
RefPtr<InspectorArray> candidatesArray = InspectorArray::create();
iceObject->getArray(candidatesString(), candidatesArray);
@@ -317,7 +317,7 @@
RefPtr<InspectorObject> candidateObject = InspectorObject::create();
candidatesArray->get(j)->asObject(candidateObject);
- mediaDescription->addIceCandidate(createCandidate(*candidateObject));
+ mediaDescription.addIceCandidate(createCandidate(*candidateObject));
}
}
@@ -351,18 +351,18 @@
RefPtr<InspectorArray> mediaDescriptionsArray = InspectorArray::create();
- for (const RefPtr<PeerMediaDescription>& mediaDescription : configuration.mediaDescriptions()) {
+ for (const auto& mediaDescription : configuration.mediaDescriptions()) {
RefPtr<InspectorObject> mediaDescriptionObject = InspectorObject::create();
- mediaDescriptionObject->setString(typeString(), mediaDescription->type());
- mediaDescriptionObject->setInteger(portString(), mediaDescription->port());
- mediaDescriptionObject->setString(addressString(), mediaDescription->address());
- mediaDescriptionObject->setString(modeString(), mediaDescription->mode());
- mediaDescriptionObject->setString(midString(), mediaDescription->mid());
+ mediaDescriptionObject->setString(typeString(), mediaDescription.type);
+ mediaDescriptionObject->setInteger(portString(), mediaDescription.port);
+ mediaDescriptionObject->setString(addressString(), mediaDescription.address);
+ mediaDescriptionObject->setString(modeString(), mediaDescription.mode);
+ mediaDescriptionObject->setString(midString(), mediaDescription.mid);
RefPtr<InspectorArray> payloadsArray = InspectorArray::create();
- for (auto& payload : mediaDescription->payloads()) {
+ for (auto& payload : mediaDescription.payloads) {
RefPtr<InspectorObject> payloadObject = InspectorObject::create();
payloadObject->setInteger(typeString(), payload.type);
@@ -387,35 +387,35 @@
mediaDescriptionObject->setArray(payloadsString(), payloadsArray);
RefPtr<InspectorObject> rtcpObject = InspectorObject::create();
- rtcpObject->setBoolean(muxString(), mediaDescription->rtcpMux());
- rtcpObject->setString(addressString(), mediaDescription->rtcpAddress());
- rtcpObject->setInteger(portString(), mediaDescription->rtcpPort());
+ rtcpObject->setBoolean(muxString(), mediaDescription.rtcpMux);
+ rtcpObject->setString(addressString(), mediaDescription.rtcpAddress);
+ rtcpObject->setInteger(portString(), mediaDescription.rtcpPort);
mediaDescriptionObject->setObject(rtcpString(), rtcpObject);
- mediaDescriptionObject->setString(mediaStreamIdString(), mediaDescription->mediaStreamId());
- mediaDescriptionObject->setString(mediaStreamTrackIdString(), mediaDescription->mediaStreamTrackId());
+ mediaDescriptionObject->setString(mediaStreamIdString(), mediaDescription.mediaStreamId);
+ mediaDescriptionObject->setString(mediaStreamTrackIdString(), mediaDescription.mediaStreamTrackId);
RefPtr<InspectorObject> dtlsObject = InspectorObject::create();
- dtlsObject->setString(setupString(), mediaDescription->dtlsSetup());
- dtlsObject->setString(fingerprintHashFunctionString(), mediaDescription->dtlsFingerprintHashFunction());
- dtlsObject->setString(fingerprintString(), mediaDescription->dtlsFingerprint());
+ dtlsObject->setString(setupString(), mediaDescription.dtlsSetup);
+ dtlsObject->setString(fingerprintHashFunctionString(), mediaDescription.dtlsFingerprintHashFunction);
+ dtlsObject->setString(fingerprintString(), mediaDescription.dtlsFingerprint);
mediaDescriptionObject->setObject(dtlsString(), dtlsObject);
RefPtr<InspectorArray> ssrcsArray = InspectorArray::create();
- for (auto ssrc : mediaDescription->ssrcs())
+ for (auto ssrc : mediaDescription.ssrcs)
ssrcsArray->pushDouble(ssrc);
mediaDescriptionObject->setArray(ssrcsString(), ssrcsArray);
- mediaDescriptionObject->setString(cnameString(), mediaDescription->cname());
+ mediaDescriptionObject->setString(cnameString(), mediaDescription.cname);
RefPtr<InspectorObject> iceObject = InspectorObject::create();
- iceObject->setString(ufragString(), mediaDescription->iceUfrag());
- iceObject->setString(passwordString(), mediaDescription->icePassword());
+ iceObject->setString(ufragString(), mediaDescription.iceUfrag);
+ iceObject->setString(passwordString(), mediaDescription.icePassword);
RefPtr<InspectorArray> candidatesArray = InspectorArray::create();
- for (auto& candidate : mediaDescription->iceCandidates())
+ for (auto& candidate : mediaDescription.iceCandidates)
candidatesArray->pushObject(createCandidateObject(candidate));
iceObject->setArray(candidatesString(), candidatesArray);
Modified: trunk/Source/WebCore/platform/mediastream/MediaEndpointSessionConfiguration.h (208042 => 208043)
--- trunk/Source/WebCore/platform/mediastream/MediaEndpointSessionConfiguration.h 2016-10-28 09:40:44 UTC (rev 208042)
+++ trunk/Source/WebCore/platform/mediastream/MediaEndpointSessionConfiguration.h 2016-10-28 11:14:51 UTC (rev 208043)
@@ -52,8 +52,9 @@
unsigned sessionVersion() const { return m_sessionVersion; }
void setSessionVersion(unsigned sessionVersion) { m_sessionVersion = sessionVersion; }
- const Vector<RefPtr<PeerMediaDescription>>& mediaDescriptions() const { return m_mediaDescriptions; }
- void addMediaDescription(RefPtr<PeerMediaDescription>&& description) { m_mediaDescriptions.append(WTFMove(description)); }
+ Vector<PeerMediaDescription>& mediaDescriptions() { return m_mediaDescriptions; }
+ const Vector<PeerMediaDescription>& mediaDescriptions() const { return m_mediaDescriptions; }
+ void addMediaDescription(PeerMediaDescription&& description) { m_mediaDescriptions.append(WTFMove(description)); }
RefPtr<MediaEndpointSessionConfiguration> clone() const
{
@@ -60,10 +61,8 @@
RefPtr<MediaEndpointSessionConfiguration> copy = create();
copy->m_sessionId = m_sessionId;
copy->m_sessionVersion = m_sessionVersion;
+ copy->m_mediaDescriptions = m_mediaDescriptions;
- for (auto& mdesc : m_mediaDescriptions)
- copy->m_mediaDescriptions.append(mdesc->clone());
-
return copy;
}
@@ -77,7 +76,7 @@
uint64_t m_sessionId;
unsigned m_sessionVersion { 0 };
- Vector<RefPtr<PeerMediaDescription>> m_mediaDescriptions;
+ Vector<PeerMediaDescription> m_mediaDescriptions;
};
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h (208042 => 208043)
--- trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h 2016-10-28 09:40:44 UTC (rev 208042)
+++ trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h 2016-10-28 11:14:51 UTC (rev 208043)
@@ -28,8 +28,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef PeerMediaDescription_h
-#define PeerMediaDescription_h
+#pragma once
#if ENABLE(WEB_RTC)
@@ -36,147 +35,43 @@
#include "IceCandidate.h"
#include "MediaPayload.h"
#include "RealtimeMediaSource.h"
-#include <wtf/RefCounted.h>
#include <wtf/Vector.h>
namespace WebCore {
-class PeerMediaDescription : public RefCounted<PeerMediaDescription> {
-public:
- static RefPtr<PeerMediaDescription> create()
- {
- return adoptRef(new PeerMediaDescription());
- }
- virtual ~PeerMediaDescription() { }
+struct PeerMediaDescription {
+ void addPayload(MediaPayload&& payload) { payloads.append(WTFMove(payload)); }
+ void addSsrc(unsigned ssrc) { ssrcs.append(ssrc); }
+ void clearSsrcs() { ssrcs.clear(); }
+ void addIceCandidate(IceCandidate&& candidate) { iceCandidates.append(WTFMove(candidate)); }
- const String& type() const { return m_type; }
- void setType(const String& type) { m_type = type; }
+ String type;
+ unsigned short port { 9 };
+ String address { "0.0.0.0" };
+ String mode { ASCIILiteral { "sendrecv" } };
+ String mid;
- unsigned short port() const { return m_port; }
- void setPort(unsigned short port) { m_port = port; }
+ Vector<MediaPayload> payloads;
- const String& address() const { return m_address; }
- void setAddress(const String& address) { m_address = address; }
+ bool rtcpMux { true };
+ String rtcpAddress;
+ unsigned short rtcpPort { 0 };
- const String& mode() const { return m_mode; }
- void setMode(const String& mode) { m_mode = mode; }
+ String mediaStreamId;
+ String mediaStreamTrackId;
- const String& mid() const { return m_mid; }
- void setMid(const String& mid) { m_mid = mid; }
+ String dtlsSetup { "actpass" };
+ String dtlsFingerprintHashFunction;
+ String dtlsFingerprint;
- 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; }
+ Vector<unsigned> ssrcs;
+ String cname;
- bool rtcpMux() const { return m_rtcpMux; }
- void setRtcpMux(bool rtcpMux) { m_rtcpMux = rtcpMux; }
-
- const String& rtcpAddress() const { return m_rtcpAddress; }
- void setRtcpAddress(const String& rtcpAddress) { m_rtcpAddress = rtcpAddress; }
-
- unsigned short rtcpPort() const { return m_rtcpPort; }
- void setRtcpPort(unsigned short rtcpPort) { m_rtcpPort = rtcpPort; }
-
- const String& mediaStreamId() const { return m_mediaStreamId; }
- void setMediaStreamId(const String& mediaStreamId) { m_mediaStreamId = mediaStreamId; }
-
- const String& mediaStreamTrackId() const { return m_mediaStreamTrackId; }
- void setMediaStreamTrackId(const String& mediaStreamTrackId) { m_mediaStreamTrackId = mediaStreamTrackId; }
-
- const String& dtlsSetup() const { return m_dtlsSetup; }
- void setDtlsSetup(const String& dtlsSetup) { m_dtlsSetup = dtlsSetup; }
-
- const String& dtlsFingerprintHashFunction() const { return m_dtlsFingerprintHashFunction; }
- void setDtlsFingerprintHashFunction(const String& dtlsFingerprintHashFunction) { m_dtlsFingerprintHashFunction = dtlsFingerprintHashFunction; }
-
- const String& dtlsFingerprint() const { return m_dtlsFingerprint; }
- void setDtlsFingerprint(const String& dtlsFingerprint) { m_dtlsFingerprint = dtlsFingerprint; }
-
- const String& cname() const { return m_cname; }
- void setCname(const String& cname) { m_cname = cname; }
-
- const Vector<unsigned>& ssrcs() const { return m_ssrcs; }
- void addSsrc(unsigned ssrc) { m_ssrcs.append(ssrc); }
- void clearSsrcs() { m_ssrcs.clear(); }
-
- const String& iceUfrag() const { return m_iceUfrag; }
- void setIceUfrag(const String& iceUfrag) { m_iceUfrag = iceUfrag; }
-
- const String& icePassword() const { return m_icePassword; }
- void setIcePassword(const String& icePassword) { m_icePassword = icePassword; }
-
- const Vector<IceCandidate>& iceCandidates() const { return m_iceCandidates; }
- void addIceCandidate(IceCandidate&& candidate) { m_iceCandidates.append(WTFMove(candidate)); }
-
- RefPtr<PeerMediaDescription> clone() const
- {
- RefPtr<PeerMediaDescription> copy = create();
-
- copy->m_type = String(m_type);
- copy->m_port = m_port;
- copy->m_address = String(m_address);
- copy->m_mode = String(m_mode);
- copy->m_mid = String(m_mid);
-
- copy->m_payloads = m_payloads;
-
- copy->m_rtcpMux = m_rtcpMux;
- copy->m_rtcpAddress = String(m_rtcpAddress);
- copy->m_rtcpPort = m_rtcpPort;
-
- copy->m_mediaStreamId = String(m_mediaStreamId);
- copy->m_mediaStreamTrackId = String(m_mediaStreamTrackId);
-
- copy->m_dtlsSetup = String(m_dtlsSetup);
- copy->m_dtlsFingerprintHashFunction = String(m_dtlsFingerprintHashFunction);
- copy->m_dtlsFingerprint = String(m_dtlsFingerprint);
-
- for (auto ssrc : m_ssrcs)
- copy->m_ssrcs.append(ssrc);
-
- copy->m_cname = String(m_cname);
-
- copy->m_iceUfrag = String(m_iceUfrag);
- copy->m_icePassword = String(m_icePassword);
-
- copy->m_iceCandidates = m_iceCandidates;
-
- return copy;
- }
-
-private:
- PeerMediaDescription() { }
-
- String m_type;
- unsigned short m_port { 9 };
- String m_address { "0.0.0.0" };
- String m_mode { "sendrecv" };
- String m_mid;
-
- Vector<MediaPayload> m_payloads;
-
- bool m_rtcpMux { true };
- String m_rtcpAddress;
- unsigned short m_rtcpPort { 0 };
-
- String m_mediaStreamId;
- String m_mediaStreamTrackId;
-
- String m_dtlsSetup { "actpass" };
- String m_dtlsFingerprintHashFunction;
- String m_dtlsFingerprint;
-
- Vector<unsigned> m_ssrcs;
- String m_cname;
-
- String m_iceUfrag;
- String m_icePassword;
- Vector<IceCandidate> m_iceCandidates;
+ String iceUfrag;
+ String icePassword;
+ Vector<IceCandidate> iceCandidates;
};
} // namespace WebCore
#endif // ENABLE(WEB_RTC)
-
-#endif // PeerMediaDescription_h
Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp (208042 => 208043)
--- trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp 2016-10-28 09:40:44 UTC (rev 208042)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp 2016-10-28 11:14:51 UTC (rev 208043)
@@ -217,8 +217,8 @@
for (unsigned i = m_transceivers.size(); i < configuration->mediaDescriptions().size(); ++i) {
TransceiverConfig config;
config.type = SessionTypeMedia;
- config.isDtlsClient = configuration->mediaDescriptions()[i]->dtlsSetup() == "active";
- config.mid = configuration->mediaDescriptions()[i]->mid();
+ config.isDtlsClient = configuration->mediaDescriptions()[i].dtlsSetup == "active";
+ config.mid = configuration->mediaDescriptions()[i].mid;
transceiverConfigs.append(WTFMove(config));
}
@@ -227,7 +227,7 @@
// Prepare the new sessions.
for (unsigned i = m_numberOfReceivePreparedSessions; i < m_transceivers.size(); ++i) {
OwrSession* session = m_transceivers[i]->session();
- prepareMediaSession(OWR_MEDIA_SESSION(session), configuration->mediaDescriptions()[i].get(), isInitiator);
+ prepareMediaSession(OWR_MEDIA_SESSION(session), &configuration->mediaDescriptions()[i], isInitiator);
owr_transport_agent_add_session(m_transportAgent, session);
}
@@ -252,8 +252,8 @@
for (unsigned i = m_transceivers.size(); i < configuration->mediaDescriptions().size(); ++i) {
TransceiverConfig config;
config.type = SessionTypeMedia;
- config.isDtlsClient = configuration->mediaDescriptions()[i]->dtlsSetup() != "active";
- config.mid = configuration->mediaDescriptions()[i]->mid();
+ config.isDtlsClient = configuration->mediaDescriptions()[i].dtlsSetup != "active";
+ config.mid = configuration->mediaDescriptions()[i].mid;
transceiverConfigs.append(WTFMove(config));
}
@@ -260,25 +260,25 @@
ensureTransportAgentAndTransceivers(isInitiator, transceiverConfigs);
for (unsigned i = 0; i < m_transceivers.size(); ++i) {
- OwrSession* session = m_transceivers[i]->session();
- PeerMediaDescription& mdesc = *configuration->mediaDescriptions()[i];
+ auto* session = m_transceivers[i]->session();
+ auto& mdesc = configuration->mediaDescriptions()[i];
- if (mdesc.type() == "audio" || mdesc.type() == "video")
- g_object_set(session, "rtcp-mux", mdesc.rtcpMux(), nullptr);
+ if (mdesc.type == "audio" || mdesc.type == "video")
+ g_object_set(session, "rtcp-mux", mdesc.rtcpMux, nullptr);
- if (mdesc.iceCandidates().size()) {
- for (auto& candidate : mdesc.iceCandidates())
- internalAddRemoteCandidate(session, candidate, mdesc.iceUfrag(), mdesc.icePassword());
+ if (mdesc.iceCandidates.size()) {
+ for (auto& candidate : mdesc.iceCandidates)
+ internalAddRemoteCandidate(session, candidate, mdesc.iceUfrag, mdesc.icePassword);
}
if (i < m_numberOfSendPreparedSessions)
continue;
- if (!sendSourceMap.contains(mdesc.mid()))
+ if (!sendSourceMap.contains(mdesc.mid))
continue;
const MediaPayload* payload = nullptr;
- for (auto& p : mdesc.payloads()) {
+ for (auto& p : mdesc.payloads) {
if (p.encodingName.convertToASCIIUppercase() != "RTX") {
payload = &p;
break;
@@ -288,14 +288,14 @@
if (!payload)
return UpdateResult::Failed;
- auto* rtxPayload = findRtxPayload(mdesc.payloads(), payload->type);
- auto* 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);
auto codecType = static_cast<OwrCodecType>(codecTypes.find(payload->encodingName.convertToASCIIUppercase()));
OwrPayload* sendPayload;
- if (mdesc.type() == "audio")
+ if (mdesc.type == "audio")
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);
@@ -466,8 +466,8 @@
void MediaEndpointOwr::prepareSession(OwrSession* session, PeerMediaDescription* mediaDescription)
{
- g_object_set_data_full(G_OBJECT(session), "ice-ufrag", g_strdup(mediaDescription->iceUfrag().ascii().data()), g_free);
- g_object_set_data_full(G_OBJECT(session), "ice-password", g_strdup(mediaDescription->icePassword().ascii().data()), g_free);
+ g_object_set_data_full(G_OBJECT(session), "ice-ufrag", g_strdup(mediaDescription->iceUfrag.ascii().data()), g_free);
+ g_object_set_data_full(G_OBJECT(session), "ice-password", g_strdup(mediaDescription->icePassword.ascii().data()), g_free);
g_signal_connect(session, "on-new-candidate", G_CALLBACK(gotCandidate), this);
g_signal_connect(session, "on-candidate-gathering-done", G_CALLBACK(candidateGatheringDone), this);
@@ -478,28 +478,28 @@
{
prepareSession(OWR_SESSION(mediaSession), mediaDescription);
- bool useRtcpMux = !isInitiator && mediaDescription->rtcpMux();
+ bool useRtcpMux = !isInitiator && mediaDescription->rtcpMux;
g_object_set(mediaSession, "rtcp-mux", useRtcpMux, nullptr);
- if (!mediaDescription->cname().isEmpty() && mediaDescription->ssrcs().size()) {
- g_object_set(mediaSession, "cname", mediaDescription->cname().ascii().data(),
- "send-ssrc", mediaDescription->ssrcs()[0],
+ if (!mediaDescription->cname.isEmpty() && mediaDescription->ssrcs.size()) {
+ g_object_set(mediaSession, "cname", mediaDescription->cname.ascii().data(),
+ "send-ssrc", mediaDescription->ssrcs[0],
nullptr);
}
g_signal_connect(mediaSession, "on-incoming-source", G_CALLBACK(gotIncomingSource), this);
- for (auto& payload : mediaDescription->payloads()) {
+ for (auto& payload : mediaDescription->payloads) {
if (payload.encodingName.convertToASCIIUppercase() == "RTX")
continue;
- auto* 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()));
OwrPayload* receivePayload;
- if (mediaDescription->type() == "audio")
+ if (mediaDescription->type == "audio")
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);
Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h (208042 => 208043)
--- trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h 2016-10-28 09:40:44 UTC (rev 208042)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h 2016-10-28 11:14:51 UTC (rev 208043)
@@ -43,10 +43,11 @@
namespace WebCore {
-class PeerMediaDescription;
class RealtimeMediaSourceOwr;
class RTCConfigurationPrivate;
+struct PeerMediaDescription;
+
class OwrTransceiver : public RefCounted<OwrTransceiver> {
public:
static Ref<OwrTransceiver> create(const String& mid, OwrSession* session)
Modified: trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp (208042 => 208043)
--- trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp 2016-10-28 09:40:44 UTC (rev 208042)
+++ trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp 2016-10-28 11:14:51 UTC (rev 208043)
@@ -225,8 +225,8 @@
void MockMediaEndpoint::updateConfigurationMids(const MediaEndpointSessionConfiguration& configuration)
{
Vector<String> mids;
- for (const RefPtr<PeerMediaDescription>& mediaDescription : configuration.mediaDescriptions())
- mids.append(mediaDescription->mid());
+ for (auto& mediaDescription : configuration.mediaDescriptions())
+ mids.append(mediaDescription.mid);
m_mids.swap(mids);
}