WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
216781
Values returned by FFTFrame::doFFT() are twice as large as they should be
https://bugs.webkit.org/show_bug.cgi?id=216781
Summary
Values returned by FFTFrame::doFFT() are twice as large as they should be
Chris Dumez
Reported
2020-09-21 08:29:54 PDT
Values returned by FFTFrame::doFFT() are twice as large as they should be.
Attachments
Patch
(68.57 KB, patch)
2020-09-21 08:48 PDT
,
Chris Dumez
no flags
Details
Formatted Diff
Diff
Patch
(69.83 KB, patch)
2020-09-21 12:26 PDT
,
Chris Dumez
ews-feeder
: commit-queue-
Details
Formatted Diff
Diff
Patch
(70.40 KB, patch)
2020-09-21 15:06 PDT
,
Chris Dumez
no flags
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Chris Dumez
Comment 1
2020-09-21 08:48:33 PDT
Created
attachment 409277
[details]
Patch
Chris Dumez
Comment 2
2020-09-21 12:26:40 PDT
Created
attachment 409299
[details]
Patch
Chris Dumez
Comment 3
2020-09-21 15:06:01 PDT
Created
attachment 409325
[details]
Patch
EWS
Comment 4
2020-09-21 15:25:07 PDT
Found 2 new test failures: webrtc/peer-connection-audio-mute2.html, webrtc/peer-connection-remote-audio-mute2.html
EWS
Comment 5
2020-09-21 16:27:54 PDT
Committed
r267383
: <
https://trac.webkit.org/changeset/267383
> All reviewed patches have been landed. Closing bug and clearing flags on
attachment 409325
[details]
.
Radar WebKit Bug Importer
Comment 6
2020-09-21 16:28:18 PDT
<
rdar://problem/69335018
>
Philippe Normand
Comment 7
2020-09-22 02:37:34 PDT
https://build.webkit.org/results/GTK%20Linux%2064-bit%20Debug%20(Tests)/r267388%20(7283)/webaudio/AudioParam/audioparam-k-rate-crash-log.txt
Thread 1 (Thread 0x7fd6477fe700 (LWP 37517)): #0 0x00007fd71634ed8e in WTFCrash() () at ../../Source/WTF/wtf/Assertions.cpp:295 #1 0x00007fd7227f086b in WTFCrashWithInfo(int, char const*, char const*, int) () at DerivedSources/ForwardingHeaders/wtf/Assertions.h:671 #2 0x00007fd726ab57d7 in WebCore::HRTFPanner::pan(double, double, WebCore::AudioBus const*, WebCore::AudioBus*, unsigned long) (this=0x7fd6cacffa00, desiredAzimuth=0, elevation=-2.5044781608585254e-06, inputBus=0x7fd6b26cfcb0, outputBus=0x7fd6b26cfce8, framesToProcess=128) at ../../Source/WebCore/platform/audio/HRTFPanner.cpp:248 #3 0x00007fd726ab5f25 in WebCore::HRTFPanner::panWithSampleAccurateValues(double*, double*, WebCore::AudioBus const*, WebCore::AudioBus*, unsigned long) (this=0x7fd6cacffa00, azimuth=0x7fd6477fc870, elevation=0x7fd6477fc470, inputBus=0x7fd6b26cfcb0, outputBus=0x7fd6b26cfce8, framesToProcess=128) at ../../Source/WebCore/platform/audio/HRTFPanner.cpp:327 #4 0x00007fd7255608fd in WebCore::PannerNode::processSampleAccurateValues(WebCore::AudioBus*, WebCore::AudioBus const*, unsigned long) (this=0x7fd6c90009e0, destination=0x7fd6b26cfce8, source=0x7fd6b26cfcb0, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/PannerNode.cpp:234 #5 0x00007fd725560132 in WebCore::PannerNode::process(unsigned long) (this=0x7fd6c90009e0, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/PannerNode.cpp:167 #6 0x00007fd7254e70ba in WebCore::AudioNode::processIfNecessary(unsigned long) (this=0x7fd6c90009e0, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNode.cpp:485 #7 0x00007fd7254e9317 in WebCore::AudioNodeOutput::pull(WebCore::AudioBus*, unsigned long) (this=0x7fd6464a3888, inPlaceBus=0x0, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp:123 #8 0x00007fd7254e9146 in WebCore::AudioNodeInput::sumAllConnections(WebCore::AudioBus*, unsigned long) (this=0x7fd6464a36e8, summingBus=0x7fd6b26cfb28, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:206 #9 0x00007fd7254e7727 in WebCore::AudioNodeInput::pull(WebCore::AudioBus*, unsigned long) (this=0x7fd6464a36e8, inPlaceBus=0x7fd6b26cfb60, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:234 #10 0x00007fd7254b8a51 in WebCore::AudioDestinationNode::render(WebCore::AudioBus*, WebCore::AudioBus*, unsigned long, WebCore::AudioIOPosition const&) (this=0x7fd6c9021870, destinationBus=0x7fd6b26cfb60, numberOfFrames=128, outputPosition=...) at ../../Source/WebCore/Modules/webaudio/AudioDestinationNode.cpp:85 #11 0x00007fd72555c40a in WebCore::OfflineAudioDestinationNode::offlineRender() (this=0x7fd6c9021870) at ../../Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp:151 #12 0x00007fd7255677bf in WebCore::OfflineAudioDestinationNode::startRendering()::$_0::operator()() const (this=0x7fd6c81795b8) at ../../Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp:102 #13 0x00007fd72556778e in WTF::Detail::CallableWrapper<WebCore::OfflineAudioDestinationNode::startRendering()::$_0, void>::call() (this=0x7fd6c81795b0) at DerivedSources/ForwardingHeaders/wtf/Function.h:52 #14 0x00007fd7227ef4a2 in WTF::Function<void ()>::operator()() const (this=0x7fd6477fdc40) at DerivedSources/ForwardingHeaders/wtf/Function.h:83 #15 0x00007fd71638da28 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fd6b2c1f1e0) at ../../Source/WTF/wtf/Threading.cpp:179 #16 0x00007fd71642a8a8 in WTF::wtfThreadEntryPoint(void*) (context=0x7fd6b2c1f1e0) at ../../Source/WTF/wtf/posix/ThreadingPOSIX.cpp:213 #17 0x00007fd7106714d2 in start_thread (arg=<optimized out>) at pthread_create.c:477 #18 0x00007fd70e1e94d3 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 STDERR: ASSERTION FAILED: frameDelayL1 / sampleRate() < MaxDelayTimeSeconds && frameDelayR1 / sampleRate() < MaxDelayTimeSeconds STDERR: ../../Source/WebCore/platform/audio/HRTFPanner.cpp(248) : virtual void WebCore::HRTFPanner::pan(double, double, const WebCore::AudioBus *, WebCore::AudioBus *, size_t) STDERR: 1 0x7fd71634ed89 WTFCrash STDERR: 2 0x7fd7227f086b /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xae3386b) [0x7fd7227f086b] STDERR: 3 0x7fd726ab57d7 WebCore::HRTFPanner::pan(double, double, WebCore::AudioBus const*, WebCore::AudioBus*, unsigned long) STDERR: 4 0x7fd726ab5f25 WebCore::HRTFPanner::panWithSampleAccurateValues(double*, double*, WebCore::AudioBus const*, WebCore::AudioBus*, unsigned long) STDERR: 5 0x7fd7255608fd WebCore::PannerNode::processSampleAccurateValues(WebCore::AudioBus*, WebCore::AudioBus const*, unsigned long) STDERR: 6 0x7fd725560132 WebCore::PannerNode::process(unsigned long) STDERR: 7 0x7fd7254e70ba WebCore::AudioNode::processIfNecessary(unsigned long) STDERR: 8 0x7fd7254e9317 WebCore::AudioNodeOutput::pull(WebCore::AudioBus*, unsigned long) STDERR: 9 0x7fd7254e9146 WebCore::AudioNodeInput::sumAllConnections(WebCore::AudioBus*, unsigned long) STDERR: 10 0x7fd7254e7727 WebCore::AudioNodeInput::pull(WebCore::AudioBus*, unsigned long) STDERR: 11 0x7fd7254b8a51 WebCore::AudioDestinationNode::render(WebCore::AudioBus*, WebCore::AudioBus*, unsigned long, WebCore::AudioIOPosition const&) STDERR: 12 0x7fd72555c40a WebCore::OfflineAudioDestinationNode::offlineRender() STDERR: 13 0x7fd7255677bf /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xdbaa7bf) [0x7fd7255677bf] STDERR: 14 0x7fd72556778e /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xdbaa78e) [0x7fd72556778e] STDERR: 15 0x7fd7227ef4a2 WTF::Function<void ()>::operator()() const STDERR: 16 0x7fd71638da28 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) STDERR: 17 0x7fd71642a8a8 /app/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(+0x3d6f8a8) [0x7fd71642a8a8] STDERR: 18 0x7fd7106714d2 /usr/lib/x86_64-linux-gnu/libpthread.so.0(+0x84d2) [0x7fd7106714d2] STDERR: 19 0x7fd70e1e94d3 clone
Philippe Normand
Comment 8
2020-09-22 02:39:58 PDT
Also in GTK 2 new failures: webaudio/Analyser/realtimeanalyser-freq-data-smoothing.html [ Failure ] webaudio/Analyser/realtimeanalyser-freq-data.html [ Failure ] And these 2 just need a rebaseline i think: webaudio/Analyser/realtimeanalyser-fftsize-reset.html webaudio/Analyser/realtimeanalyser-multiple-calls.html
Chris Dumez
Comment 9
2020-09-22 12:05:15 PDT
(In reply to Philippe Normand from
comment #8
)
> Also in GTK 2 new failures: > > webaudio/Analyser/realtimeanalyser-freq-data-smoothing.html [ Failure ] > webaudio/Analyser/realtimeanalyser-freq-data.html [ Failure ] > > And these 2 just need a rebaseline i think: > > webaudio/Analyser/realtimeanalyser-fftsize-reset.html > webaudio/Analyser/realtimeanalyser-multiple-calls.html
I re-introduced the GTK-specific implementation of FFTFrame::multiply() in <
https://trac.webkit.org/changeset/267428
> to try and be more conservative. I could use help from a GTK person to figure out these issues if they persist since I am unable to reproduce the issue.
Chris Dumez
Comment 10
2020-09-22 12:08:11 PDT
(In reply to Philippe Normand from
comment #8
)
> Also in GTK 2 new failures: > > webaudio/Analyser/realtimeanalyser-freq-data-smoothing.html [ Failure ] > webaudio/Analyser/realtimeanalyser-freq-data.html [ Failure ]
Those are the tests that started passing on cocoa ports after my fix. Looks like they are still failing on GTK for some reason. This is not a regression per-say since those tests were already failing before my change. It'd be good to figure out why they are passing for Mac but not GTK. Seems likely related to the GStreamer-specific implementation of FFTFrame.
> And these 2 just need a rebaseline i think: > > webaudio/Analyser/realtimeanalyser-fftsize-reset.html > webaudio/Analyser/realtimeanalyser-multiple-calls.html
Agreed, those look like they merely need new baselines.
Philippe Normand
Comment 11
2020-09-23 04:18:29 PDT
Comment on
attachment 409325
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=409325&action=review
> Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:-145 > - 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 * scaleFactor; > - realData[i] = m_complexData[i].r * scaleFactor; > - }
Removing this entirely was not a great idea. The m_imagData and m_realData still have to be updated after applying the FFT.
Chris Dumez
Comment 12
2020-09-23 08:19:37 PDT
Comment on
attachment 409325
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=409325&action=review
>> Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:-145 >> - } > > Removing this entirely was not a great idea. The m_imagData and m_realData still have to be updated after applying the FFT.
Yep, I totally missed it. Sorry about that.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug