Diff
Modified: trunk/LayoutTests/ChangeLog (235713 => 235714)
--- trunk/LayoutTests/ChangeLog 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/LayoutTests/ChangeLog 2018-09-05 22:30:04 UTC (rev 235714)
@@ -1,3 +1,12 @@
+2018-09-05 Youenn Fablet <[email protected]>
+
+ Expose RTCRtpSender.setParameters
+ https://bugs.webkit.org/show_bug.cgi?id=189307
+
+ Reviewed by Eric Carlson.
+
+ * webrtc/video-getParameters.html:
+
2018-09-05 Truitt Savell <[email protected]>
Rebaseline test after changes in https://trac.webkit.org/changeset/235669/webkit deleted the expectation.
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (235713 => 235714)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2018-09-05 22:30:04 UTC (rev 235714)
@@ -1,3 +1,13 @@
+2018-09-05 Youenn Fablet <[email protected]>
+
+ Expose RTCRtpSender.setParameters
+ https://bugs.webkit.org/show_bug.cgi?id=189307
+
+ Reviewed by Eric Carlson.
+
+ * web-platform-tests/webrtc/RTCRtpSender-replaceTrack-expected.txt:
+ * web-platform-tests/webrtc/RTCRtpSender-setParameters-expected.txt:
+
2018-09-04 Frederic Wang <[email protected]>
Add basic support for ScrollIntoViewOptions
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpSender-replaceTrack-expected.txt (235713 => 235714)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpSender-replaceTrack-expected.txt 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpSender-replaceTrack-expected.txt 2018-09-05 22:30:04 UTC (rev 235714)
@@ -1,7 +1,7 @@
PASS Calling replaceTrack on closed connection should reject with InvalidStateError
PASS Calling replaceTrack with track of different kind should reject with TypeError
-FAIL Calling replaceTrack on stopped sender should reject with InvalidStateError assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS Calling replaceTrack on stopped sender should reject with InvalidStateError
PASS Calling replaceTrack on sender with null track and not set to session description should resolve with sender.track set to given track
PASS Calling replaceTrack on sender not set to session description should resolve with sender.track set to given track
PASS Calling replaceTrack(null) on sender not set to session description should resolve with sender.track set to null
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpSender-setParameters-expected.txt (235713 => 235714)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpSender-setParameters-expected.txt 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpSender-setParameters-expected.txt 2018-09-05 22:30:04 UTC (rev 235714)
@@ -1,3 +1,3 @@
-FAIL setParameters() when transceiver is stopped should reject with InvalidStateError sender.setParameters is not a function. (In 'sender.setParameters(param)', 'sender.setParameters' is undefined)
+PASS setParameters() when transceiver is stopped should reject with InvalidStateError
Modified: trunk/LayoutTests/webrtc/video-getParameters.html (235713 => 235714)
--- trunk/LayoutTests/webrtc/video-getParameters.html 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/LayoutTests/webrtc/video-getParameters.html 2018-09-05 22:30:04 UTC (rev 235714)
@@ -51,7 +51,7 @@
assert_equals(JSON.stringify(senderParameters), JSON.stringify(receiverParameters), "testing sender vs. receiver parameters");
senderParameters.encodings[0].ssrc = 1;
- assert_equals(JSON.stringify(senderParameters), '{"codecs":[],"degradationPreference":"balanced","encodings":[{"active":true,"dtx":"disabled","fec":{"ssrc":1},"maxBitrate":0,"maxFramerate":0,"priority":"medium","rid":"","rtx":{"ssrc":1},"scaleResolutionDownBy":1,"ssrc":1}],"headerExtensions":[],"transactionId":""}', "Testing sanitized parameters");
+ assert_equals(JSON.stringify(senderParameters), '{"codecs":[],"degradationPreference":"balanced","encodings":[{"active":true,"fec":{"ssrc":1},"maxBitrate":0,"maxFramerate":0,"priority":"medium","rid":"","rtx":{"ssrc":1},"scaleResolutionDownBy":1,"ssrc":1}],"headerExtensions":[],"transactionId":""}', "Testing sanitized parameters");
});
}, "Basic video stats");
</script>
Modified: trunk/Source/ThirdParty/libwebrtc/ChangeLog (235713 => 235714)
--- trunk/Source/ThirdParty/libwebrtc/ChangeLog 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/ThirdParty/libwebrtc/ChangeLog 2018-09-05 22:30:04 UTC (rev 235714)
@@ -1,3 +1,14 @@
+2018-09-05 Youenn Fablet <[email protected]>
+
+ Expose RTCRtpSender.setParameters
+ https://bugs.webkit.org/show_bug.cgi?id=189307
+
+ Reviewed by Eric Carlson.
+
+ * Configurations/libwebrtc.iOS.exp:
+ * Configurations/libwebrtc.iOSsim.exp:
+ * Configurations/libwebrtc.mac.exp:
+
2018-08-29 David Kilzer <[email protected]>
Remove empty directories from from svn.webkit.org repository
Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp (235713 => 235714)
--- trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp 2018-09-05 22:30:04 UTC (rev 235714)
@@ -206,3 +206,9 @@
__ZN3rtc19PacketSocketFactory21CreateClientTcpSocketERKNS_13SocketAddressES3_RKNS_9ProxyInfoERKNSt3__112basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEERKNS_22PacketSocketTcpOptionsE
__ZN3rtc13PacketOptionsC1Ev
__ZN6webrtc27CreatePeerConnectionFactoryEPN3rtc6ThreadES2_S2_NS0_13scoped_refptrINS_17AudioDeviceModuleEEENS3_INS_19AudioEncoderFactoryEEENS3_INS_19AudioDecoderFactoryEEENSt3__110unique_ptrINS_19VideoEncoderFactoryENSA_14default_deleteISC_EEEENSB_INS_19VideoDecoderFactoryENSD_ISG_EEEENS3_INS_10AudioMixerEEENS3_INS_15AudioProcessingEEE
+__ZNK6webrtc8RTCError7messageEv
+__ZN6webrtc12RtpExtensionC1Ev
+__ZN6webrtc12RtpExtensionD1Ev
+__ZN6webrtc21RtpEncodingParametersC1ERKS0_
+__ZN6webrtc21RtpEncodingParametersC1Ev
+__ZN6webrtc21RtpEncodingParametersD1Ev
Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp (235713 => 235714)
--- trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp 2018-09-05 22:30:04 UTC (rev 235714)
@@ -206,3 +206,10 @@
__ZN3rtc19PacketSocketFactory21CreateClientTcpSocketERKNS_13SocketAddressES3_RKNS_9ProxyInfoERKNSt3__112basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEERKNS_22PacketSocketTcpOptionsE
__ZN3rtc13PacketOptionsC1Ev
__ZN6webrtc27CreatePeerConnectionFactoryEPN3rtc6ThreadES2_S2_NS0_13scoped_refptrINS_17AudioDeviceModuleEEENS3_INS_19AudioEncoderFactoryEEENS3_INS_19AudioDecoderFactoryEEENSt3__110unique_ptrINS_19VideoEncoderFactoryENSA_14default_deleteISC_EEEENSB_INS_19VideoDecoderFactoryENSD_ISG_EEEENS3_INS_10AudioMixerEEENS3_INS_15AudioProcessingEEE
+__ZNK6webrtc8RTCError7messageEv
+__ZNK6webrtc8RTCError7messageEv
+__ZN6webrtc12RtpExtensionC1Ev
+__ZN6webrtc12RtpExtensionD1Ev
+__ZN6webrtc21RtpEncodingParametersC1ERKS0_
+__ZN6webrtc21RtpEncodingParametersC1Ev
+__ZN6webrtc21RtpEncodingParametersD1Ev
Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp (235713 => 235714)
--- trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp 2018-09-05 22:30:04 UTC (rev 235714)
@@ -206,3 +206,10 @@
__ZN3rtc19PacketSocketFactory21CreateClientTcpSocketERKNS_13SocketAddressES3_RKNS_9ProxyInfoERKNSt3__112basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEERKNS_22PacketSocketTcpOptionsE
__ZN3rtc13PacketOptionsC1Ev
__ZN6webrtc27CreatePeerConnectionFactoryEPN3rtc6ThreadES2_S2_NS0_13scoped_refptrINS_17AudioDeviceModuleEEENS3_INS_19AudioEncoderFactoryEEENS3_INS_19AudioDecoderFactoryEEENSt3__110unique_ptrINS_19VideoEncoderFactoryENSA_14default_deleteISC_EEEENSB_INS_19VideoDecoderFactoryENSD_ISG_EEEENS3_INS_10AudioMixerEEENS3_INS_15AudioProcessingEEE
+__ZNK6webrtc8RTCError7messageEv
+__ZNK6webrtc8RTCError7messageEv
+__ZN6webrtc12RtpExtensionC1Ev
+__ZN6webrtc12RtpExtensionD1Ev
+__ZN6webrtc21RtpEncodingParametersC1ERKS0_
+__ZN6webrtc21RtpEncodingParametersC1Ev
+__ZN6webrtc21RtpEncodingParametersD1Ev
Modified: trunk/Source/WebCore/ChangeLog (235713 => 235714)
--- trunk/Source/WebCore/ChangeLog 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/ChangeLog 2018-09-05 22:30:04 UTC (rev 235714)
@@ -1,3 +1,41 @@
+2018-09-05 Youenn Fablet <[email protected]>
+
+ Expose RTCRtpSender.setParameters
+ https://bugs.webkit.org/show_bug.cgi?id=189307
+
+ Reviewed by Eric Carlson.
+
+ Implement RTCRtpSender.setParameters.
+ This is an incomplete implementation as we need to refresh parameters as per the spec and testing is much easier with full transceiver support.
+ Implementation uses sender backend to set the parameters at libwebrtc level.
+ Fix the case of a stopped sender/transceiver in which case promise should be rejected.
+ Covered by rebased and modified tests.
+
+ * Modules/mediastream/RTCRtpParameters.h:
+ * Modules/mediastream/RTCRtpSender.cpp:
+ (WebCore::RTCRtpSender::setParameters):
+ * Modules/mediastream/RTCRtpSender.h:
+ * Modules/mediastream/RTCRtpSender.idl:
+ * Modules/mediastream/RTCRtpSenderBackend.h:
+ * Modules/mediastream/RTCRtpTransceiver.cpp:
+ (WebCore::RTCRtpTransceiver::stop):
+ * Modules/mediastream/RTCRtpTransceiver.h:
+ * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:
+ (WebCore::LibWebRTCRtpReceiverBackend::getParameters):
+ * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
+ (WebCore::LibWebRTCRtpSenderBackend::getParameters const):
+ (WebCore::LibWebRTCRtpSenderBackend::setParameters):
+ * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
+ * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
+ (WebCore::toRTCEncodingParameters):
+ (WebCore::fromRTCEncodingParameters):
+ (WebCore::toRTCHeaderExtensionParameters):
+ (WebCore::fromRTCHeaderExtensionParameters):
+ (WebCore::toRTCCodecParameters):
+ (WebCore::toRTCRtpParameters):
+ (WebCore::fromRTCRtpParameters):
+ * Modules/mediastream/libwebrtc/LibWebRTCUtils.h:
+
2018-09-05 Simon Fraser <[email protected]>
Remove some logging that I committed by mistake.
Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpParameters.h (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/RTCRtpParameters.h 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpParameters.h 2018-09-05 22:30:04 UTC (rev 235714)
@@ -57,7 +57,7 @@
unsigned long ssrc { 0 };
RtxParameters rtx;
FecParameters fec;
- DtxStatus dtx { DtxStatus::Disabled };
+ std::optional<DtxStatus> dtx;
bool active { false};
PriorityType priority { PriorityType::Medium };
unsigned long maxBitrate { 0 };
Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.cpp (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.cpp 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.cpp 2018-09-05 22:30:04 UTC (rev 235714)
@@ -99,6 +99,15 @@
return m_backend->getParameters();
}
+void RTCRtpSender::setParameters(const RTCRtpParameters& parameters, DOMPromiseDeferred<void>&& promise)
+{
+ if (isStopped()) {
+ promise.reject(InvalidStateError);
+ return;
+ }
+ return m_backend->setParameters(parameters, WTFMove(promise));
+}
+
} // namespace WebCore
#endif // ENABLE(WEB_RTC)
Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.h (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.h 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.h 2018-09-05 22:30:04 UTC (rev 235714)
@@ -57,6 +57,8 @@
void replaceTrack(RefPtr<MediaStreamTrack>&&, DOMPromiseDeferred<void>&&);
RTCRtpParameters getParameters();
+ void setParameters(const RTCRtpParameters&, DOMPromiseDeferred<void>&&);
+
RTCRtpSenderBackend* backend() { return m_backend.get(); }
private:
Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.idl (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.idl 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.idl 2018-09-05 22:30:04 UTC (rev 235714)
@@ -37,7 +37,8 @@
// FIXME 169662: missing transport
// FIXME 169662: missing rtcpTransport
// FIXME 169662: missing getCapabilities
- // FIXME 169662: missing setParameters
+ // FIXME 169662: missing setStreams
RTCRtpParameters getParameters();
+ Promise<void> setParameters(RTCRtpParameters parameters);
Promise<void> replaceTrack(MediaStreamTrack? withTrack);
};
Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpSenderBackend.h (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/RTCRtpSenderBackend.h 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpSenderBackend.h 2018-09-05 22:30:04 UTC (rev 235714)
@@ -38,6 +38,7 @@
public:
virtual void replaceTrack(RTCRtpSender&, RefPtr<MediaStreamTrack>&&, DOMPromiseDeferred<void>&&) = 0;
virtual RTCRtpParameters getParameters() const = 0;
+ virtual void setParameters(const RTCRtpParameters&, DOMPromiseDeferred<void>&&) = 0;
virtual ~RTCRtpSenderBackend() = default;
};
Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp 2018-09-05 22:30:04 UTC (rev 235714)
@@ -102,6 +102,13 @@
m_direction = RTCRtpTransceiverDirection::Inactive;
}
+void RTCRtpTransceiver::stop()
+{
+ m_stopped = true;
+ m_receiver->stop();
+ m_sender->stop();
+}
+
void RtpTransceiverSet::append(Ref<RTCRtpTransceiver>&& transceiver)
{
m_senders.append(transceiver->sender());
Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpTransceiver.h (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/RTCRtpTransceiver.h 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpTransceiver.h 2018-09-05 22:30:04 UTC (rev 235714)
@@ -68,7 +68,7 @@
RTCRtpReceiver& receiver() { return m_receiver.get(); }
bool stopped() const { return m_stopped; }
- void stop() { m_stopped = true; }
+ void stop();
// FIXME: Temporary solution to keep track of ICE states for this transceiver. Later, each
// sender and receiver will have up to two DTLS transports, which in turn will have an ICE
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp 2018-09-05 22:30:04 UTC (rev 235714)
@@ -33,7 +33,7 @@
RTCRtpParameters LibWebRTCRtpReceiverBackend::getParameters()
{
- return fillRtpParameters(m_rtcReceiver->GetParameters());
+ return toRTCRtpParameters(m_rtcReceiver->GetParameters());
}
} // namespace WebCore
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp 2018-09-05 22:30:04 UTC (rev 235714)
@@ -49,9 +49,23 @@
if (!m_rtcSender)
return { };
- return fillRtpParameters(m_rtcSender->GetParameters());
+ return toRTCRtpParameters(m_rtcSender->GetParameters());
}
+void LibWebRTCRtpSenderBackend::setParameters(const RTCRtpParameters& parameters, DOMPromiseDeferred<void>&& promise)
+{
+ if (!m_rtcSender) {
+ promise.reject(NotSupportedError);
+ return;
+ }
+ auto error = m_rtcSender->SetParameters(fromRTCRtpParameters(parameters));
+ if (!error.ok()) {
+ promise.reject(Exception { InvalidStateError, error.message() });
+ return;
+ }
+ promise.resolve();
+}
+
} // namespace WebCore
#endif // ENABLE(WEB_RTC) && USE(LIBWEBRTC)
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h 2018-09-05 22:30:04 UTC (rev 235714)
@@ -56,6 +56,7 @@
private:
void replaceTrack(RTCRtpSender&, RefPtr<MediaStreamTrack>&&, DOMPromiseDeferred<void>&&) final;
RTCRtpParameters getParameters() const final;
+ void setParameters(const RTCRtpParameters&, DOMPromiseDeferred<void>&&) final;
WeakPtr<LibWebRTCPeerConnectionBackend> m_peerConnectionBackend;
rtc::scoped_refptr<webrtc::RtpSenderInterface> m_rtcSender;
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp 2018-09-05 22:30:04 UTC (rev 235714)
@@ -34,7 +34,7 @@
namespace WebCore {
-static inline RTCRtpParameters::EncodingParameters fillEncodingParameters(const webrtc::RtpEncodingParameters& rtcParameters)
+static inline RTCRtpParameters::EncodingParameters toRTCEncodingParameters(const webrtc::RtpEncodingParameters& rtcParameters)
{
RTCRtpParameters::EncodingParameters parameters;
@@ -65,8 +65,33 @@
return parameters;
}
-static inline RTCRtpParameters::HeaderExtensionParameters fillHeaderExtensionParameters(const webrtc::RtpHeaderExtensionParameters& rtcParameters)
+static inline webrtc::RtpEncodingParameters fromRTCEncodingParameters(const RTCRtpParameters::EncodingParameters& parameters)
{
+ webrtc::RtpEncodingParameters rtcParameters;
+
+ if (parameters.dtx) {
+ switch (*parameters.dtx) {
+ case RTCRtpParameters::DtxStatus::Disabled:
+ rtcParameters.dtx = webrtc::DtxStatus::DISABLED;
+ break;
+ case RTCRtpParameters::DtxStatus::Enabled:
+ rtcParameters.dtx = webrtc::DtxStatus::ENABLED;
+ }
+ }
+ rtcParameters.active = parameters.active;
+ if (parameters.maxBitrate)
+ rtcParameters.max_bitrate_bps = parameters.maxBitrate;
+ if (parameters.maxFramerate)
+ rtcParameters.max_framerate = parameters.maxFramerate;
+ rtcParameters.rid = parameters.rid.utf8().data();
+ if (parameters.scaleResolutionDownBy != 1)
+ rtcParameters.scale_resolution_down_by = parameters.scaleResolutionDownBy;
+
+ return rtcParameters;
+}
+
+static inline RTCRtpParameters::HeaderExtensionParameters toRTCHeaderExtensionParameters(const webrtc::RtpHeaderExtensionParameters& rtcParameters)
+{
RTCRtpParameters::HeaderExtensionParameters parameters;
parameters.uri = fromStdString(rtcParameters.uri);
@@ -75,8 +100,18 @@
return parameters;
}
-static inline RTCRtpParameters::CodecParameters fillCodecParameters(const webrtc::RtpCodecParameters& rtcParameters)
+static inline webrtc::RtpHeaderExtensionParameters fromRTCHeaderExtensionParameters(const RTCRtpParameters::HeaderExtensionParameters& parameters)
{
+ webrtc::RtpHeaderExtensionParameters rtcParameters;
+
+ rtcParameters.uri = parameters.uri.utf8().data();
+ rtcParameters.id = parameters.id;
+
+ return rtcParameters;
+}
+
+static inline RTCRtpParameters::CodecParameters toRTCCodecParameters(const webrtc::RtpCodecParameters& rtcParameters)
+{
RTCRtpParameters::CodecParameters parameters;
parameters.payloadType = rtcParameters.payload_type;
@@ -89,17 +124,17 @@
return parameters;
}
-RTCRtpParameters fillRtpParameters(const webrtc::RtpParameters& rtcParameters)
+RTCRtpParameters toRTCRtpParameters(const webrtc::RtpParameters& rtcParameters)
{
RTCRtpParameters parameters;
parameters.transactionId = fromStdString(rtcParameters.transaction_id);
for (auto& rtcEncoding : rtcParameters.encodings)
- parameters.encodings.append(fillEncodingParameters(rtcEncoding));
+ parameters.encodings.append(toRTCEncodingParameters(rtcEncoding));
for (auto& extension : rtcParameters.header_extensions)
- parameters.headerExtensions.append(fillHeaderExtensionParameters(extension));
+ parameters.headerExtensions.append(toRTCHeaderExtensionParameters(extension));
for (auto& codec : rtcParameters.codecs)
- parameters.codecs.append(fillCodecParameters(codec));
+ parameters.codecs.append(toRTCCodecParameters(codec));
switch (rtcParameters.degradation_preference) {
// FIXME: Support DegradationPreference::DISABLED.
@@ -117,6 +152,31 @@
return parameters;
}
+webrtc::RtpParameters fromRTCRtpParameters(const RTCRtpParameters& parameters)
+{
+ webrtc::RtpParameters rtcParameters;
+ rtcParameters.transaction_id = parameters.transactionId.utf8().data();
+
+ for (auto& encoding : parameters.encodings)
+ rtcParameters.encodings.push_back(fromRTCEncodingParameters(encoding));
+ for (auto& extension : parameters.headerExtensions)
+ rtcParameters.header_extensions.push_back(fromRTCHeaderExtensionParameters(extension));
+ // Codecs parameters are readonly
+
+ switch (parameters.degradationPreference) {
+ case RTCRtpParameters::DegradationPreference::MaintainFramerate:
+ rtcParameters.degradation_preference = webrtc::DegradationPreference::MAINTAIN_FRAMERATE;
+ break;
+ case RTCRtpParameters::DegradationPreference::MaintainResolution:
+ rtcParameters.degradation_preference = webrtc::DegradationPreference::MAINTAIN_RESOLUTION;
+ break;
+ case RTCRtpParameters::DegradationPreference::Balanced:
+ rtcParameters.degradation_preference = webrtc::DegradationPreference::BALANCED;
+ break;
+ }
+ return rtcParameters;
+}
+
}; // namespace WebCore
#endif // USE(LIBWEBRTC)
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.h (235713 => 235714)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.h 2018-09-05 22:25:46 UTC (rev 235713)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.h 2018-09-05 22:30:04 UTC (rev 235714)
@@ -36,7 +36,8 @@
struct RTCRtpParameters;
-RTCRtpParameters fillRtpParameters(const webrtc::RtpParameters&);
+RTCRtpParameters toRTCRtpParameters(const webrtc::RtpParameters&);
+webrtc::RtpParameters fromRTCRtpParameters(const RTCRtpParameters&);
inline String fromStdString(const std::string& value)
{