Title: [272060] trunk

Diff

Modified: trunk/LayoutTests/ChangeLog (272059 => 272060)


--- trunk/LayoutTests/ChangeLog	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/LayoutTests/ChangeLog	2021-01-29 15:11:12 UTC (rev 272060)
@@ -1,3 +1,16 @@
+2021-01-29  Commit Queue  <[email protected]>
+
+        Unreviewed, reverting r272052.
+        https://bugs.webkit.org/show_bug.cgi?id=221132
+
+        WPT mediacapture-record/MediaRecorder-stop.html is broken
+
+        Reverted changeset:
+
+        "Use WebRTC GPU process flag for MediaRecorder"
+        https://bugs.webkit.org/show_bug.cgi?id=220967
+        https://trac.webkit.org/changeset/272052
+
 2021-01-29  Said Abou-Hallawa  <[email protected]>
 
         REGRESSION(r262893): feComponentTransfer is not rendered correctly on Retina display

Modified: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html (272059 => 272060)


--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html	2021-01-29 15:11:12 UTC (rev 272060)
@@ -20,6 +20,9 @@
     </canvas>
 </div>
 <script>
+    if (window.internals)
+        window.internals.setUseGPUProcessForWebRTC(true);
+
     var context;
     var drawStartTime;
 

Modified: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html (272059 => 272060)


--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html	2021-01-29 15:11:12 UTC (rev 272060)
@@ -1,4 +1,3 @@
-<!-- webkit-test-runner [ WebRTCPlatformCodecsInGPUProcessEnabled=false ] -->
 <!doctype html>
 <html>
 <head>
@@ -20,6 +19,9 @@
     </canvas>
 </div>
 <script>
+    if (window.internals)
+        window.internals.setUseGPUProcessForWebRTC(false);
+
     var context;
     var drawStartTime;
 

Modified: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-requestData.html (272059 => 272060)


--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-requestData.html	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-requestData.html	2021-01-29 15:11:12 UTC (rev 272060)
@@ -20,6 +20,9 @@
     </canvas>
 </div>
 <script>
+    if (window.internals)
+        window.internals.setUseGPUProcessForWebRTC(true);
+
     var context;
     var drawStartTime;
 

Modified: trunk/LayoutTests/http/wpt/mediarecorder/mute-tracks.html (272059 => 272060)


--- trunk/LayoutTests/http/wpt/mediarecorder/mute-tracks.html	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/LayoutTests/http/wpt/mediarecorder/mute-tracks.html	2021-01-29 15:11:12 UTC (rev 272060)
@@ -1,4 +1,3 @@
-<!-- webkit-test-runner [ WebRTCPlatformCodecsInGPUProcessEnabled=false ] -->
 <!DOCTYPE html>
 <html>
 <head>
@@ -13,6 +12,9 @@
     <video id="video3" controls></video>
     <canvas id="canvas3" width="320" height="240"></canvas>
     <script>
+if (window.internals)
+    window.internals.setUseGPUProcessForWebRTC(false);
+
 function analyseAudio(streamOrVideo, duration, context)
 {
     return new Promise((resolve, reject) => {

Modified: trunk/LayoutTests/http/wpt/mediarecorder/pause-recording.html (272059 => 272060)


--- trunk/LayoutTests/http/wpt/mediarecorder/pause-recording.html	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/LayoutTests/http/wpt/mediarecorder/pause-recording.html	2021-01-29 15:11:12 UTC (rev 272060)
@@ -1,4 +1,3 @@
-<!-- webkit-test-runner [ WebRTCPlatformCodecsInGPUProcessEnabled=false ] -->
 <!DOCTYPE html>
 <html>
 <head>
@@ -10,6 +9,9 @@
 <body>
     <video id="video1" controls></video>
     <script>
+if (window.internals)
+    window.internals.setUseGPUProcessForWebRTC(false);
+
 function waitFor(duration)
 {
     return new Promise((resolve) => setTimeout(resolve, duration));

Modified: trunk/LayoutTests/platform/glib/TestExpectations (272059 => 272060)


--- trunk/LayoutTests/platform/glib/TestExpectations	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/LayoutTests/platform/glib/TestExpectations	2021-01-29 15:11:12 UTC (rev 272060)
@@ -942,6 +942,9 @@
 webkit.org/b/206464 webkit.org/b/218787 webrtc/peerconnection-page-cache-long.html [ Failure Pass Timeout ]
 webkit.org/b/206464 webkit.org/b/218787 webrtc/peerconnection-page-cache.html [ Failure Pass Timeout ]
 
+webkit.org/b/206583 [ Release ] webrtc/video-gpuProcess.html [ Failure ]
+webkit.org/b/206583 [ Debug ] webrtc/video-gpuProcess.html [ Timeout ]
+
 webkit.org/b/208125 webrtc/peerconnection-new-candidate-page-cache.html [ Failure Timeout ]
 
 webkit.org/b/209163 webrtc/audio-video-element-playing.html [ Crash Failure Pass ]

Added: trunk/LayoutTests/webrtc/video-gpuProcess-expected.txt (0 => 272060)


--- trunk/LayoutTests/webrtc/video-gpuProcess-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/webrtc/video-gpuProcess-expected.txt	2021-01-29 15:11:12 UTC (rev 272060)
@@ -0,0 +1,6 @@
+
+
+PASS Basic video exchange
+PASS Call setParameters to disable sending a given encoding
+PASS Call setParameters to reenable sending a given encoding
+

Added: trunk/LayoutTests/webrtc/video-gpuProcess.html (0 => 272060)


--- trunk/LayoutTests/webrtc/video-gpuProcess.html	                        (rev 0)
+++ trunk/LayoutTests/webrtc/video-gpuProcess.html	2021-01-29 15:11:12 UTC (rev 272060)
@@ -0,0 +1,129 @@
+<!doctype html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>Video exchange using GPU process</title>
+        <script src=""
+        <script src=""
+    </head>
+    <body>
+        <video id="video" autoplay=""></video>
+        <canvas id="canvas" width="640" height="480"></canvas>
+        <script src =""
+        <script>
+if (window.internals)
+    internals.setUseGPUProcessForWebRTC(true);
+
+video = document.getElementById("video");
+canvas = document.getElementById("canvas");
+
+function grabFrameData(x, y, w, h)
+{
+    canvas.width = video.videoWidth;
+    canvas.height = video.videoHeight;
+
+    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);
+    assert_true(data[index + 2] < 100);
+
+    index = 80;
+    assert_true(data[index] > 200);
+    assert_true(data[index + 1] > 200);
+    assert_true(data[index + 2] > 200);
+
+    index += 80;
+    assert_true(data[index] > 200);
+    assert_true(data[index + 1] > 200);
+    assert_true(data[index + 2] < 100);
+}
+
+var pc1, pc2;
+promise_test(async (test) => {
+    if (window.testRunner)
+        testRunner.setUserMediaPermission(true);
+
+    const localStream = await navigator.mediaDevices.getUserMedia({video: {advanced: [{width:{min:640}}, {height:{min:480} } ]}});
+    if (window.internals)
+        assert_true(internals.pageMediaState().includes('HasActiveVideoCaptureDevice'), "Unexpected HasActiveVideoCaptureDevice");
+    const stream = await new Promise((resolve, reject) => {
+        createConnections((firstConnection) => {
+            pc1 = firstConnection;
+            firstConnection.addTrack(localStream.getVideoTracks()[0], localStream);
+        }, (secondConnection) => {
+            pc2 = secondConnection;
+            secondConnection._ontrack_ = (trackEvent) => {
+                assert_true(trackEvent.track instanceof MediaStreamTrack);
+                assert_true(trackEvent.receiver instanceof RTCRtpReceiver);
+                assert_true(Array.isArray(trackEvent.streams), "Array.isArray() should return true");
+                assert_true(Object.isFrozen(trackEvent.streams), "Object.isFrozen() should return true");
+                assert_equals(trackEvent.track.id, localStream.getVideoTracks()[0].id);
+                assert_equals(trackEvent.track, trackEvent.streams[0].getVideoTracks()[0]);
+                resolve(trackEvent.streams[0]);
+            };
+        });
+        setTimeout(() => reject("Test timed out"), 5000);
+    });
+
+    video.srcObject = stream;
+    await video.play();
+
+    testImage();
+}, "Basic video exchange");
+
+function getCircleImageData()
+{
+    return grabFrameData(450, 100, 150, 100);
+}
+
+async function checkVideoIsUpdated(shouldBeUpdated, count, referenceData)
+{
+    if (count === undefined)
+        count = 0;
+    else if (count >= 20)
+        return Promise.reject("checkVideoIsUpdated timed out :" + shouldBeUpdated + " " + count);
+
+    if (referenceData === undefined)
+        referenceData = getCircleImageData();
+
+    await waitFor(200);
+    const newData = getCircleImageData();
+
+    if (shouldBeUpdated === (JSON.stringify(referenceData) !== JSON.stringify(newData)))
+        return;
+
+    await checkVideoIsUpdated(shouldBeUpdated, ++count, newData);
+}
+
+promise_test(async (test) => {
+    const sender = pc1.getSenders()[0];
+    let p = sender.getParameters();
+    p.encodings[0].active = false;
+    await sender.setParameters(p);
+
+    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) => {
+    const sender = pc1.getSenders()[0];
+    let p = sender.getParameters();
+    p.encodings[0].active = true;
+    await sender.setParameters(p);
+
+    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>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (272059 => 272060)


--- trunk/Source/WebCore/ChangeLog	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/Source/WebCore/ChangeLog	2021-01-29 15:11:12 UTC (rev 272060)
@@ -1,3 +1,16 @@
+2021-01-29  Commit Queue  <[email protected]>
+
+        Unreviewed, reverting r272052.
+        https://bugs.webkit.org/show_bug.cgi?id=221132
+
+        WPT mediacapture-record/MediaRecorder-stop.html is broken
+
+        Reverted changeset:
+
+        "Use WebRTC GPU process flag for MediaRecorder"
+        https://bugs.webkit.org/show_bug.cgi?id=220967
+        https://trac.webkit.org/changeset/272052
+
 2021-01-29  Said Abou-Hallawa  <[email protected]>
 
         REGRESSION(r262893): feComponentTransfer is not rendered correctly on Retina display

Modified: trunk/Source/WebCore/Modules/mediarecorder/MediaRecorderProvider.h (272059 => 272060)


--- trunk/Source/WebCore/Modules/mediarecorder/MediaRecorderProvider.h	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/Source/WebCore/Modules/mediarecorder/MediaRecorderProvider.h	2021-01-29 15:11:12 UTC (rev 272060)
@@ -43,6 +43,11 @@
     virtual std::unique_ptr<MediaRecorderPrivate> createMediaRecorderPrivate(MediaStreamPrivate&, const MediaRecorderPrivateOptions&);
     virtual bool isSupported(const String&);
 #endif
+
+    void setUseGPUProcess(bool value) { m_useGPUProcess = value; }
+
+protected:
+    bool m_useGPUProcess { false };
 };
 
 }

Modified: trunk/Source/WebCore/testing/Internals.cpp (272059 => 272060)


--- trunk/Source/WebCore/testing/Internals.cpp	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/Source/WebCore/testing/Internals.cpp	2021-01-29 15:11:12 UTC (rev 272060)
@@ -1606,7 +1606,17 @@
 #endif
 }
 
+void Internals::setUseGPUProcessForWebRTC(bool useGPUProcess)
+{
+#if USE(LIBWEBRTC)
+    auto* document = contextDocument();
+    if (!document || !document->page())
+        return;
+
+    document->page()->mediaRecorderProvider().setUseGPUProcess(useGPUProcess);
 #endif
+}
+#endif
 
 #if ENABLE(MEDIA_STREAM)
 void Internals::setShouldInterruptAudioOnPageVisibilityChange(bool shouldInterrupt)

Modified: trunk/Source/WebCore/testing/Internals.h (272059 => 272060)


--- trunk/Source/WebCore/testing/Internals.h	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/Source/WebCore/testing/Internals.h	2021-01-29 15:11:12 UTC (rev 272060)
@@ -615,6 +615,7 @@
     uint64_t sframeKeyId(const RTCRtpSFrameTransform&);
     void setEnableWebRTCEncryption(bool);
     void setUseDTLS10(bool);
+    void setUseGPUProcessForWebRTC(bool);
 #endif
 
     String getImageSourceURL(Element&);

Modified: trunk/Source/WebCore/testing/Internals.idl (272059 => 272060)


--- trunk/Source/WebCore/testing/Internals.idl	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/Source/WebCore/testing/Internals.idl	2021-01-29 15:11:12 UTC (rev 272060)
@@ -717,6 +717,7 @@
     [Conditional=WEB_RTC] undefined clearPeerConnectionFactory();
     [Conditional=WEB_RTC] undefined setEnableWebRTCEncryption(boolean enabled);
     [Conditional=WEB_RTC] undefined setUseDTLS10(boolean use);
+    [Conditional=WEB_RTC] undefined setUseGPUProcessForWebRTC(boolean use);
 
     [Conditional=VIDEO] undefined simulateSystemSleep();
     [Conditional=VIDEO] undefined simulateSystemWake();

Modified: trunk/Source/WebKit/ChangeLog (272059 => 272060)


--- trunk/Source/WebKit/ChangeLog	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/Source/WebKit/ChangeLog	2021-01-29 15:11:12 UTC (rev 272060)
@@ -1,3 +1,16 @@
+2021-01-29  Commit Queue  <[email protected]>
+
+        Unreviewed, reverting r272052.
+        https://bugs.webkit.org/show_bug.cgi?id=221132
+
+        WPT mediacapture-record/MediaRecorder-stop.html is broken
+
+        Reverted changeset:
+
+        "Use WebRTC GPU process flag for MediaRecorder"
+        https://bugs.webkit.org/show_bug.cgi?id=220967
+        https://trac.webkit.org/changeset/272052
+
 2021-01-29  Kimmo Kinnunen  <[email protected]>
 
         Some type serialization encoders are implemented in Encoder class

Modified: trunk/Source/WebKit/WebProcess/GPU/webrtc/MediaRecorderProvider.cpp (272059 => 272060)


--- trunk/Source/WebKit/WebProcess/GPU/webrtc/MediaRecorderProvider.cpp	2021-01-29 14:53:29 UTC (rev 272059)
+++ trunk/Source/WebKit/WebProcess/GPU/webrtc/MediaRecorderProvider.cpp	2021-01-29 15:11:12 UTC (rev 272060)
@@ -30,7 +30,6 @@
 
 #include "MediaRecorderPrivate.h"
 #include <WebCore/MediaRecorderPrivate.h>
-#include <WebCore/RuntimeEnabledFeatures.h>
 
 namespace WebKit {
 using namespace WebCore;
@@ -38,7 +37,7 @@
 std::unique_ptr<WebCore::MediaRecorderPrivate> MediaRecorderProvider::createMediaRecorderPrivate(MediaStreamPrivate& stream, const MediaRecorderPrivateOptions& options)
 {
 #if ENABLE(GPU_PROCESS) && HAVE(AVASSETWRITERDELEGATE)
-    if (RuntimeEnabledFeatures::sharedFeatures().webRTCPlatformCodecsInGPUProcessEnabled())
+    if (m_useGPUProcess)
         return makeUnique<MediaRecorderPrivate>(stream, options);
 #endif
     return WebCore::MediaRecorderProvider::createMediaRecorderPrivate(stream, options);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to