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
- trunk/LayoutTests/ChangeLog
- trunk/LayoutTests/platform/glib/TestExpectations
- trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt
- trunk/LayoutTests/platform/glib/webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt
- trunk/Source/WebCore/ChangeLog
- trunk/Source/WebCore/platform/audio/FFTFrame.cpp
- trunk/Source/WebCore/platform/audio/FFTFrameStub.cpp
- trunk/Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp
- trunk/Source/WebCore/platform/audio/mac/FFTFrameMac.cpp
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
