Title: [267471] trunk
Revision
267471
Author
[email protected]
Date
2020-09-23 06:36:28 -0700 (Wed, 23 Sep 2020)

Log Message

REGRESSION(r267383): fast/mediastream/getUserMedia-webaudio.html is failing
https://bugs.webkit.org/show_bug.cgi?id=216813

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Revert r267428 and fixup the GStreamer FFT implementation which broke in r267383.

* platform/audio/FFTFrame.cpp:
(WebCore::FFTFrame::multiply):
* platform/audio/FFTFrameStub.cpp:
(WebCore::FFTFrame::multiply): Deleted.
* platform/audio/gstreamer/FFTFrameGStreamer.cpp:
(WebCore::FFTFrame::doFFT): Update the real and imaginary arrays after applying the FFT.
(WebCore::FFTFrame::multiply): Deleted.
* platform/audio/mac/FFTFrameMac.cpp:
(WebCore::FFTFrame::multiply): Deleted.

LayoutTests:

Unflag passing tests.

* platform/glib/TestExpectations:
* platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt:
* platform/glib/webaudio/Analyser/realtimeanalyser-freq-data-expected.txt: Added. There's
still a FAIL test there though.
* platform/glib/webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (267470 => 267471)


--- trunk/LayoutTests/ChangeLog	2020-09-23 12:36:35 UTC (rev 267470)
+++ trunk/LayoutTests/ChangeLog	2020-09-23 13:36:28 UTC (rev 267471)
@@ -1,3 +1,18 @@
+2020-09-23  Philippe Normand  <[email protected]>
+
+        REGRESSION(r267383): fast/mediastream/getUserMedia-webaudio.html is failing
+        https://bugs.webkit.org/show_bug.cgi?id=216813
+
+        Reviewed by Adrian Perez de Castro.
+
+        Unflag passing tests.
+
+        * platform/glib/TestExpectations:
+        * platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt:
+        * platform/glib/webaudio/Analyser/realtimeanalyser-freq-data-expected.txt: Added. There's
+        still a FAIL test there though.
+        * platform/glib/webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt:
+
 2020-09-23  Diego Pino Garcia  <[email protected]>
 
         [GLIB] Unreviewed test gardening. Garden more failures in webaudio and webrtc tests.

Modified: trunk/LayoutTests/platform/glib/TestExpectations (267470 => 267471)


--- trunk/LayoutTests/platform/glib/TestExpectations	2020-09-23 12:36:35 UTC (rev 267470)
+++ trunk/LayoutTests/platform/glib/TestExpectations	2020-09-23 13:36:28 UTC (rev 267471)
@@ -277,18 +277,6 @@
 webkit.org/b/216118 webaudio/convolver-setBuffer-different-samplerate.html [ Skip ]
 webkit.org/b/216118 webaudio/convolver-setBuffer-null.html [ Skip ]
 
-webkit.org/b/216813 fast/mediastream/getUserMedia-webaudio.html [ Failure ]
-webkit.org/b/216813 imported/w3c/web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html [ Failure ]
-webkit.org/b/216813 webaudio/Analyser/realtimeanalyser-freq-data-smoothing.html [ Failure ]
-webkit.org/b/216813 webaudio/Analyser/realtimeanalyser-freq-data.html [ Failure ]
-webkit.org/b/216813 webaudio/AudioParam/audioparam-k-rate.html [ Crash ]
-webkit.org/b/216813 webrtc/audio-peer-connection-webaudio.html [ Failure ]
-webkit.org/b/216813 webrtc/peer-connection-audio-unmute.html [ Failure ]
-webkit.org/b/216813 webrtc/peer-connection-remote-audio-mute2.html [ Failure ]
-# Tests below are timing out.
-webkit.org/b/216813 webrtc/peer-connection-audio-mute.html [ Skip ]
-webkit.org/b/216813 webrtc/peer-connection-remote-audio-mute.html [ Skip ]
-
 #////////////////////////////////////////////////////////////////////////////////////////
 # End of GStreamer-related bugs
 #////////////////////////////////////////////////////////////////////////////////////////

Modified: trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt (267470 => 267471)


--- trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt	2020-09-23 12:36:35 UTC (rev 267470)
+++ trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt	2020-09-23 13:36:28 UTC (rev 267471)
@@ -5,11 +5,11 @@
 PASS Audit report 
 PASS > [128->1024]  
 PASS   Time data equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
-PASS   Linear FFT data after setting fftSize = 1024 equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000019455}. 
+PASS   Linear FFT data after setting fftSize = 1024 equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000019455}. 
 PASS < [128->1024] All assertions passed. (total 2 assertions) 
 PASS > [512->256]  
 PASS   Time data equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
-PASS   Linear FFT data after setting fftSize = 256 equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000018592}. 
+PASS   Linear FFT data after setting fftSize = 256 equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000018592}. 
 PASS < [512->256] All assertions passed. (total 2 assertions) 
 PASS # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. 
 

Added: trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-freq-data-expected.txt (0 => 267471)


--- trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-freq-data-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-freq-data-expected.txt	2020-09-23 13:36:28 UTC (rev 267471)
@@ -0,0 +1,91 @@
+
+PASS # AUDIT TASK RUNNER STARTED. 
+PASS Executing "5-order FFT" 
+PASS Executing "6-order FFT" 
+PASS Executing "7-order FFT" 
+PASS Executing "8-order FFT" 
+PASS Executing "9-order FFT" 
+PASS Executing "10-order FFT" 
+PASS Executing "11-order FFT" 
+PASS Executing "12-order FFT" 
+PASS Executing "13-order FFT" 
+PASS Executing "14-order FFT" 
+PASS Executing "15-order FFT" 
+PASS Executing "no smoothing" 
+PASS Audit report 
+PASS > [5-order FFT]  
+PASS   32-point float FFT equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":9.6549e-7}. 
+PASS   Order: 5: Min FFT value is less than or equal to -50. 
+PASS   Order: 5: Max FFT value is greater than or equal to -30. 
+PASS   32-point byte FFT equals [153,255,255,255,255,255,255,255,255,249,233,207,178,146,79,0...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
+PASS < [5-order FFT] All assertions passed. (total 4 assertions) 
+PASS > [6-order FFT]  
+PASS   64-point float FFT equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.000010084}. 
+PASS   Order: 6: Min FFT value is less than or equal to -100. 
+PASS   Order: 6: Max FFT value is greater than or equal to -30. 
+PASS   64-point byte FFT equals [255,255,255,254,246,239,233,228,224,220,217,214,211,208,206,204...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
+PASS < [6-order FFT] All assertions passed. (total 4 assertions) 
+PASS > [7-order FFT]  
+PASS   128-point float FFT equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000011473}. 
+PASS   Order: 7: Min FFT value is less than or equal to -100. 
+PASS   Order: 7: Max FFT value is greater than or equal to -30. 
+PASS   128-point byte FFT equals [255,255,255,255,255,249,239,242,229,232,227,221,224,213,219,212...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
+PASS < [7-order FFT] All assertions passed. (total 4 assertions) 
+PASS > [8-order FFT]  
+PASS   256-point float FFT equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000010442}. 
+PASS   Order: 8: Min FFT value is less than or equal to -100. 
+PASS   Order: 8: Max FFT value is greater than or equal to -30. 
+PASS   256-point byte FFT equals [102,169,255,255,255,255,255,255,252,233,255,253,218,242,250,226...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
+PASS < [8-order FFT] All assertions passed. (total 4 assertions) 
+PASS > [9-order FFT]  
+PASS   512-point float FFT equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.000026427}. 
+PASS   Order: 9: Min FFT value is less than or equal to -100. 
+PASS   Order: 9: Max FFT value is greater than or equal to -30. 
+PASS   512-point byte FFT equals [0,16,36,50,65,231,255,255,255,208,59,75,219,255,255,247...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
+PASS < [9-order FFT] All assertions passed. (total 4 assertions) 
+PASS > [10-order FFT]  
+PASS   1024-point float FFT equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.000029771}. 
+PASS   Order: 10: Min FFT value is less than or equal to -100. 
+PASS   Order: 10: Max FFT value is greater than or equal to -30. 
+PASS   1024-point byte FFT equals [0,0,0,0,2,12,23,35,49,63,74,107,240,255,255,255...] with an element-wise tolerance of {"absoluteThreshold":1,"relativeThreshold":0}. 
+PASS < [10-order FFT] All assertions passed. (total 4 assertions) 
+PASS > [11-order FFT]  
+PASS   2048-point float FFT equals [-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.000013456}. 
+PASS   Order: 11: Min FFT value is less than or equal to -100. 
+PASS   Order: 11: Max FFT value is greater than or equal to -30. 
+PASS   2048-point byte FFT equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
+PASS < [11-order FFT] All assertions passed. (total 4 assertions) 
+PASS > [12-order FFT]  
+PASS   4096-point float FFT equals [-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":4.6116e-7}. 
+PASS   Order: 12: Min FFT value is less than or equal to -100. 
+PASS   Order: 12: Max FFT value is greater than or equal to -30. 
+PASS   4096-point byte FFT equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
+PASS < [12-order FFT] All assertions passed. (total 4 assertions) 
+PASS > [13-order FFT]  
+PASS   8192-point float FFT equals [-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":3.2106e-7}. 
+PASS   Order: 13: Min FFT value is less than or equal to -100. 
+PASS   Order: 13: Max FFT value is greater than or equal to -30. 
+PASS   8192-point byte FFT equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
+PASS < [13-order FFT] All assertions passed. (total 4 assertions) 
+PASS > [14-order FFT]  
+PASS   16384-point float FFT equals [-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":1.1756e-7}. 
+PASS   Order: 14: Min FFT value is less than or equal to -100. 
+PASS   Order: 14: Max FFT value is greater than or equal to -30. 
+PASS   16384-point byte FFT equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
+PASS < [14-order FFT] All assertions passed. (total 4 assertions) 
+PASS > [15-order FFT]  
+FAIL X 32768-point float FFT does not equal [-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100,-100...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":1.1756e-7}.
+	Index	Actual			Expected		AbsError		RelError		Test threshold
+	[14082]	-7.3094314575195313e+1	-7.3094299316406250e+1	1.5258789062500000e-5	2.0875484415615863e-7	8.5929658276367193e-6
+	Max AbsError of 1.5258789062500000e-5 at index of 14082.
+	Max RelError of 2.0875484415615863e-7 at index of 14082.
+ assert_true: expected true got false
+PASS   Order: 15: Min FFT value is less than or equal to -100. 
+PASS   Order: 15: Max FFT value is greater than or equal to -30. 
+PASS   32768-point byte FFT equals [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
+FAIL < [15-order FFT] 1 out of 4 assertions were failed. assert_true: expected true got false
+PASS > [no smoothing]  
+PASS   128-point float FFT equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0.0000015684}. 
+PASS < [no smoothing] All assertions passed. (total 1 assertions) 
+FAIL # AUDIT TASK RUNNER FINISHED: 1 out of 12 tasks were failed. assert_true: expected true got false
+

Modified: trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt (267470 => 267471)


--- trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt	2020-09-23 12:36:35 UTC (rev 267470)
+++ trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt	2020-09-23 13:36:28 UTC (rev 267471)
@@ -3,10 +3,10 @@
 PASS Executing "test" 
 PASS Audit report 
 PASS > [test]  
-PASS   Second call to getFloatFrequencyData is identical to the array [-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity...]. 
-PASS   Second call to getByteFrequencyData is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...]. 
-PASS   Output of getByteFrequencyData after getFloatFrequencyData is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...]. 
-PASS   Output of getFloatFrequenycData (converted to byte) after getByteFrequencyData is identical to the array [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...]. 
+PASS   Second call to getFloatFrequencyData is identical to the array [expected array]. 
+PASS   Second call to getByteFrequencyData is identical to the array [167,232,255,255,238,239,223,228,216,217,214,206,211,197,206,196...]. 
+PASS   Output of getByteFrequencyData after getFloatFrequencyData is identical to the array [163,242,255,255,252,250,237,238,229,228,225,219,221,212,216,209...]. 
+PASS   Output of getFloatFrequenycData (converted to byte) after getByteFrequencyData is identical to the array [176,248,255,255,255,255,243,244,235,234,231,225,227,217,222,215...]. 
 PASS < [test] All assertions passed. (total 4 assertions) 
 PASS # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. 
 

Modified: trunk/Source/WebCore/ChangeLog (267470 => 267471)


--- trunk/Source/WebCore/ChangeLog	2020-09-23 12:36:35 UTC (rev 267470)
+++ trunk/Source/WebCore/ChangeLog	2020-09-23 13:36:28 UTC (rev 267471)
@@ -1,5 +1,24 @@
 2020-09-23  Philippe Normand  <[email protected]>
 
+        REGRESSION(r267383): fast/mediastream/getUserMedia-webaudio.html is failing
+        https://bugs.webkit.org/show_bug.cgi?id=216813
+
+        Reviewed by Adrian Perez de Castro.
+
+        Revert r267428 and fixup the GStreamer FFT implementation which broke in r267383.
+
+        * platform/audio/FFTFrame.cpp:
+        (WebCore::FFTFrame::multiply):
+        * platform/audio/FFTFrameStub.cpp:
+        (WebCore::FFTFrame::multiply): Deleted.
+        * platform/audio/gstreamer/FFTFrameGStreamer.cpp:
+        (WebCore::FFTFrame::doFFT): Update the real and imaginary arrays after applying the FFT.
+        (WebCore::FFTFrame::multiply): Deleted.
+        * platform/audio/mac/FFTFrameMac.cpp:
+        (WebCore::FFTFrame::multiply): Deleted.
+
+2020-09-23  Philippe Normand  <[email protected]>
+
         Unreviewed, prospective GTK build fix after r267449.
 
         * svg/SVGPathBlender.cpp: Include <functional>, needed for std::invoke().

Modified: trunk/Source/WebCore/platform/audio/FFTFrame.cpp (267470 => 267471)


--- trunk/Source/WebCore/platform/audio/FFTFrame.cpp	2020-09-23 12:36:35 UTC (rev 267470)
+++ trunk/Source/WebCore/platform/audio/FFTFrame.cpp	2020-09-23 13:36:28 UTC (rev 267471)
@@ -179,6 +179,28 @@
     VectorMath::vsmul(imagData(), 1, &factor, imagData(), 1, fftSize());
 }
 
+void FFTFrame::multiply(const FFTFrame& frame)
+{
+    FFTFrame& frame1 = *this;
+    const FFTFrame& frame2 = frame;
+
+    float* realP1 = frame1.realData();
+    float* imagP1 = frame1.imagData();
+    const float* realP2 = frame2.realData();
+    const float* imagP2 = frame2.imagData();
+
+    unsigned halfSize = m_FFTSize / 2;
+    float real0 = realP1[0];
+    float imag0 = imagP1[0];
+
+    // Complex multiply
+    VectorMath::zvmul(realP1, imagP1, realP2, imagP2, realP1, imagP1, halfSize);
+
+    // Multiply the packed DC/nyquist component
+    realP1[0] = real0 * realP2[0];
+    imagP1[0] = imag0 * imagP2[0];
+}
+
 double FFTFrame::extractAverageGroupDelay()
 {
     float* realP = realData();

Modified: trunk/Source/WebCore/platform/audio/FFTFrameStub.cpp (267470 => 267471)


--- trunk/Source/WebCore/platform/audio/FFTFrameStub.cpp	2020-09-23 12:36:35 UTC (rev 267470)
+++ trunk/Source/WebCore/platform/audio/FFTFrameStub.cpp	2020-09-23 13:36:28 UTC (rev 267471)
@@ -64,11 +64,6 @@
     ASSERT_NOT_REACHED();
 }
 
-void FFTFrame::multiply(const FFTFrame& frame)
-{
-    ASSERT_NOT_REACHED();
-}
-
 void FFTFrame::doFFT(const float* data)
 {
     ASSERT_NOT_REACHED();

Modified: trunk/Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp (267470 => 267471)


--- trunk/Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp	2020-09-23 12:36:35 UTC (rev 267470)
+++ trunk/Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp	2020-09-23 13:36:28 UTC (rev 267471)
@@ -103,23 +103,16 @@
     m_inverseFft = 0;
 }
 
-void FFTFrame::multiply(const FFTFrame& frame)
-{
-    FFTFrame& frame1 = *this;
-    FFTFrame& frame2 = const_cast<FFTFrame&>(frame);
-
-    float* realP1 = frame1.realData();
-    float* imagP1 = frame1.imagData();
-    const float* realP2 = frame2.realData();
-    const float* imagP2 = frame2.imagData();
-
-    size_t size = unpackedFFTDataSize(m_FFTSize);
-    VectorMath::zvmul(realP1, imagP1, realP2, imagP2, realP1, imagP1, size);
-}
-
 void FFTFrame::doFFT(const float* data)
 {
     gst_fft_f32_fft(m_fft, data, m_complexData.get());
+
+    float* imagData = m_imagData.data();
+    float* realData = m_realData.data();
+    for (unsigned i = 0; i < unpackedFFTDataSize(m_FFTSize); ++i) {
+        imagData[i] = m_complexData[i].i;
+        realData[i] = m_complexData[i].r;
+    }
 }
 
 void FFTFrame::doInverseFFT(float* data)

Modified: trunk/Source/WebCore/platform/audio/mac/FFTFrameMac.cpp (267470 => 267471)


--- trunk/Source/WebCore/platform/audio/mac/FFTFrameMac.cpp	2020-09-23 12:36:35 UTC (rev 267470)
+++ trunk/Source/WebCore/platform/audio/mac/FFTFrameMac.cpp	2020-09-23 13:36:28 UTC (rev 267471)
@@ -97,28 +97,6 @@
 
 FFTFrame::~FFTFrame() = default;
 
-void FFTFrame::multiply(const FFTFrame& frame)
-{
-    FFTFrame& frame1 = *this;
-    const FFTFrame& frame2 = frame;
-
-    float* realP1 = frame1.realData();
-    float* imagP1 = frame1.imagData();
-    const float* realP2 = frame2.realData();
-    const float* imagP2 = frame2.imagData();
-
-    unsigned halfSize = m_FFTSize / 2;
-    float real0 = realP1[0];
-    float imag0 = imagP1[0];
-
-    // Complex multiply
-    VectorMath::zvmul(realP1, imagP1, realP2, imagP2, realP1, imagP1, halfSize);
-
-    // Multiply the packed DC/nyquist component
-    realP1[0] = real0 * realP2[0];
-    imagP1[0] = imag0 * imagP2[0];
-}
-
 void FFTFrame::doFFT(const float* data)
 {
     unsigned halfSize = m_FFTSize / 2;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to