Diff
Modified: trunk/LayoutTests/ChangeLog (276716 => 276717)
--- trunk/LayoutTests/ChangeLog 2021-04-28 15:44:59 UTC (rev 276716)
+++ trunk/LayoutTests/ChangeLog 2021-04-28 16:29:11 UTC (rev 276717)
@@ -1,3 +1,14 @@
+2021-04-28 Youenn Fablet <[email protected]>
+
+ Set audio transceiver nMax to 1
+ https://bugs.webkit.org/show_bug.cgi?id=225149
+ <rdar://75956639>
+
+ Reviewed by Alex Christensen.
+
+ * webrtc/audio-addTransceiver-expected.txt: Added.
+ * webrtc/audio-addTransceiver.html: Added.
+
2021-04-28 Tim Nguyen <[email protected]>
Use will-change: opacity instead of will-change: transform in fixed-inside-sticky-no-stacking-context-2.html
Added: trunk/LayoutTests/webrtc/audio-addTransceiver-expected.txt (0 => 276717)
--- trunk/LayoutTests/webrtc/audio-addTransceiver-expected.txt (rev 0)
+++ trunk/LayoutTests/webrtc/audio-addTransceiver-expected.txt 2021-04-28 16:29:11 UTC (rev 276717)
@@ -0,0 +1,3 @@
+
+PASS addTransceiver audio with encodings
+
Added: trunk/LayoutTests/webrtc/audio-addTransceiver.html (0 => 276717)
--- trunk/LayoutTests/webrtc/audio-addTransceiver.html (rev 0)
+++ trunk/LayoutTests/webrtc/audio-addTransceiver.html 2021-04-28 16:29:11 UTC (rev 276717)
@@ -0,0 +1,25 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>Testing audio addTransceiver</title>
+ <script src=""
+ <script src=""
+ </head>
+ <body>
+ <script src =""
+ <script>
+promise_test(async (test) => {
+ const pc = new RTCPeerConnection();
+ const transceiver = pc.addTransceiver("audio", { sendEncodings: [ { rid: 'foo' }, { rid: 'baz' } ] });
+
+ const parameters = transceiver.sender.getParameters();
+ assert_equals(parameters.encodings.length, 1);
+
+ await pc.setLocalDescription();
+ const sdp = pc.localDescription.sdp;
+ assert_true(sdp.indexOf('baz') === -1);
+}, "addTransceiver audio with encodings");
+ </script>
+ </body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (276716 => 276717)
--- trunk/Source/WebCore/ChangeLog 2021-04-28 15:44:59 UTC (rev 276716)
+++ trunk/Source/WebCore/ChangeLog 2021-04-28 16:29:11 UTC (rev 276717)
@@ -1,3 +1,23 @@
+2021-04-28 Youenn Fablet <[email protected]>
+
+ Set audio transceiver nMax to 1
+ https://bugs.webkit.org/show_bug.cgi?id=225149
+ <rdar://75956639>
+
+ Reviewed by Alex Christensen.
+
+ Implement step 8.4 of https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtransceiver and set nMax for audio to 1.
+
+ Test: webrtc/audio-addTransceiver.html
+
+ * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+ (WebCore::LibWebRTCMediaEndpoint::createTransceiverBackends):
+ (WebCore::LibWebRTCMediaEndpoint::addTransceiver):
+ * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
+ * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
+ (WebCore::fromRtpTransceiverInit):
+ * Modules/mediastream/libwebrtc/LibWebRTCUtils.h:
+
2021-04-28 Chris Dumez <[email protected]>
Drop ModernUnprefixedWebAudio & AudioWorklet experimental feature flags
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp (276716 => 276717)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp 2021-04-28 15:44:59 UTC (rev 276716)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp 2021-04-28 16:29:11 UTC (rev 276717)
@@ -430,9 +430,9 @@
}
template<typename T>
-ExceptionOr<LibWebRTCMediaEndpoint::Backends> LibWebRTCMediaEndpoint::createTransceiverBackends(T&& trackOrKind, const RTCRtpTransceiverInit& init, LibWebRTCRtpSenderBackend::Source&& source)
+ExceptionOr<LibWebRTCMediaEndpoint::Backends> LibWebRTCMediaEndpoint::createTransceiverBackends(T&& trackOrKind, webrtc::RtpTransceiverInit&& init, LibWebRTCRtpSenderBackend::Source&& source)
{
- auto result = m_backend->AddTransceiver(WTFMove(trackOrKind), fromRtpTransceiverInit(init));
+ auto result = m_backend->AddTransceiver(WTFMove(trackOrKind), WTFMove(init));
if (!result.ok())
return toException(result.error());
@@ -443,7 +443,7 @@
ExceptionOr<LibWebRTCMediaEndpoint::Backends> LibWebRTCMediaEndpoint::addTransceiver(const String& trackKind, const RTCRtpTransceiverInit& init)
{
auto type = trackKind == "audio" ? cricket::MediaType::MEDIA_TYPE_AUDIO : cricket::MediaType::MEDIA_TYPE_VIDEO;
- return createTransceiverBackends(type, init, nullptr);
+ return createTransceiverBackends(type, fromRtpTransceiverInit(init, type), nullptr);
}
std::pair<LibWebRTCRtpSenderBackend::Source, rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>> LibWebRTCMediaEndpoint::createSourceAndRTCTrack(MediaStreamTrack& track)
@@ -472,8 +472,9 @@
ExceptionOr<LibWebRTCMediaEndpoint::Backends> LibWebRTCMediaEndpoint::addTransceiver(MediaStreamTrack& track, const RTCRtpTransceiverInit& init)
{
+ auto type = track.source().type() == RealtimeMediaSource::Type::Audio ? cricket::MediaType::MEDIA_TYPE_AUDIO : cricket::MediaType::MEDIA_TYPE_VIDEO;
auto sourceAndTrack = createSourceAndRTCTrack(track);
- return createTransceiverBackends(WTFMove(sourceAndTrack.second), init, WTFMove(sourceAndTrack.first));
+ return createTransceiverBackends(WTFMove(sourceAndTrack.second), fromRtpTransceiverInit(init, type), WTFMove(sourceAndTrack.first));
}
void LibWebRTCMediaEndpoint::setSenderSourceFromTrack(LibWebRTCRtpSenderBackend& sender, MediaStreamTrack& track)
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h (276716 => 276717)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h 2021-04-28 15:44:59 UTC (rev 276716)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h 2021-04-28 16:29:11 UTC (rev 276717)
@@ -147,7 +147,7 @@
void addPendingTrackEvent(Ref<RTCRtpReceiver>&&, MediaStreamTrack&, const std::vector<rtc::scoped_refptr<webrtc::MediaStreamInterface>>&, RefPtr<RTCRtpTransceiver>&&);
template<typename T>
- ExceptionOr<Backends> createTransceiverBackends(T&&, const RTCRtpTransceiverInit&, LibWebRTCRtpSenderBackend::Source&&);
+ ExceptionOr<Backends> createTransceiverBackends(T&&, webrtc::RtpTransceiverInit&&, LibWebRTCRtpSenderBackend::Source&&);
void OnStatsDelivered(const rtc::scoped_refptr<const webrtc::RTCStatsReport>&) final;
void gatherStatsForLogging();
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp (276716 => 276717)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp 2021-04-28 15:44:59 UTC (rev 276716)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp 2021-04-28 16:29:11 UTC (rev 276717)
@@ -317,14 +317,20 @@
RELEASE_ASSERT_NOT_REACHED();
}
-webrtc::RtpTransceiverInit fromRtpTransceiverInit(const RTCRtpTransceiverInit& init)
+webrtc::RtpTransceiverInit fromRtpTransceiverInit(const RTCRtpTransceiverInit& init, cricket::MediaType type)
{
webrtc::RtpTransceiverInit rtcInit;
rtcInit.direction = fromRTCRtpTransceiverDirection(init.direction);
for (auto& stream : init.streams)
rtcInit.stream_ids.push_back(stream->id().utf8().data());
- for (auto& encoding : init.sendEncodings)
- rtcInit.send_encodings.push_back(fromRTCEncodingParameters(encoding));
+
+ if (type == cricket::MediaType::MEDIA_TYPE_AUDIO) {
+ if (!init.sendEncodings.isEmpty())
+ rtcInit.send_encodings.push_back(fromRTCEncodingParameters(init.sendEncodings[0]));
+ } else {
+ for (auto& encoding : init.sendEncodings)
+ rtcInit.send_encodings.push_back(fromRTCEncodingParameters(encoding));
+ }
return rtcInit;
}
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.h (276716 => 276717)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.h 2021-04-28 15:44:59 UTC (rev 276716)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.h 2021-04-28 16:29:11 UTC (rev 276717)
@@ -27,6 +27,7 @@
#if USE(LIBWEBRTC)
#include "ExceptionCode.h"
+#include <webrtc/api/media_types.h>
#include <wtf/text/WTFString.h>
namespace webrtc {
@@ -58,7 +59,7 @@
RTCRtpTransceiverDirection toRTCRtpTransceiverDirection(webrtc::RtpTransceiverDirection);
webrtc::RtpTransceiverDirection fromRTCRtpTransceiverDirection(RTCRtpTransceiverDirection);
-webrtc::RtpTransceiverInit fromRtpTransceiverInit(const RTCRtpTransceiverInit&);
+webrtc::RtpTransceiverInit fromRtpTransceiverInit(const RTCRtpTransceiverInit&, cricket::MediaType);
ExceptionCode toExceptionCode(webrtc::RTCErrorType);
Exception toException(const webrtc::RTCError&);