Modified: trunk/LayoutTests/webrtc/video.html (239531 => 239532)
--- trunk/LayoutTests/webrtc/video.html 2018-12-22 01:37:00 UTC (rev 239531)
+++ trunk/LayoutTests/webrtc/video.html 2018-12-22 02:14:31 UTC (rev 239532)
@@ -14,15 +14,19 @@
video = document.getElementById("video");
canvas = document.getElementById("canvas");
-function testImage()
+function grabFrameData(x, y, w, h)
{
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
- canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
- imageData = canvas.getContext('2d').getImageData(10, 325, 250, 1);
- data = ""
+ canvas.getContext('2d').drawImage(video, x, y, w, h, x, y, w, h);
+ return canvas.getContext('2d').getImageData(x, y, w, h).data;
+}
+function testImage()
+{
+ const data = "" 325, 250, 1);
+
var index = 20;
assert_true(data[index] < 100);
assert_true(data[index + 1] < 100);
@@ -72,69 +76,50 @@
testImage();
}, "Basic video exchange");
-async function getInboundRTPStatsNumberOfDecodedFrames(connection)
+function getCircleImageData()
{
- var report = await connection.getStats();
- var framesDecoded;
- report.forEach((statItem) => {
- if (statItem.type === "inbound-rtp")
- framesDecoded = statItem.framesDecoded;
- });
- return framesDecoded;
+ return grabFrameData(450, 100, 150, 100);
}
-async function testFrameDecodedIncreased(connection, count, previousFramesNumber)
+async function checkVideoIsUpdated(shouldBeUpdated, count, referenceData)
{
- if (previousFramesNumber === undefined) {
- let number = await getInboundRTPStatsNumberOfDecodedFrames(connection);
- await waitFor(1000);
- return testFrameDecodedIncreased(connection, 0, number);
- }
+ if (count === undefined)
+ count = 0;
+ else if (count >= 20)
+ return Promise.reject("checkVideoIsUpdated timed out :" + shouldBeUpdated + " " + count);
- var number = await getInboundRTPStatsNumberOfDecodedFrames(connection);
- if (previousFramesNumber && number > previousFramesNumber)
- return;
+ if (referenceData === undefined)
+ referenceData = getCircleImageData();
- if (count >= 20)
- return Promise.reject("test increasing frame encoded timed out");
+ await waitFor(200);
+ const newData = getCircleImageData();
- await waitFor(1000);
- return testFrameDecodedIncreased(connection, ++count, previousFramesNumber);
-}
-
-async function testFrameDecodedDidNotIncreased(connection, count, previousFramesNumber)
-{
- if (previousFramesNumber === undefined) {
- let number = await getInboundRTPStatsNumberOfDecodedFrames(connection);
- await waitFor(100);
- return testFrameDecodedDidNotIncreased(connection, 0, number);
- }
-
- var number = await getInboundRTPStatsNumberOfDecodedFrames(connection);
- if (previousFramesNumber && number == previousFramesNumber)
+ if (shouldBeUpdated === (JSON.stringify(referenceData) !== JSON.stringify(newData)))
return;
- if (count >= 20)
- return Promise.reject("test increasing frame encoded timed out");
-
- await waitFor(100);
- return testFrameDecodedIncreased(connection, ++count, number);
+ await checkVideoIsUpdated(shouldBeUpdated, ++count, newData);
}
promise_test(async (test) => {
- let p = pc1.getSenders()[0].getParameters();
- p.encodings[0].active = false;
- await pc1.getSenders()[0].setParameters(p);
+ const sender = pc1.getSenders()[0];
+ let p = sender.getParameters();
+ p.encodings[0].active = false;
+ await sender.setParameters(p);
- await testFrameDecodedDidNotIncreased(pc2);
+ assert_false(sender.getParameters().encodings[0].active, "encodings[0].active should be false");
+
+ await checkVideoIsUpdated(false);
}, "Call setParameters to disable sending a given encoding");
promise_test(async (test) => {
- let p = pc1.getSenders()[0].getParameters();
- p.encodings[0].active = true;
- await pc1.getSenders()[0].setParameters(p);
+ const sender = pc1.getSenders()[0];
+ let p = sender.getParameters();
+ p.encodings[0].active = true;
+ await sender.setParameters(p);
- await testFrameDecodedIncreased(pc2);
+ assert_true(sender.getParameters().encodings[0].active, "encodings[0].active should be true");
+
+ await checkVideoIsUpdated(true);
}, "Call setParameters to reenable sending a given encoding");
</script>
</body>
Modified: trunk/Source/WebCore/ChangeLog (239531 => 239532)
--- trunk/Source/WebCore/ChangeLog 2018-12-22 01:37:00 UTC (rev 239531)
+++ trunk/Source/WebCore/ChangeLog 2018-12-22 02:14:31 UTC (rev 239532)
@@ -1,3 +1,16 @@
+2018-12-21 Youenn Fablet <you...@apple.com>
+
+ RTCRtpSender.setParameters() does set active parameter
+ https://bugs.webkit.org/show_bug.cgi?id=192848
+
+ Reviewed by Eric Carlson.
+
+ Covered by updated test.
+
+ * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
+ (WebCore::updateRTCRtpSendParameters):
+ The routine was updating the local value, not the out parameter.
+
2018-12-21 Eric Carlson <eric.carl...@apple.com>
'ended' Event doesn't fire on MediaStreamTrack when a USB camera is unplugged
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp (239531 => 239532)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp 2018-12-22 01:37:00 UTC (rev 239531)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp 2018-12-22 02:14:31 UTC (rev 239532)
@@ -160,10 +160,8 @@
return parameters;
}
-void updateRTCRtpSendParameters(const RTCRtpSendParameters& parameters, webrtc::RtpParameters& currentParameters)
+void updateRTCRtpSendParameters(const RTCRtpSendParameters& parameters, webrtc::RtpParameters& rtcParameters)
{
- webrtc::RtpParameters rtcParameters = currentParameters;
-
rtcParameters.transaction_id = parameters.transactionId.utf8().data();
if (parameters.encodings.size() != rtcParameters.encodings.size()) {