Title: [267541] trunk/Source/WebCore
Revision
267541
Author
[email protected]
Date
2020-09-24 11:32:53 -0700 (Thu, 24 Sep 2020)

Log Message

Declare render quantum size constant in AudioUtilities.h
https://bugs.webkit.org/show_bug.cgi?id=216935

Reviewed by Eric Carlson.

Declare render quantum size [1] constant in AudioUtilities.h so that it can be used in both
platform/ and Modules/webaudio/. Also update the code so that we have a single constant
instead of many.

[1] https://www.w3.org/TR/webaudio/#render-quantum-size

* Modules/webaudio/AudioListener.cpp:
(WebCore::AudioListener::AudioListener):
* Modules/webaudio/AudioNode.h:
* Modules/webaudio/AudioNodeInput.cpp:
(WebCore::AudioNodeInput::AudioNodeInput):
(WebCore::AudioNodeInput::updateInternalBus):
* Modules/webaudio/AudioNodeOutput.cpp:
(WebCore::AudioNodeOutput::AudioNodeOutput):
(WebCore::AudioNodeOutput::updateInternalBus):
* Modules/webaudio/AudioParam.cpp:
(WebCore::AudioParam::calculateFinalValues):
(WebCore::AudioParam::calculateTimelineValues):
* Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::valueForContextTime):
* Modules/webaudio/AudioScheduledSourceNode.cpp:
(WebCore::AudioScheduledSourceNode::updateSchedulingInfo):
* Modules/webaudio/BiquadDSPKernel.cpp:
(WebCore::BiquadDSPKernel::updateCoefficientsIfNecessary):
* Modules/webaudio/BiquadProcessor.cpp:
(WebCore::BiquadProcessor::processOnlyAudioParams):
* Modules/webaudio/ConstantSourceNode.cpp:
(WebCore::ConstantSourceNode::ConstantSourceNode):
* Modules/webaudio/ConstantSourceNode.h:
* Modules/webaudio/ConvolverNode.cpp:
(WebCore::ConvolverNode::setBuffer):
* Modules/webaudio/DelayDSPKernel.cpp:
(WebCore::DelayDSPKernel::DelayDSPKernel):
(WebCore::DelayDSPKernel::processOnlyAudioParams):
* Modules/webaudio/DynamicsCompressorNode.cpp:
(WebCore::DynamicsCompressorNode::processOnlyAudioParams):
* Modules/webaudio/GainNode.cpp:
(WebCore::GainNode::GainNode):
(WebCore::GainNode::processOnlyAudioParams):
* Modules/webaudio/OfflineAudioContext.cpp:
(WebCore::OfflineAudioContext::suspendOfflineRendering):
* Modules/webaudio/OfflineAudioDestinationNode.cpp:
(WebCore::OfflineAudioDestinationNode::OfflineAudioDestinationNode):
(WebCore::OfflineAudioDestinationNode::offlineRender):
* Modules/webaudio/OfflineAudioDestinationNode.h:
* Modules/webaudio/OscillatorNode.cpp:
(WebCore::OscillatorNode::OscillatorNode):
* Modules/webaudio/OscillatorNode.h:
* Modules/webaudio/PannerNode.cpp:
(WebCore::PannerNode::processOnlyAudioParams):
(WebCore::PannerNode::processSampleAccurateValues):
* Modules/webaudio/RealtimeAnalyser.cpp:
(WebCore::RealtimeAnalyser::RealtimeAnalyser):
* Modules/webaudio/ScriptProcessorNode.cpp:
(WebCore::ScriptProcessorNode::ScriptProcessorNode):
* Modules/webaudio/StereoPannerNode.cpp:
(WebCore::StereoPannerNode::StereoPannerNode):
(WebCore::StereoPannerNode::processOnlyAudioParams):
* Modules/webaudio/StereoPannerNode.h:
* Modules/webaudio/WaveShaperDSPKernel.cpp:
(WebCore::WaveShaperDSPKernel::lazyInitializeOversampling):
(WebCore::WaveShaperDSPKernel::processCurve2x):
(WebCore::WaveShaperDSPKernel::processCurve4x):
* platform/audio/AudioResamplerKernel.cpp:
(WebCore::AudioResamplerKernel::AudioResamplerKernel):
(WebCore::AudioResamplerKernel::getSourcePointer):
(WebCore::AudioResamplerKernel::process):
* platform/audio/AudioResamplerKernel.h:
* platform/audio/AudioUtilities.h:
* platform/audio/Biquad.cpp:
(WebCore::Biquad::Biquad):
* platform/audio/Biquad.h:
* platform/audio/HRTFPanner.cpp:
(WebCore::HRTFPanner::HRTFPanner):
(WebCore::HRTFPanner::pan):
* platform/audio/IIRFilter.cpp:
(WebCore::IIRFilter::tailTime):
* platform/audio/cocoa/AudioDestinationCocoa.cpp:
(WebCore::AudioDestinationCocoa::AudioDestinationCocoa):
(WebCore::AudioDestinationCocoa::render):
(WebCore::AudioDestinationCocoa::provideInput):
* platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(WebCore::MediaSessionManagerCocoa::updateSessionState):
* platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):
(WebCore::AudioDestinationGStreamer::framesPerBuffer const):
* platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
(webkit_web_audio_src_class_init):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (267540 => 267541)


--- trunk/Source/WebCore/ChangeLog	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/ChangeLog	2020-09-24 18:32:53 UTC (rev 267541)
@@ -1,3 +1,99 @@
+2020-09-24  Chris Dumez  <[email protected]>
+
+        Declare render quantum size constant in AudioUtilities.h
+        https://bugs.webkit.org/show_bug.cgi?id=216935
+
+        Reviewed by Eric Carlson.
+
+        Declare render quantum size [1] constant in AudioUtilities.h so that it can be used in both
+        platform/ and Modules/webaudio/. Also update the code so that we have a single constant
+        instead of many.
+
+        [1] https://www.w3.org/TR/webaudio/#render-quantum-size
+
+        * Modules/webaudio/AudioListener.cpp:
+        (WebCore::AudioListener::AudioListener):
+        * Modules/webaudio/AudioNode.h:
+        * Modules/webaudio/AudioNodeInput.cpp:
+        (WebCore::AudioNodeInput::AudioNodeInput):
+        (WebCore::AudioNodeInput::updateInternalBus):
+        * Modules/webaudio/AudioNodeOutput.cpp:
+        (WebCore::AudioNodeOutput::AudioNodeOutput):
+        (WebCore::AudioNodeOutput::updateInternalBus):
+        * Modules/webaudio/AudioParam.cpp:
+        (WebCore::AudioParam::calculateFinalValues):
+        (WebCore::AudioParam::calculateTimelineValues):
+        * Modules/webaudio/AudioParamTimeline.cpp:
+        (WebCore::AudioParamTimeline::valueForContextTime):
+        * Modules/webaudio/AudioScheduledSourceNode.cpp:
+        (WebCore::AudioScheduledSourceNode::updateSchedulingInfo):
+        * Modules/webaudio/BiquadDSPKernel.cpp:
+        (WebCore::BiquadDSPKernel::updateCoefficientsIfNecessary):
+        * Modules/webaudio/BiquadProcessor.cpp:
+        (WebCore::BiquadProcessor::processOnlyAudioParams):
+        * Modules/webaudio/ConstantSourceNode.cpp:
+        (WebCore::ConstantSourceNode::ConstantSourceNode):
+        * Modules/webaudio/ConstantSourceNode.h:
+        * Modules/webaudio/ConvolverNode.cpp:
+        (WebCore::ConvolverNode::setBuffer):
+        * Modules/webaudio/DelayDSPKernel.cpp:
+        (WebCore::DelayDSPKernel::DelayDSPKernel):
+        (WebCore::DelayDSPKernel::processOnlyAudioParams):
+        * Modules/webaudio/DynamicsCompressorNode.cpp:
+        (WebCore::DynamicsCompressorNode::processOnlyAudioParams):
+        * Modules/webaudio/GainNode.cpp:
+        (WebCore::GainNode::GainNode):
+        (WebCore::GainNode::processOnlyAudioParams):
+        * Modules/webaudio/OfflineAudioContext.cpp:
+        (WebCore::OfflineAudioContext::suspendOfflineRendering):
+        * Modules/webaudio/OfflineAudioDestinationNode.cpp:
+        (WebCore::OfflineAudioDestinationNode::OfflineAudioDestinationNode):
+        (WebCore::OfflineAudioDestinationNode::offlineRender):
+        * Modules/webaudio/OfflineAudioDestinationNode.h:
+        * Modules/webaudio/OscillatorNode.cpp:
+        (WebCore::OscillatorNode::OscillatorNode):
+        * Modules/webaudio/OscillatorNode.h:
+        * Modules/webaudio/PannerNode.cpp:
+        (WebCore::PannerNode::processOnlyAudioParams):
+        (WebCore::PannerNode::processSampleAccurateValues):
+        * Modules/webaudio/RealtimeAnalyser.cpp:
+        (WebCore::RealtimeAnalyser::RealtimeAnalyser):
+        * Modules/webaudio/ScriptProcessorNode.cpp:
+        (WebCore::ScriptProcessorNode::ScriptProcessorNode):
+        * Modules/webaudio/StereoPannerNode.cpp:
+        (WebCore::StereoPannerNode::StereoPannerNode):
+        (WebCore::StereoPannerNode::processOnlyAudioParams):
+        * Modules/webaudio/StereoPannerNode.h:
+        * Modules/webaudio/WaveShaperDSPKernel.cpp:
+        (WebCore::WaveShaperDSPKernel::lazyInitializeOversampling):
+        (WebCore::WaveShaperDSPKernel::processCurve2x):
+        (WebCore::WaveShaperDSPKernel::processCurve4x):
+        * platform/audio/AudioResamplerKernel.cpp:
+        (WebCore::AudioResamplerKernel::AudioResamplerKernel):
+        (WebCore::AudioResamplerKernel::getSourcePointer):
+        (WebCore::AudioResamplerKernel::process):
+        * platform/audio/AudioResamplerKernel.h:
+        * platform/audio/AudioUtilities.h:
+        * platform/audio/Biquad.cpp:
+        (WebCore::Biquad::Biquad):
+        * platform/audio/Biquad.h:
+        * platform/audio/HRTFPanner.cpp:
+        (WebCore::HRTFPanner::HRTFPanner):
+        (WebCore::HRTFPanner::pan):
+        * platform/audio/IIRFilter.cpp:
+        (WebCore::IIRFilter::tailTime):
+        * platform/audio/cocoa/AudioDestinationCocoa.cpp:
+        (WebCore::AudioDestinationCocoa::AudioDestinationCocoa):
+        (WebCore::AudioDestinationCocoa::render):
+        (WebCore::AudioDestinationCocoa::provideInput):
+        * platform/audio/cocoa/MediaSessionManagerCocoa.mm:
+        (WebCore::MediaSessionManagerCocoa::updateSessionState):
+        * platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
+        (WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):
+        (WebCore::AudioDestinationGStreamer::framesPerBuffer const):
+        * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
+        (webkit_web_audio_src_class_init):
+
 2020-09-24  Youenn Fablet  <[email protected]>
 
         Add libwebrtc.dylib version check

Modified: trunk/Source/WebCore/Modules/webaudio/AudioListener.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/AudioListener.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/AudioListener.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -35,6 +35,7 @@
 
 #include "AudioBus.h"
 #include "AudioParam.h"
+#include "AudioUtilities.h"
 
 namespace WebCore {
 
@@ -48,15 +49,15 @@
     , m_upX(AudioParam::create(context, "upX", 0.0, -FLT_MAX, FLT_MAX, AutomationRate::ARate))
     , m_upY(AudioParam::create(context, "upY", 1.0, -FLT_MAX, FLT_MAX, AutomationRate::ARate))
     , m_upZ(AudioParam::create(context, "upZ", 0.0, -FLT_MAX, FLT_MAX, AutomationRate::ARate))
-    , m_positionXValues(AudioNode::ProcessingSizeInFrames)
-    , m_positionYValues(AudioNode::ProcessingSizeInFrames)
-    , m_positionZValues(AudioNode::ProcessingSizeInFrames)
-    , m_forwardXValues(AudioNode::ProcessingSizeInFrames)
-    , m_forwardYValues(AudioNode::ProcessingSizeInFrames)
-    , m_forwardZValues(AudioNode::ProcessingSizeInFrames)
-    , m_upXValues(AudioNode::ProcessingSizeInFrames)
-    , m_upYValues(AudioNode::ProcessingSizeInFrames)
-    , m_upZValues(AudioNode::ProcessingSizeInFrames)
+    , m_positionXValues(AudioUtilities::renderQuantumSize)
+    , m_positionYValues(AudioUtilities::renderQuantumSize)
+    , m_positionZValues(AudioUtilities::renderQuantumSize)
+    , m_forwardXValues(AudioUtilities::renderQuantumSize)
+    , m_forwardYValues(AudioUtilities::renderQuantumSize)
+    , m_forwardZValues(AudioUtilities::renderQuantumSize)
+    , m_upXValues(AudioUtilities::renderQuantumSize)
+    , m_upYValues(AudioUtilities::renderQuantumSize)
+    , m_upZValues(AudioUtilities::renderQuantumSize)
 {
 }
 

Modified: trunk/Source/WebCore/Modules/webaudio/AudioNode.h (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/AudioNode.h	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/AudioNode.h	2020-09-24 18:32:53 UTC (rev 267541)
@@ -59,8 +59,6 @@
     WTF_MAKE_NONCOPYABLE(AudioNode);
     WTF_MAKE_ISO_ALLOCATED(AudioNode);
 public:
-    enum { ProcessingSizeInFrames = 128 };
-
     explicit AudioNode(BaseAudioContext&);
     virtual ~AudioNode();
 

Modified: trunk/Source/WebCore/Modules/webaudio/AudioNodeInput.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/AudioNodeInput.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/AudioNodeInput.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -41,7 +41,7 @@
     , m_node(node)
 {
     // Set to mono by default.
-    m_internalSummingBus = AudioBus::create(1, AudioNode::ProcessingSizeInFrames);
+    m_internalSummingBus = AudioBus::create(1, AudioUtilities::renderQuantumSize);
 }
 
 void AudioNodeInput::connect(AudioNodeOutput* output)
@@ -141,7 +141,7 @@
     if (numberOfInputChannels == m_internalSummingBus->numberOfChannels())
         return;
 
-    m_internalSummingBus = AudioBus::create(numberOfInputChannels, AudioNode::ProcessingSizeInFrames);
+    m_internalSummingBus = AudioBus::create(numberOfInputChannels, AudioUtilities::renderQuantumSize);
 }
 
 unsigned AudioNodeInput::numberOfChannels() const

Modified: trunk/Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -47,7 +47,7 @@
 {
     ASSERT(numberOfChannels <= AudioContext::maxNumberOfChannels());
 
-    m_internalBus = AudioBus::create(numberOfChannels, AudioNode::ProcessingSizeInFrames);
+    m_internalBus = AudioBus::create(numberOfChannels, AudioUtilities::renderQuantumSize);
 }
 
 void AudioNodeOutput::setNumberOfChannels(unsigned numberOfChannels)
@@ -71,7 +71,7 @@
     if (numberOfChannels() == m_internalBus->numberOfChannels())
         return;
 
-    m_internalBus = AudioBus::create(numberOfChannels(), AudioNode::ProcessingSizeInFrames);
+    m_internalBus = AudioBus::create(numberOfChannels(), AudioUtilities::renderQuantumSize);
 }
 
 void AudioNodeOutput::updateRenderingState()

Modified: trunk/Source/WebCore/Modules/webaudio/AudioParam.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/AudioParam.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/AudioParam.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -279,7 +279,7 @@
         ASSERT(output);
 
         // Render audio from this output.
-        AudioBus* connectionBus = output->pull(0, AudioNode::ProcessingSizeInFrames);
+        AudioBus* connectionBus = output->pull(0, AudioUtilities::renderQuantumSize);
 
         // Sum, with unity-gain.
         summingBus->sumFrom(*connectionBus);
@@ -300,7 +300,7 @@
 void AudioParam::calculateTimelineValues(float* values, unsigned numberOfValues)
 {
     // Calculate values for this render quantum.
-    // Normally numberOfValues will equal AudioNode::ProcessingSizeInFrames (the render quantum size).
+    // Normally numberOfValues will equal AudioUtilities::renderQuantumSize (the render quantum size).
     double sampleRate = context().sampleRate();
     size_t startFrame = context().currentSampleFrame();
     size_t endFrame = startFrame + numberOfValues;

Modified: trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -329,7 +329,7 @@
     double sampleRate = context.sampleRate();
     size_t startFrame = context.currentSampleFrame();
     size_t endFrame = startFrame + 1;
-    double controlRate = sampleRate / AudioNode::ProcessingSizeInFrames; // one parameter change per render quantum
+    double controlRate = sampleRate / AudioUtilities::renderQuantumSize; // one parameter change per render quantum
     value = valuesForTimeRange(startFrame, endFrame, defaultValue, minValue, maxValue, &value, 1, sampleRate, controlRate);
     return value;
 }

Modified: trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -64,8 +64,8 @@
     quantumFrameOffset = 0;
     startFrameOffset = 0;
 
-    ASSERT(quantumFrameSize == AudioNode::ProcessingSizeInFrames);
-    if (quantumFrameSize != AudioNode::ProcessingSizeInFrames)
+    ASSERT(quantumFrameSize == AudioUtilities::renderQuantumSize);
+    if (quantumFrameSize != AudioUtilities::renderQuantumSize)
         return;
 
     double sampleRate = this->sampleRate();

Modified: trunk/Source/WebCore/Modules/webaudio/BiquadDSPKernel.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/BiquadDSPKernel.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/BiquadDSPKernel.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -28,6 +28,7 @@
 
 #include "BiquadDSPKernel.h"
 
+#include "AudioUtilities.h"
 #include "Biquad.h"
 #include "BiquadProcessor.h"
 #include "FloatConversion.h"
@@ -58,12 +59,12 @@
 {
     if (biquadProcessor()->filterCoefficientsDirty()) {
         if (biquadProcessor()->hasSampleAccurateValues() && biquadProcessor()->shouldUseARate()) {
-            float cutoffFrequency[Biquad::MaxFramesToProcess];
-            float q[Biquad::MaxFramesToProcess];
-            float gain[Biquad::MaxFramesToProcess];
-            float detune[Biquad::MaxFramesToProcess]; // in Cents
+            float cutoffFrequency[AudioUtilities::renderQuantumSize];
+            float q[AudioUtilities::renderQuantumSize];
+            float gain[AudioUtilities::renderQuantumSize];
+            float detune[AudioUtilities::renderQuantumSize]; // in Cents
 
-            ASSERT(framesToProcess <= Biquad::MaxFramesToProcess);
+            ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize);
 
             biquadProcessor()->parameter1().calculateSampleAccurateValues(cutoffFrequency, framesToProcess);
             biquadProcessor()->parameter2().calculateSampleAccurateValues(q, framesToProcess);

Modified: trunk/Source/WebCore/Modules/webaudio/BiquadProcessor.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/BiquadProcessor.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/BiquadProcessor.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -110,8 +110,8 @@
 
 void BiquadProcessor::processOnlyAudioParams(size_t framesToProcess)
 {
-    float values[AudioNode::ProcessingSizeInFrames];
-    ASSERT(framesToProcess <= AudioNode::ProcessingSizeInFrames);
+    float values[AudioUtilities::renderQuantumSize];
+    ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize);
 
     m_parameter1->calculateSampleAccurateValues(values, framesToProcess);
     m_parameter2->calculateSampleAccurateValues(values, framesToProcess);

Modified: trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -31,6 +31,7 @@
 
 #include "AudioNodeOutput.h"
 #include "AudioParam.h"
+#include "AudioUtilities.h"
 #include "ConstantSourceOptions.h"
 #include <wtf/IsoMallocInlines.h>
 
@@ -55,6 +56,7 @@
 ConstantSourceNode::ConstantSourceNode(BaseAudioContext& context, float offset)
     : AudioScheduledSourceNode(context)
     , m_offset(AudioParam::create(context, "offset"_s, offset, -FLT_MAX, FLT_MAX, AutomationRate::ARate))
+    , m_sampleAccurateValues(AudioUtilities::renderQuantumSize)
 {
     setNodeType(NodeTypeConstant);
     addOutput(makeUnique<AudioNodeOutput>(this, 1));

Modified: trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.h (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.h	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.h	2020-09-24 18:32:53 UTC (rev 267541)
@@ -57,7 +57,7 @@
     Ref<AudioParam> m_offset;
     
     // Stores sample-accurate values calculated.
-    AudioFloatArray m_sampleAccurateValues { AudioNode::ProcessingSizeInFrames };
+    AudioFloatArray m_sampleAccurateValues;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -32,6 +32,7 @@
 #include "AudioBuffer.h"
 #include "AudioNodeInput.h"
 #include "AudioNodeOutput.h"
+#include "AudioUtilities.h"
 #include "Reverb.h"
 #include <wtf/IsoMallocInlines.h>
 
@@ -146,7 +147,7 @@
 
     // Create the reverb with the given impulse response.
     bool useBackgroundThreads = !context().isOfflineContext();
-    auto reverb = makeUnique<Reverb>(bufferBus.get(), AudioNode::ProcessingSizeInFrames, MaxFFTSize, useBackgroundThreads, m_normalize);
+    auto reverb = makeUnique<Reverb>(bufferBus.get(), AudioUtilities::renderQuantumSize, MaxFFTSize, useBackgroundThreads, m_normalize);
 
     {
         // The context must be locked since changing the buffer can re-configure the number of channels that are output.

Modified: trunk/Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -35,7 +35,7 @@
 
 DelayDSPKernel::DelayDSPKernel(DelayProcessor* processor)
     : AudioDSPKernel(processor)
-    , m_delayTimes(AudioNode::ProcessingSizeInFrames)
+    , m_delayTimes(AudioUtilities::renderQuantumSize)
 {
     ASSERT(processor && processor->sampleRate() > 0);
     if (!(processor && processor->sampleRate() > 0))
@@ -138,8 +138,8 @@
     if (!delayProcessor())
         return;
 
-    float values[AudioNode::ProcessingSizeInFrames];
-    ASSERT(framesToProcess <= AudioNode::ProcessingSizeInFrames);
+    float values[AudioUtilities::renderQuantumSize];
+    ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize);
 
     delayProcessor()->delayTime().calculateSampleAccurateValues(values, framesToProcess);
 }

Modified: trunk/Source/WebCore/Modules/webaudio/DynamicsCompressorNode.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/DynamicsCompressorNode.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/DynamicsCompressorNode.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -32,6 +32,7 @@
 #include "AudioContext.h"
 #include "AudioNodeInput.h"
 #include "AudioNodeOutput.h"
+#include "AudioUtilities.h"
 #include "DynamicsCompressor.h"
 #include "WebKitDynamicsCompressorNode.h"
 #include <wtf/IsoMallocInlines.h>
@@ -105,8 +106,8 @@
 
 void DynamicsCompressorNode::processOnlyAudioParams(size_t framesToProcess)
 {
-    float values[AudioNode::ProcessingSizeInFrames];
-    ASSERT(framesToProcess <= AudioNode::ProcessingSizeInFrames);
+    float values[AudioUtilities::renderQuantumSize];
+    ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize);
 
     m_threshold->calculateSampleAccurateValues(values, framesToProcess);
     m_knee->calculateSampleAccurateValues(values, framesToProcess);

Modified: trunk/Source/WebCore/Modules/webaudio/GainNode.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/GainNode.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/GainNode.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -57,7 +57,7 @@
 
 GainNode::GainNode(BaseAudioContext& context)
     : AudioNode(context)
-    , m_sampleAccurateGainValues(AudioNode::ProcessingSizeInFrames) // FIXME: can probably share temp buffer in context
+    , m_sampleAccurateGainValues(AudioUtilities::renderQuantumSize) // FIXME: can probably share temp buffer in context
     , m_gain(AudioParam::create(context, "gain"_s, 1.0, -FLT_MAX, FLT_MAX, AutomationRate::ARate))
 {
     setNodeType(NodeTypeGain);
@@ -104,8 +104,8 @@
 
 void GainNode::processOnlyAudioParams(size_t framesToProcess)
 {
-    float values[AudioNode::ProcessingSizeInFrames];
-    ASSERT(framesToProcess <= AudioNode::ProcessingSizeInFrames);
+    float values[AudioUtilities::renderQuantumSize];
+    ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize);
 
     m_gain->calculateSampleAccurateValues(values, framesToProcess);
 }

Modified: trunk/Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -142,7 +142,7 @@
     }
 
     size_t frame = AudioUtilities::timeToSampleFrame(suspendTime, sampleRate());
-    frame = OfflineAudioDestinationNode::renderQuantumSize * ((frame + OfflineAudioDestinationNode::renderQuantumSize - 1) / OfflineAudioDestinationNode::renderQuantumSize);
+    frame = AudioUtilities::renderQuantumSize * ((frame + AudioUtilities::renderQuantumSize - 1) / AudioUtilities::renderQuantumSize);
     if (frame < currentSampleFrame()) {
         promise->reject(Exception { InvalidStateError, "Suspension frame is earlier than current frame"_s });
         return;

Modified: trunk/Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -30,6 +30,7 @@
 
 #include "AudioBus.h"
 #include "AudioContext.h"
+#include "AudioUtilities.h"
 #include "HRTFDatabaseLoader.h"
 #include <algorithm>
 #include <wtf/IsoMallocInlines.h>
@@ -38,8 +39,6 @@
 namespace WebCore {
 
 WTF_MAKE_ISO_ALLOCATED_IMPL(OfflineAudioDestinationNode);
-    
-const size_t OfflineAudioDestinationNode::renderQuantumSize = 128;
 
 OfflineAudioDestinationNode::OfflineAudioDestinationNode(BaseAudioContext& context, unsigned numberOfChannels, RefPtr<AudioBuffer>&& renderTarget)
     : AudioDestinationNode(context)
@@ -47,7 +46,7 @@
     , m_renderTarget(WTFMove(renderTarget))
     , m_framesToProcess(m_renderTarget ? m_renderTarget->length() : 0)
 {
-    m_renderBus = AudioBus::create(numberOfChannels, renderQuantumSize);
+    m_renderBus = AudioBus::create(numberOfChannels, AudioUtilities::renderQuantumSize);
     initializeDefaultNodeOptions(numberOfChannels, ChannelCountMode::Explicit, ChannelInterpretation::Speakers);
 }
 
@@ -134,7 +133,7 @@
     if (!channelsMatch)
         return OfflineRenderResult::Failure;
 
-    bool isRenderBusAllocated = m_renderBus->length() >= renderQuantumSize;
+    bool isRenderBusAllocated = m_renderBus->length() >= AudioUtilities::renderQuantumSize;
     ASSERT(isRenderBusAllocated);
     if (!isRenderBusAllocated)
         return OfflineRenderResult::Failure;
@@ -148,9 +147,9 @@
             return OfflineRenderResult::Suspended;
 
         // Render one render quantum.
-        render(0, m_renderBus.get(), renderQuantumSize, { });
+        render(0, m_renderBus.get(), AudioUtilities::renderQuantumSize, { });
         
-        size_t framesAvailableToCopy = std::min(m_framesToProcess, renderQuantumSize);
+        size_t framesAvailableToCopy = std::min(m_framesToProcess, AudioUtilities::renderQuantumSize);
         
         for (unsigned channelIndex = 0; channelIndex < numberOfChannels; ++channelIndex) {
             const float* source = m_renderBus->channel(channelIndex)->data();

Modified: trunk/Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.h (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.h	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.h	2020-09-24 18:32:53 UTC (rev 267541)
@@ -54,8 +54,6 @@
 
     float sampleRate() const final { return m_renderTarget->sampleRate(); }
 
-    static const size_t renderQuantumSize;
-
 private:
     OfflineAudioDestinationNode(BaseAudioContext&, unsigned numberOfChannels, RefPtr<AudioBuffer>&& renderTarget);
 

Modified: trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -30,6 +30,7 @@
 
 #include "AudioNodeOutput.h"
 #include "AudioParam.h"
+#include "AudioUtilities.h"
 #include "PeriodicWave.h"
 #include "VectorMath.h"
 #include <wtf/IsoMallocInlines.h>
@@ -94,6 +95,8 @@
     : AudioScheduledSourceNode(context)
     , m_frequency(AudioParam::create(context, "frequency"_s, options.frequency, -context.sampleRate() / 2, context.sampleRate() / 2, AutomationRate::ARate))
     , m_detune(AudioParam::create(context, "detune"_s, options.detune, -1200 * log2f(std::numeric_limits<float>::max()), 1200 * log2f(std::numeric_limits<float>::max()), AutomationRate::ARate))
+    , m_phaseIncrements(AudioUtilities::renderQuantumSize)
+    , m_detuneValues(AudioUtilities::renderQuantumSize)
 {
     setNodeType(NodeTypeOscillator);
     

Modified: trunk/Source/WebCore/Modules/webaudio/OscillatorNode.h (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/OscillatorNode.h	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/OscillatorNode.h	2020-09-24 18:32:53 UTC (rev 267541)
@@ -88,8 +88,8 @@
     mutable Lock m_processMutex;
 
     // Stores sample-accurate values calculated according to frequency and detune.
-    AudioFloatArray m_phaseIncrements { AudioNode::ProcessingSizeInFrames };
-    AudioFloatArray m_detuneValues { AudioNode::ProcessingSizeInFrames };
+    AudioFloatArray m_phaseIncrements;
+    AudioFloatArray m_detuneValues;
     
     RefPtr<PeriodicWave> m_periodicWave;
 };

Modified: trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -183,8 +183,8 @@
 
 void PannerNode::processOnlyAudioParams(size_t framesToProcess)
 {
-    float values[AudioNode::ProcessingSizeInFrames];
-    ASSERT(framesToProcess <= AudioNode::ProcessingSizeInFrames);
+    float values[AudioUtilities::renderQuantumSize];
+    ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize);
 
     m_positionX->calculateSampleAccurateValues(values, framesToProcess);
     m_positionY->calculateSampleAccurateValues(values, framesToProcess);
@@ -201,13 +201,13 @@
 {
     // Get the sample accurate values from all of the AudioParams, including the
     // values from the AudioListener.
-    float pannerX[AudioNode::ProcessingSizeInFrames];
-    float pannerY[AudioNode::ProcessingSizeInFrames];
-    float pannerZ[AudioNode::ProcessingSizeInFrames];
+    float pannerX[AudioUtilities::renderQuantumSize];
+    float pannerY[AudioUtilities::renderQuantumSize];
+    float pannerZ[AudioUtilities::renderQuantumSize];
 
-    float orientationX[AudioNode::ProcessingSizeInFrames];
-    float orientationY[AudioNode::ProcessingSizeInFrames];
-    float orientationZ[AudioNode::ProcessingSizeInFrames];
+    float orientationX[AudioUtilities::renderQuantumSize];
+    float orientationY[AudioUtilities::renderQuantumSize];
+    float orientationZ[AudioUtilities::renderQuantumSize];
 
     m_positionX->calculateSampleAccurateValues(pannerX, framesToProcess);
     m_positionY->calculateSampleAccurateValues(pannerY, framesToProcess);
@@ -217,22 +217,22 @@
     m_orientationZ->calculateSampleAccurateValues(orientationZ, framesToProcess);
 
     // Get the automation values from the listener.
-    const float* listenerX = listener().positionXValues(AudioNode::ProcessingSizeInFrames);
-    const float* listenerY = listener().positionYValues(AudioNode::ProcessingSizeInFrames);
-    const float* listenerZ = listener().positionZValues(AudioNode::ProcessingSizeInFrames);
+    const float* listenerX = listener().positionXValues(AudioUtilities::renderQuantumSize);
+    const float* listenerY = listener().positionYValues(AudioUtilities::renderQuantumSize);
+    const float* listenerZ = listener().positionZValues(AudioUtilities::renderQuantumSize);
 
-    const float* forwardX = listener().forwardXValues(AudioNode::ProcessingSizeInFrames);
-    const float* forwardY = listener().forwardYValues(AudioNode::ProcessingSizeInFrames);
-    const float* forwardZ = listener().forwardZValues(AudioNode::ProcessingSizeInFrames);
+    const float* forwardX = listener().forwardXValues(AudioUtilities::renderQuantumSize);
+    const float* forwardY = listener().forwardYValues(AudioUtilities::renderQuantumSize);
+    const float* forwardZ = listener().forwardZValues(AudioUtilities::renderQuantumSize);
 
-    const float* upX = listener().upXValues(AudioNode::ProcessingSizeInFrames);
-    const float* upY = listener().upYValues(AudioNode::ProcessingSizeInFrames);
-    const float* upZ = listener().upZValues(AudioNode::ProcessingSizeInFrames);
+    const float* upX = listener().upXValues(AudioUtilities::renderQuantumSize);
+    const float* upY = listener().upYValues(AudioUtilities::renderQuantumSize);
+    const float* upZ = listener().upZValues(AudioUtilities::renderQuantumSize);
 
     // Compute the azimuth, elevation, and total gains for each position.
-    double azimuth[AudioNode::ProcessingSizeInFrames];
-    double elevation[AudioNode::ProcessingSizeInFrames];
-    float totalGain[AudioNode::ProcessingSizeInFrames];
+    double azimuth[AudioUtilities::renderQuantumSize];
+    double elevation[AudioUtilities::renderQuantumSize];
+    float totalGain[AudioUtilities::renderQuantumSize];
 
     for (size_t k = 0; k < framesToProcess; ++k) {
         FloatPoint3D pannerPosition(pannerX[k], pannerY[k], pannerZ[k]);

Modified: trunk/Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -55,7 +55,7 @@
 RealtimeAnalyser::RealtimeAnalyser()
     : m_inputBuffer(InputBufferSize)
     , m_writeIndex(0)
-    , m_downmixBus(AudioBus::create(1, AudioNode::ProcessingSizeInFrames))
+    , m_downmixBus(AudioBus::create(1, AudioUtilities::renderQuantumSize))
     , m_fftSize(DefaultFFTSize)
     , m_magnitudeBuffer(DefaultFFTSize / 2)
     , m_smoothingTimeConstant(DefaultSmoothingTimeConstant)

Modified: trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -34,6 +34,7 @@
 #include "AudioNodeInput.h"
 #include "AudioNodeOutput.h"
 #include "AudioProcessingEvent.h"
+#include "AudioUtilities.h"
 #include "Document.h"
 #include "EventNames.h"
 #include <_javascript_Core/Float32Array.h>
@@ -58,11 +59,11 @@
     , m_bufferReadWriteIndex(0)
     , m_numberOfInputChannels(numberOfInputChannels)
     , m_numberOfOutputChannels(numberOfOutputChannels)
-    , m_internalInputBus(AudioBus::create(numberOfInputChannels, AudioNode::ProcessingSizeInFrames, false))
+    , m_internalInputBus(AudioBus::create(numberOfInputChannels, AudioUtilities::renderQuantumSize, false))
 {
     // Regardless of the allowed buffer sizes, we still need to process at the granularity of the AudioNode.
-    if (m_bufferSize < AudioNode::ProcessingSizeInFrames)
-        m_bufferSize = AudioNode::ProcessingSizeInFrames;
+    if (m_bufferSize < AudioUtilities::renderQuantumSize)
+        m_bufferSize = AudioUtilities::renderQuantumSize;
 
     ASSERT(numberOfInputChannels <= AudioContext::maxNumberOfChannels());
 

Modified: trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -32,6 +32,7 @@
 #include "AudioBus.h"
 #include "AudioNodeInput.h"
 #include "AudioNodeOutput.h"
+#include "AudioUtilities.h"
 #include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
@@ -57,6 +58,7 @@
 StereoPannerNode::StereoPannerNode(BaseAudioContext& context, float pan)
     : AudioNode(context)
     , m_pan(AudioParam::create(context, "pan"_s, pan, -1, 1, AutomationRate::ARate))
+    , m_sampleAccurateValues(AudioUtilities::renderQuantumSize)
 {
     setNodeType(NodeTypeStereo);
     
@@ -102,8 +104,8 @@
 
 void StereoPannerNode::processOnlyAudioParams(size_t framesToProcess)
 {
-    float values[AudioNode::ProcessingSizeInFrames];
-    ASSERT(framesToProcess <= AudioNode::ProcessingSizeInFrames);
+    float values[AudioUtilities::renderQuantumSize];
+    ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize);
 
     m_pan->calculateSampleAccurateValues(values, framesToProcess);
 }

Modified: trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.h (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.h	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.h	2020-09-24 18:32:53 UTC (rev 267541)
@@ -61,7 +61,7 @@
     double latencyTime() const final { return 0; }
     
     Ref<AudioParam> m_pan;
-    AudioFloatArray m_sampleAccurateValues { AudioNode::ProcessingSizeInFrames };
+    AudioFloatArray m_sampleAccurateValues;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp (267540 => 267541)


--- trunk/Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -28,13 +28,12 @@
 
 #include "WaveShaperDSPKernel.h"
 
+#include "AudioUtilities.h"
 #include "WaveShaperProcessor.h"
 #include <algorithm>
 #include <wtf/MainThread.h>
 #include <wtf/Threading.h>
 
-const unsigned RenderingQuantum = 128;
-
 namespace WebCore {
 
 WaveShaperDSPKernel::WaveShaperDSPKernel(WaveShaperProcessor* processor)
@@ -49,12 +48,12 @@
     ASSERT(isMainThread());
 
     if (!m_tempBuffer) {
-        m_tempBuffer = makeUnique<AudioFloatArray>(RenderingQuantum * 2);
-        m_tempBuffer2 = makeUnique<AudioFloatArray>(RenderingQuantum * 4);
-        m_upSampler = makeUnique<UpSampler>(RenderingQuantum);
-        m_downSampler = makeUnique<DownSampler>(RenderingQuantum * 2);
-        m_upSampler2 = makeUnique<UpSampler>(RenderingQuantum * 2);
-        m_downSampler2 = makeUnique<DownSampler>(RenderingQuantum * 4);
+        m_tempBuffer = makeUnique<AudioFloatArray>(AudioUtilities::renderQuantumSize * 2);
+        m_tempBuffer2 = makeUnique<AudioFloatArray>(AudioUtilities::renderQuantumSize * 4);
+        m_upSampler = makeUnique<UpSampler>(AudioUtilities::renderQuantumSize);
+        m_downSampler = makeUnique<DownSampler>(AudioUtilities::renderQuantumSize * 2);
+        m_upSampler2 = makeUnique<UpSampler>(AudioUtilities::renderQuantumSize * 2);
+        m_downSampler2 = makeUnique<DownSampler>(AudioUtilities::renderQuantumSize * 4);
     }
 }
 
@@ -117,7 +116,7 @@
 
 void WaveShaperDSPKernel::processCurve2x(const float* source, float* destination, size_t framesToProcess)
 {
-    bool isSafe = framesToProcess == RenderingQuantum;
+    bool isSafe = framesToProcess == AudioUtilities::renderQuantumSize;
     ASSERT(isSafe);
     if (!isSafe)
         return;
@@ -134,7 +133,7 @@
 
 void WaveShaperDSPKernel::processCurve4x(const float* source, float* destination, size_t framesToProcess)
 {
-    bool isSafe = framesToProcess == RenderingQuantum;
+    bool isSafe = framesToProcess == AudioUtilities::renderQuantumSize;
     ASSERT(isSafe);
     if (!isSafe)
         return;

Modified: trunk/Source/WebCore/platform/audio/AudioResamplerKernel.cpp (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/AudioResamplerKernel.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/AudioResamplerKernel.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -29,16 +29,15 @@
 #include "AudioResamplerKernel.h"
 
 #include "AudioResampler.h"
+#include "AudioUtilities.h"
 #include <algorithm>
 
 namespace WebCore {
-    
-const size_t AudioResamplerKernel::MaxFramesToProcess = 128;
 
 AudioResamplerKernel::AudioResamplerKernel(AudioResampler* resampler)
     : m_resampler(resampler)
     // The buffer size must be large enough to hold up to two extra sample frames for the linear interpolation.
-    , m_sourceBuffer(2 + static_cast<int>(MaxFramesToProcess * AudioResampler::MaxRate))
+    , m_sourceBuffer(2 + static_cast<int>(AudioUtilities::renderQuantumSize * AudioResampler::MaxRate))
     , m_virtualReadIndex(0.0)
     , m_fillIndex(0)
 {
@@ -48,7 +47,7 @@
 
 float* AudioResamplerKernel::getSourcePointer(size_t framesToProcess, size_t* numberOfSourceFramesNeededP)
 {
-    ASSERT(framesToProcess <= MaxFramesToProcess);
+    ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize);
     
     // Calculate the next "virtual" index.  After process() is called, m_virtualReadIndex will equal this value.
     double nextFractionalIndex = m_virtualReadIndex + framesToProcess * rate();
@@ -73,7 +72,7 @@
 
 void AudioResamplerKernel::process(float* destination, size_t framesToProcess)
 {
-    ASSERT(framesToProcess <= MaxFramesToProcess);
+    ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize);
 
     float* source = m_sourceBuffer.data();
     

Modified: trunk/Source/WebCore/platform/audio/AudioResamplerKernel.h (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/AudioResamplerKernel.h	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/AudioResamplerKernel.h	2020-09-24 18:32:53 UTC (rev 267541)
@@ -45,19 +45,17 @@
     // getSourcePointer() should be called each time before process() is called.
     // Given a number of frames to process (for subsequent call to process()), it returns a pointer and numberOfSourceFramesNeeded
     // where sample data should be copied. This sample data provides the input to the resampler when process() is called.
-    // framesToProcess must be less than or equal to MaxFramesToProcess.
+    // framesToProcess must be less than or equal to AudioUtilities::renderQuantumSize.
     float* getSourcePointer(size_t framesToProcess, size_t* numberOfSourceFramesNeeded);
 
     // process() resamples framesToProcess frames from the source into destination.
     // Each call to process() must be preceded by a call to getSourcePointer() so that source input may be supplied.
-    // framesToProcess must be less than or equal to MaxFramesToProcess.
+    // framesToProcess must be less than or equal to AudioUtilities::renderQuantumSize.
     void process(float* destination, size_t framesToProcess);
 
     // Resets the processing state.
     void reset();
 
-    static const size_t MaxFramesToProcess;
-
 private:
     double rate() const;
 

Modified: trunk/Source/WebCore/platform/audio/AudioUtilities.h (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/AudioUtilities.h	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/AudioUtilities.h	2020-09-24 18:32:53 UTC (rev 267541)
@@ -29,6 +29,9 @@
 
 namespace AudioUtilities {
 
+// https://www.w3.org/TR/webaudio/#render-quantum-size
+constexpr size_t renderQuantumSize = 128;
+
 // Standard functions for converting to and from decibel values from linear.
 float linearToDecibels(float);
 float decibelsToLinear(float);

Modified: trunk/Source/WebCore/platform/audio/Biquad.cpp (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/Biquad.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/Biquad.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -32,6 +32,7 @@
 
 #include "Biquad.h"
 
+#include "AudioUtilities.h"
 #include "DenormalDisabler.h"
 #include <algorithm>
 #include <stdio.h>
@@ -59,11 +60,11 @@
 
     // Allocate enough space for the a-rate filter coefficients to handle a
     // rendering quantum of 128 frames.
-    m_b0.allocate(MaxFramesToProcess);
-    m_b1.allocate(MaxFramesToProcess);
-    m_b2.allocate(MaxFramesToProcess);
-    m_a1.allocate(MaxFramesToProcess);
-    m_a2.allocate(MaxFramesToProcess);
+    m_b0.allocate(AudioUtilities::renderQuantumSize);
+    m_b1.allocate(AudioUtilities::renderQuantumSize);
+    m_b2.allocate(AudioUtilities::renderQuantumSize);
+    m_a1.allocate(AudioUtilities::renderQuantumSize);
+    m_a2.allocate(AudioUtilities::renderQuantumSize);
 
     // Initialize as pass-thru (straight-wire, no filter effect)
     setNormalizedCoefficients(0, 1, 0, 0, 1, 0, 0);

Modified: trunk/Source/WebCore/platform/audio/Biquad.h (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/Biquad.h	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/Biquad.h	2020-09-24 18:32:53 UTC (rev 267541)
@@ -46,8 +46,6 @@
     Biquad();
     ~Biquad();
 
-    static constexpr size_t MaxFramesToProcess = 128;
-
     void process(const float* sourceP, float* destP, size_t framesToProcess);
 
     bool hasSampleAccurateValues() const { return m_hasSampleAccurateValues; }

Modified: trunk/Source/WebCore/platform/audio/HRTFPanner.cpp (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/HRTFPanner.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/HRTFPanner.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -29,6 +29,7 @@
 #include "HRTFPanner.h"
 
 #include "AudioBus.h"
+#include "AudioUtilities.h"
 #include "FFTConvolver.h"
 #include "HRTFDatabase.h"
 #include "HRTFDatabaseLoader.h"
@@ -42,7 +43,6 @@
 const double MaxDelayTimeSeconds = 0.002;
 
 const int UninitializedAzimuth = -1;
-const unsigned RenderingQuantum = 128;
 
 HRTFPanner::HRTFPanner(float sampleRate, HRTFDatabaseLoader* databaseLoader)
     : Panner(PanningModelType::HRTF)
@@ -61,10 +61,10 @@
     , m_convolverR2(fftSizeForSampleRate(sampleRate))
     , m_delayLineL(MaxDelayTimeSeconds, sampleRate)
     , m_delayLineR(MaxDelayTimeSeconds, sampleRate)
-    , m_tempL1(RenderingQuantum)
-    , m_tempR1(RenderingQuantum)
-    , m_tempL2(RenderingQuantum)
-    , m_tempR2(RenderingQuantum)
+    , m_tempL1(AudioUtilities::renderQuantumSize)
+    , m_tempR1(AudioUtilities::renderQuantumSize)
+    , m_tempL2(AudioUtilities::renderQuantumSize)
+    , m_tempR2(AudioUtilities::renderQuantumSize)
 {
     ASSERT(databaseLoader);
 }
@@ -218,11 +218,11 @@
         }
     }
 
-    // This algorithm currently requires that we process in power-of-two size chunks at least RenderingQuantum.
+    // This algorithm currently requires that we process in power-of-two size chunks at least AudioUtilities::renderQuantumSize.
     ASSERT(1UL << static_cast<int>(log2(framesToProcess)) == framesToProcess);
-    ASSERT(framesToProcess >= RenderingQuantum);
+    ASSERT(framesToProcess >= AudioUtilities::renderQuantumSize);
 
-    const unsigned framesPerSegment = RenderingQuantum;
+    const unsigned framesPerSegment = AudioUtilities::renderQuantumSize;
     const unsigned numberOfSegments = framesToProcess / framesPerSegment;
 
     for (unsigned segment = 0; segment < numberOfSegments; ++segment) {

Modified: trunk/Source/WebCore/platform/audio/IIRFilter.cpp (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/IIRFilter.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/IIRFilter.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -29,6 +29,7 @@
 #include "IIRFilter.h"
 
 #include "AudioArray.h"
+#include "AudioUtilities.h"
 #include "VectorMath.h"
 #include <algorithm>
 #include <complex>
@@ -36,8 +37,6 @@
 
 namespace WebCore {
 
-constexpr unsigned iirRenderingQuantum = 128;
-
 // The length of the memory buffers for the IIR filter. This MUST be a power of
 // two and must be greater than the possible length of the filter coefficients.
 constexpr int bufferLength = 32;
@@ -188,11 +187,11 @@
     // zero out the output of the node.
 
     // Number of render quanta needed to reach the max tail time.
-    int numberOfBlocks = std::ceil(sampleRate * maxTailTime / iirRenderingQuantum);
+    int numberOfBlocks = std::ceil(sampleRate * maxTailTime / AudioUtilities::renderQuantumSize);
 
     // Input and output buffers for filtering.
-    AudioFloatArray input(iirRenderingQuantum);
-    AudioFloatArray output(iirRenderingQuantum);
+    AudioFloatArray input(AudioUtilities::renderQuantumSize);
+    AudioFloatArray output(AudioUtilities::renderQuantumSize);
 
     // Array to hold the max magnitudes
     AudioFloatArray magnitudes(numberOfBlocks);
@@ -201,8 +200,8 @@
     input[0] = 1;
 
     // Process the first block and get the max magnitude of the output.
-    process(input.data(), output.data(), iirRenderingQuantum);
-    VectorMath::vmaxmgv(output.data(), 1, &magnitudes[0], iirRenderingQuantum);
+    process(input.data(), output.data(), AudioUtilities::renderQuantumSize);
+    VectorMath::vmaxmgv(output.data(), 1, &magnitudes[0], AudioUtilities::renderQuantumSize);
 
     // Process the rest of the signal, getting the max magnitude of the
     // output for each block.
@@ -209,8 +208,8 @@
     input[0] = 0;
 
     for (int k = 1; k < numberOfBlocks; ++k) {
-        process(input.data(), output.data(), iirRenderingQuantum);
-        VectorMath::vmaxmgv(output.data(), 1, &magnitudes[k], iirRenderingQuantum);
+        process(input.data(), output.data(), AudioUtilities::renderQuantumSize);
+        VectorMath::vmaxmgv(output.data(), 1, &magnitudes[k], AudioUtilities::renderQuantumSize);
     }
 
     // Done computing the impulse response; reset the state so the actual node
@@ -228,7 +227,7 @@
 
     // The magnitude first become lower than the threshold at the next block.
     // Compute the corresponding time value value; that's the tail time.
-    return (index + 1) * iirRenderingQuantum / sampleRate;
+    return (index + 1) * AudioUtilities::renderQuantumSize / sampleRate;
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -30,6 +30,7 @@
 
 #include "AudioBus.h"
 #include "AudioSession.h"
+#include "AudioUtilities.h"
 #include "Logging.h"
 #include "MultiChannelResampler.h"
 #include "PushPullFIFO.h"
@@ -36,10 +37,8 @@
 
 namespace WebCore {
 
-constexpr size_t kRenderBufferSize = 128;
+constexpr size_t fifoSize = 96 * AudioUtilities::renderQuantumSize;
 
-constexpr size_t fifoSize = 96 * kRenderBufferSize;
-
 CreateAudioDestinationCocoaOverride AudioDestinationCocoa::createOverride = nullptr;
 
 std::unique_ptr<AudioDestination> AudioDestination::create(AudioIOCallback& callback, const String&, unsigned numberOfInputChannels, unsigned numberOfOutputChannels, float sampleRate)
@@ -74,8 +73,8 @@
 AudioDestinationCocoa::AudioDestinationCocoa(AudioIOCallback& callback, unsigned numberOfOutputChannels, float sampleRate)
     : m_outputUnit(0)
     , m_callback(callback)
-    , m_outputBus(AudioBus::create(numberOfOutputChannels, kRenderBufferSize, false).releaseNonNull())
-    , m_renderBus(AudioBus::create(numberOfOutputChannels, kRenderBufferSize).releaseNonNull())
+    , m_outputBus(AudioBus::create(numberOfOutputChannels, AudioUtilities::renderQuantumSize, false).releaseNonNull())
+    , m_renderBus(AudioBus::create(numberOfOutputChannels, AudioUtilities::renderQuantumSize).releaseNonNull())
     , m_fifo(makeUniqueRef<PushPullFIFO>(numberOfOutputChannels, fifoSize))
     , m_contextSampleRate(sampleRate)
 {
@@ -84,7 +83,7 @@
     auto hardwareSampleRate = this->hardwareSampleRate();
     if (sampleRate != hardwareSampleRate) {
         double scaleFactor = static_cast<double>(sampleRate) / hardwareSampleRate;
-        m_resampler = makeUnique<MultiChannelResampler>(scaleFactor, numberOfOutputChannels, kRenderBufferSize);
+        m_resampler = makeUnique<MultiChannelResampler>(scaleFactor, numberOfOutputChannels, AudioUtilities::renderQuantumSize);
     }
 }
 
@@ -176,11 +175,11 @@
     assignAudioBuffersToBus(buffers, m_outputBus.get(), numberOfBuffers, numberOfFrames, 0, numberOfFrames);
     size_t framesToRender = m_fifo->pull(m_outputBus.ptr(), numberOfFrames);
 
-    for (size_t pushedFrames = 0; pushedFrames < framesToRender; pushedFrames += kRenderBufferSize) {
+    for (size_t pushedFrames = 0; pushedFrames < framesToRender; pushedFrames += AudioUtilities::renderQuantumSize) {
         if (m_resampler)
-            m_resampler->process(this, m_renderBus.ptr(), kRenderBufferSize);
+            m_resampler->process(this, m_renderBus.ptr(), AudioUtilities::renderQuantumSize);
         else
-            m_callback.render(0, m_renderBus.ptr(), kRenderBufferSize, m_outputTimestamp);
+            m_callback.render(0, m_renderBus.ptr(), AudioUtilities::renderQuantumSize, m_outputTimestamp);
 
         m_fifo->push(m_renderBus.ptr());
     }
@@ -197,8 +196,8 @@
 
 void AudioDestinationCocoa::provideInput(AudioBus* bus, size_t framesToProcess)
 {
-    ASSERT_UNUSED(framesToProcess, framesToProcess == kRenderBufferSize);
-    m_callback.render(0, bus, kRenderBufferSize, m_outputTimestamp);
+    ASSERT_UNUSED(framesToProcess, framesToProcess == AudioUtilities::renderQuantumSize);
+    m_callback.render(0, bus, AudioUtilities::renderQuantumSize, m_outputTimestamp);
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm	2020-09-24 18:32:53 UTC (rev 267541)
@@ -29,6 +29,7 @@
 #if USE(AUDIO_SESSION) && PLATFORM(COCOA)
 
 #import "AudioSession.h"
+#import "AudioUtilities.h"
 #import "DeprecatedGlobalSettings.h"
 #import "HTMLMediaElement.h"
 #import "Logging.h"
@@ -42,7 +43,6 @@
 
 #import "MediaRemoteSoftLink.h"
 
-static const size_t kWebAudioBufferSize = 128;
 static const size_t kLowPowerVideoBufferSize = 4096;
 
 namespace WebCore {
@@ -102,7 +102,7 @@
         "WebAudio(", webAudioCount, ")");
 
     if (webAudioCount)
-        AudioSession::sharedSession().setPreferredBufferSize(kWebAudioBufferSize);
+        AudioSession::sharedSession().setPreferredBufferSize(AudioUtilities::renderQuantumSize);
     // In case of audio capture, we want to grab 20 ms chunks to limit the latency so that it is not noticeable by users
     // while having a large enough buffer so that the audio rendering remains stable, hence a computation based on sample rate.
     else if (captureCount)
@@ -112,7 +112,7 @@
         if (m_audioHardwareListener && m_audioHardwareListener->outputDeviceSupportsLowPowerMode())
             bufferSize = kLowPowerVideoBufferSize;
         else
-            bufferSize = kWebAudioBufferSize;
+            bufferSize = AudioUtilities::renderQuantumSize;
 
         AudioSession::sharedSession().setPreferredBufferSize(bufferSize);
     }

Modified: trunk/Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -25,6 +25,7 @@
 
 #include "AudioChannel.h"
 #include "AudioSourceProvider.h"
+#include "AudioUtilities.h"
 #include "GRefPtrGStreamer.h"
 #include "Logging.h"
 #include "WebKitWebAudioSourceGStreamer.h"
@@ -35,10 +36,6 @@
 
 namespace WebCore {
 
-// Size of the AudioBus for playback. The webkitwebaudiosrc element
-// needs to handle this number of frames per cycle as well.
-const unsigned framesToPull = 128;
-
 gboolean messageCallback(GstBus*, GstMessage* message, AudioDestinationGStreamer* destination)
 {
     return destination->handleMessage(message);
@@ -79,7 +76,7 @@
 
 AudioDestinationGStreamer::AudioDestinationGStreamer(AudioIOCallback& callback, float sampleRate)
     : m_callback(callback)
-    , m_renderBus(AudioBus::create(2, framesToPull, false))
+    , m_renderBus(AudioBus::create(2, AudioUtilities::renderQuantumSize, false))
     , m_sampleRate(sampleRate)
     , m_isPlaying(false)
 {
@@ -93,7 +90,7 @@
                                                                             "rate", sampleRate,
                                                                             "bus", m_renderBus.get(),
                                                                             "provider", &m_callback,
-                                                                            "frames", framesToPull, nullptr));
+                                                                            "frames", AudioUtilities::renderQuantumSize, nullptr));
 
     GRefPtr<GstElement> audioSink = gst_element_factory_make("autoaudiosink", nullptr);
     m_audioSinkAvailable = audioSink;
@@ -138,7 +135,7 @@
 
 unsigned AudioDestinationGStreamer::framesPerBuffer() const
 {
-    return framesToPull;
+    return AudioUtilities::renderQuantumSize;
 }
 
 gboolean AudioDestinationGStreamer::handleMessage(GstMessage* message)

Modified: trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp (267540 => 267541)


--- trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp	2020-09-24 18:29:21 UTC (rev 267540)
+++ trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp	2020-09-24 18:32:53 UTC (rev 267541)
@@ -25,6 +25,7 @@
 
 #include "AudioBus.h"
 #include "AudioIOCallback.h"
+#include "AudioUtilities.h"
 #include "GStreamerCommon.h"
 #include <gst/app/gstappsrc.h>
 #include <gst/audio/audio-info.h>
@@ -186,7 +187,7 @@
                                     PROP_FRAMES,
                                     g_param_spec_uint("frames", "frames",
                                                       "Number of audio frames to pull at each iteration",
-                                                      0, G_MAXUINT8, 128, flags));
+                                                      0, G_MAXUINT8, AudioUtilities::renderQuantumSize, flags));
 }
 
 static void webKitWebAudioSrcConstructed(GObject* object)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to