Title: [239532] trunk
Revision
239532
Author
you...@apple.com
Date
2018-12-21 18:14:31 -0800 (Fri, 21 Dec 2018)

Log Message

RTCRtpSender.setParameters() does set active parameter
https://bugs.webkit.org/show_bug.cgi?id=192848

Reviewed by Eric Carlson.

Source/WebCore:

Covered by updated test.

* Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
(WebCore::updateRTCRtpSendParameters):
The routine was updating the local value, not the out parameter.

LayoutTests:

* webrtc/video.html:
Add a check for active value.
Test video freezing through canvas instead of stats.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (239531 => 239532)


--- trunk/LayoutTests/ChangeLog	2018-12-22 01:37:00 UTC (rev 239531)
+++ trunk/LayoutTests/ChangeLog	2018-12-22 02:14:31 UTC (rev 239532)
@@ -1,3 +1,14 @@
+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.
+
+        * webrtc/video.html:
+        Add a check for active value.
+        Test video freezing through canvas instead of stats.
+
 2018-12-21  Justin Michaud  <justin_mich...@apple.com>
 
         CSS variables don't work for colors in "border" property

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()) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to