[webkit-changes] [WebKit/WebKit] 8c46a5: Add a mechanism to inject random noise when exerci...
Wenson Hsieh
noreply at github.com
Mon Feb 20 12:43:59 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8c46a53a1bce8226185353af0c7d6fc600492dda
https://github.com/WebKit/WebKit/commit/8c46a53a1bce8226185353af0c7d6fc600492dda
Author: Wenson Hsieh <wenson_hsieh at apple.com>
Date: 2023-02-20 (Mon, 20 Feb 2023)
Changed paths:
M Source/WebCore/Modules/webaudio/AnalyserNode.cpp
M Source/WebCore/Modules/webaudio/AudioBuffer.cpp
M Source/WebCore/Modules/webaudio/AudioBuffer.h
M Source/WebCore/Modules/webaudio/AudioWorkletNode.cpp
M Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp
M Source/WebCore/Modules/webaudio/RealtimeAnalyser.h
M Source/WebCore/platform/audio/AudioUtilities.cpp
M Source/WebCore/platform/audio/AudioUtilities.h
Log Message:
-----------
Add a mechanism to inject random noise when exercising certain web audio APIs
https://bugs.webkit.org/show_bug.cgi?id=252566
Reviewed by Chris Dumez.
Consult the audio context's `NoiseInjectionPolicy` by adding small amounts of random noise, where
appropriate. See below for more details.
* Source/WebCore/Modules/webaudio/AnalyserNode.cpp:
(WebCore::AnalyserNode::AnalyserNode):
Plumb the `NoiseInjectionPolicy` over to the `RealtimeAnalyser`; see below for more details.
* Source/WebCore/Modules/webaudio/AudioBuffer.cpp:
(WebCore::AudioBuffer::getChannelData):
(WebCore::AudioBuffer::copyFromChannel):
(WebCore::AudioBuffer::copyToChannel):
(WebCore::AudioBuffer::zero):
Clear the `m_needsAdditionalNoise` flag from the `AudioBuffer` when it is either replaced with a
separate data buffer, or zeroed out.
(WebCore::AudioBuffer::applyNoiseIfNeeded):
Add a helper method to inject noise into the `AudioBuffer` if the policy flag is set. This is only
performed lazily, upon either copying from the `AudioBuffer` using `copyFromChannel` or reading
values in the form of a float array via `getChannelData`.
* Source/WebCore/Modules/webaudio/AudioBuffer.h:
* Source/WebCore/Modules/webaudio/AudioWorkletNode.cpp:
(WebCore::AudioWorkletNode::process):
Add a small amount of noise before handing data to an audio worklet for processing.
* Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp:
(WebCore::RealtimeAnalyser::RealtimeAnalyser):
(WebCore::RealtimeAnalyser::doFFTAnalysisIfNecessary):
Add a larger amount of random noise when transforming a signal from time to frequency domain, using
an analyser.
* Source/WebCore/Modules/webaudio/RealtimeAnalyser.h:
* Source/WebCore/platform/audio/AudioUtilities.cpp:
(WebCore::AudioUtilities::applyNoise):
Add a new utility method to randomly scale values in the input array by random values in the range
`[1 - m, 1 + m]` where `m` is the magnitude of the random noise. For instance, `m = 0.1` denotes
that each original value will be set to a value that is somewhere between 10% less or 10% greater
than what it was originally.
* Source/WebCore/platform/audio/AudioUtilities.h:
Canonical link: https://commits.webkit.org/260559@main
More information about the webkit-changes
mailing list