Changeset 267541 in webkit
- Timestamp:
- Sep 24, 2020, 11:32:53 AM (6 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 38 edited
-
ChangeLog (modified) (1 diff)
-
Modules/webaudio/AudioListener.cpp (modified) (2 diffs)
-
Modules/webaudio/AudioNode.h (modified) (1 diff)
-
Modules/webaudio/AudioNodeInput.cpp (modified) (2 diffs)
-
Modules/webaudio/AudioNodeOutput.cpp (modified) (2 diffs)
-
Modules/webaudio/AudioParam.cpp (modified) (2 diffs)
-
Modules/webaudio/AudioParamTimeline.cpp (modified) (1 diff)
-
Modules/webaudio/AudioScheduledSourceNode.cpp (modified) (1 diff)
-
Modules/webaudio/BiquadDSPKernel.cpp (modified) (2 diffs)
-
Modules/webaudio/BiquadProcessor.cpp (modified) (1 diff)
-
Modules/webaudio/ConstantSourceNode.cpp (modified) (2 diffs)
-
Modules/webaudio/ConstantSourceNode.h (modified) (1 diff)
-
Modules/webaudio/ConvolverNode.cpp (modified) (2 diffs)
-
Modules/webaudio/DelayDSPKernel.cpp (modified) (2 diffs)
-
Modules/webaudio/DynamicsCompressorNode.cpp (modified) (2 diffs)
-
Modules/webaudio/GainNode.cpp (modified) (2 diffs)
-
Modules/webaudio/OfflineAudioContext.cpp (modified) (1 diff)
-
Modules/webaudio/OfflineAudioDestinationNode.cpp (modified) (5 diffs)
-
Modules/webaudio/OfflineAudioDestinationNode.h (modified) (1 diff)
-
Modules/webaudio/OscillatorNode.cpp (modified) (2 diffs)
-
Modules/webaudio/OscillatorNode.h (modified) (1 diff)
-
Modules/webaudio/PannerNode.cpp (modified) (3 diffs)
-
Modules/webaudio/RealtimeAnalyser.cpp (modified) (1 diff)
-
Modules/webaudio/ScriptProcessorNode.cpp (modified) (2 diffs)
-
Modules/webaudio/StereoPannerNode.cpp (modified) (3 diffs)
-
Modules/webaudio/StereoPannerNode.h (modified) (1 diff)
-
Modules/webaudio/WaveShaperDSPKernel.cpp (modified) (5 diffs)
-
platform/audio/AudioResamplerKernel.cpp (modified) (3 diffs)
-
platform/audio/AudioResamplerKernel.h (modified) (1 diff)
-
platform/audio/AudioUtilities.h (modified) (1 diff)
-
platform/audio/Biquad.cpp (modified) (2 diffs)
-
platform/audio/Biquad.h (modified) (1 diff)
-
platform/audio/HRTFPanner.cpp (modified) (4 diffs)
-
platform/audio/IIRFilter.cpp (modified) (6 diffs)
-
platform/audio/cocoa/AudioDestinationCocoa.cpp (modified) (6 diffs)
-
platform/audio/cocoa/MediaSessionManagerCocoa.mm (modified) (4 diffs)
-
platform/audio/gstreamer/AudioDestinationGStreamer.cpp (modified) (5 diffs)
-
platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r267539 r267541 1 2020-09-24 Chris Dumez <cdumez@apple.com> 2 3 Declare render quantum size constant in AudioUtilities.h 4 https://bugs.webkit.org/show_bug.cgi?id=216935 5 6 Reviewed by Eric Carlson. 7 8 Declare render quantum size [1] constant in AudioUtilities.h so that it can be used in both 9 platform/ and Modules/webaudio/. Also update the code so that we have a single constant 10 instead of many. 11 12 [1] https://www.w3.org/TR/webaudio/#render-quantum-size 13 14 * Modules/webaudio/AudioListener.cpp: 15 (WebCore::AudioListener::AudioListener): 16 * Modules/webaudio/AudioNode.h: 17 * Modules/webaudio/AudioNodeInput.cpp: 18 (WebCore::AudioNodeInput::AudioNodeInput): 19 (WebCore::AudioNodeInput::updateInternalBus): 20 * Modules/webaudio/AudioNodeOutput.cpp: 21 (WebCore::AudioNodeOutput::AudioNodeOutput): 22 (WebCore::AudioNodeOutput::updateInternalBus): 23 * Modules/webaudio/AudioParam.cpp: 24 (WebCore::AudioParam::calculateFinalValues): 25 (WebCore::AudioParam::calculateTimelineValues): 26 * Modules/webaudio/AudioParamTimeline.cpp: 27 (WebCore::AudioParamTimeline::valueForContextTime): 28 * Modules/webaudio/AudioScheduledSourceNode.cpp: 29 (WebCore::AudioScheduledSourceNode::updateSchedulingInfo): 30 * Modules/webaudio/BiquadDSPKernel.cpp: 31 (WebCore::BiquadDSPKernel::updateCoefficientsIfNecessary): 32 * Modules/webaudio/BiquadProcessor.cpp: 33 (WebCore::BiquadProcessor::processOnlyAudioParams): 34 * Modules/webaudio/ConstantSourceNode.cpp: 35 (WebCore::ConstantSourceNode::ConstantSourceNode): 36 * Modules/webaudio/ConstantSourceNode.h: 37 * Modules/webaudio/ConvolverNode.cpp: 38 (WebCore::ConvolverNode::setBuffer): 39 * Modules/webaudio/DelayDSPKernel.cpp: 40 (WebCore::DelayDSPKernel::DelayDSPKernel): 41 (WebCore::DelayDSPKernel::processOnlyAudioParams): 42 * Modules/webaudio/DynamicsCompressorNode.cpp: 43 (WebCore::DynamicsCompressorNode::processOnlyAudioParams): 44 * Modules/webaudio/GainNode.cpp: 45 (WebCore::GainNode::GainNode): 46 (WebCore::GainNode::processOnlyAudioParams): 47 * Modules/webaudio/OfflineAudioContext.cpp: 48 (WebCore::OfflineAudioContext::suspendOfflineRendering): 49 * Modules/webaudio/OfflineAudioDestinationNode.cpp: 50 (WebCore::OfflineAudioDestinationNode::OfflineAudioDestinationNode): 51 (WebCore::OfflineAudioDestinationNode::offlineRender): 52 * Modules/webaudio/OfflineAudioDestinationNode.h: 53 * Modules/webaudio/OscillatorNode.cpp: 54 (WebCore::OscillatorNode::OscillatorNode): 55 * Modules/webaudio/OscillatorNode.h: 56 * Modules/webaudio/PannerNode.cpp: 57 (WebCore::PannerNode::processOnlyAudioParams): 58 (WebCore::PannerNode::processSampleAccurateValues): 59 * Modules/webaudio/RealtimeAnalyser.cpp: 60 (WebCore::RealtimeAnalyser::RealtimeAnalyser): 61 * Modules/webaudio/ScriptProcessorNode.cpp: 62 (WebCore::ScriptProcessorNode::ScriptProcessorNode): 63 * Modules/webaudio/StereoPannerNode.cpp: 64 (WebCore::StereoPannerNode::StereoPannerNode): 65 (WebCore::StereoPannerNode::processOnlyAudioParams): 66 * Modules/webaudio/StereoPannerNode.h: 67 * Modules/webaudio/WaveShaperDSPKernel.cpp: 68 (WebCore::WaveShaperDSPKernel::lazyInitializeOversampling): 69 (WebCore::WaveShaperDSPKernel::processCurve2x): 70 (WebCore::WaveShaperDSPKernel::processCurve4x): 71 * platform/audio/AudioResamplerKernel.cpp: 72 (WebCore::AudioResamplerKernel::AudioResamplerKernel): 73 (WebCore::AudioResamplerKernel::getSourcePointer): 74 (WebCore::AudioResamplerKernel::process): 75 * platform/audio/AudioResamplerKernel.h: 76 * platform/audio/AudioUtilities.h: 77 * platform/audio/Biquad.cpp: 78 (WebCore::Biquad::Biquad): 79 * platform/audio/Biquad.h: 80 * platform/audio/HRTFPanner.cpp: 81 (WebCore::HRTFPanner::HRTFPanner): 82 (WebCore::HRTFPanner::pan): 83 * platform/audio/IIRFilter.cpp: 84 (WebCore::IIRFilter::tailTime): 85 * platform/audio/cocoa/AudioDestinationCocoa.cpp: 86 (WebCore::AudioDestinationCocoa::AudioDestinationCocoa): 87 (WebCore::AudioDestinationCocoa::render): 88 (WebCore::AudioDestinationCocoa::provideInput): 89 * platform/audio/cocoa/MediaSessionManagerCocoa.mm: 90 (WebCore::MediaSessionManagerCocoa::updateSessionState): 91 * platform/audio/gstreamer/AudioDestinationGStreamer.cpp: 92 (WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer): 93 (WebCore::AudioDestinationGStreamer::framesPerBuffer const): 94 * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp: 95 (webkit_web_audio_src_class_init): 96 1 97 2020-09-24 Youenn Fablet <youenn@apple.com> 2 98 -
trunk/Source/WebCore/Modules/webaudio/AudioListener.cpp
r266319 r267541 36 36 #include "AudioBus.h" 37 37 #include "AudioParam.h" 38 #include "AudioUtilities.h" 38 39 39 40 namespace WebCore { … … 49 50 , m_upY(AudioParam::create(context, "upY", 1.0, -FLT_MAX, FLT_MAX, AutomationRate::ARate)) 50 51 , m_upZ(AudioParam::create(context, "upZ", 0.0, -FLT_MAX, FLT_MAX, AutomationRate::ARate)) 51 , m_positionXValues(Audio Node::ProcessingSizeInFrames)52 , m_positionYValues(Audio Node::ProcessingSizeInFrames)53 , m_positionZValues(Audio Node::ProcessingSizeInFrames)54 , m_forwardXValues(Audio Node::ProcessingSizeInFrames)55 , m_forwardYValues(Audio Node::ProcessingSizeInFrames)56 , m_forwardZValues(Audio Node::ProcessingSizeInFrames)57 , m_upXValues(Audio Node::ProcessingSizeInFrames)58 , m_upYValues(Audio Node::ProcessingSizeInFrames)59 , m_upZValues(Audio Node::ProcessingSizeInFrames)52 , m_positionXValues(AudioUtilities::renderQuantumSize) 53 , m_positionYValues(AudioUtilities::renderQuantumSize) 54 , m_positionZValues(AudioUtilities::renderQuantumSize) 55 , m_forwardXValues(AudioUtilities::renderQuantumSize) 56 , m_forwardYValues(AudioUtilities::renderQuantumSize) 57 , m_forwardZValues(AudioUtilities::renderQuantumSize) 58 , m_upXValues(AudioUtilities::renderQuantumSize) 59 , m_upYValues(AudioUtilities::renderQuantumSize) 60 , m_upZValues(AudioUtilities::renderQuantumSize) 60 61 { 61 62 } -
trunk/Source/WebCore/Modules/webaudio/AudioNode.h
r267537 r267541 60 60 WTF_MAKE_ISO_ALLOCATED(AudioNode); 61 61 public: 62 enum { ProcessingSizeInFrames = 128 };63 64 62 explicit AudioNode(BaseAudioContext&); 65 63 virtual ~AudioNode(); -
trunk/Source/WebCore/Modules/webaudio/AudioNodeInput.cpp
r266518 r267541 42 42 { 43 43 // Set to mono by default. 44 m_internalSummingBus = AudioBus::create(1, Audio Node::ProcessingSizeInFrames);44 m_internalSummingBus = AudioBus::create(1, AudioUtilities::renderQuantumSize); 45 45 } 46 46 … … 142 142 return; 143 143 144 m_internalSummingBus = AudioBus::create(numberOfInputChannels, Audio Node::ProcessingSizeInFrames);144 m_internalSummingBus = AudioBus::create(numberOfInputChannels, AudioUtilities::renderQuantumSize); 145 145 } 146 146 -
trunk/Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp
r196603 r267541 48 48 ASSERT(numberOfChannels <= AudioContext::maxNumberOfChannels()); 49 49 50 m_internalBus = AudioBus::create(numberOfChannels, Audio Node::ProcessingSizeInFrames);50 m_internalBus = AudioBus::create(numberOfChannels, AudioUtilities::renderQuantumSize); 51 51 } 52 52 … … 72 72 return; 73 73 74 m_internalBus = AudioBus::create(numberOfChannels(), Audio Node::ProcessingSizeInFrames);74 m_internalBus = AudioBus::create(numberOfChannels(), AudioUtilities::renderQuantumSize); 75 75 } 76 76 -
trunk/Source/WebCore/Modules/webaudio/AudioParam.cpp
r266788 r267541 280 280 281 281 // Render audio from this output. 282 AudioBus* connectionBus = output->pull(0, Audio Node::ProcessingSizeInFrames);282 AudioBus* connectionBus = output->pull(0, AudioUtilities::renderQuantumSize); 283 283 284 284 // Sum, with unity-gain. … … 301 301 { 302 302 // Calculate values for this render quantum. 303 // Normally numberOfValues will equal Audio Node::ProcessingSizeInFrames(the render quantum size).303 // Normally numberOfValues will equal AudioUtilities::renderQuantumSize (the render quantum size). 304 304 double sampleRate = context().sampleRate(); 305 305 size_t startFrame = context().currentSampleFrame(); -
trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp
r267435 r267541 330 330 size_t startFrame = context.currentSampleFrame(); 331 331 size_t endFrame = startFrame + 1; 332 double controlRate = sampleRate / Audio Node::ProcessingSizeInFrames; // one parameter change per render quantum332 double controlRate = sampleRate / AudioUtilities::renderQuantumSize; // one parameter change per render quantum 333 333 value = valuesForTimeRange(startFrame, endFrame, defaultValue, minValue, maxValue, &value, 1, sampleRate, controlRate); 334 334 return value; -
trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp
r267443 r267541 65 65 startFrameOffset = 0; 66 66 67 ASSERT(quantumFrameSize == Audio Node::ProcessingSizeInFrames);68 if (quantumFrameSize != Audio Node::ProcessingSizeInFrames)67 ASSERT(quantumFrameSize == AudioUtilities::renderQuantumSize); 68 if (quantumFrameSize != AudioUtilities::renderQuantumSize) 69 69 return; 70 70 -
trunk/Source/WebCore/Modules/webaudio/BiquadDSPKernel.cpp
r266417 r267541 29 29 #include "BiquadDSPKernel.h" 30 30 31 #include "AudioUtilities.h" 31 32 #include "Biquad.h" 32 33 #include "BiquadProcessor.h" … … 59 60 if (biquadProcessor()->filterCoefficientsDirty()) { 60 61 if (biquadProcessor()->hasSampleAccurateValues() && biquadProcessor()->shouldUseARate()) { 61 float cutoffFrequency[ Biquad::MaxFramesToProcess];62 float q[ Biquad::MaxFramesToProcess];63 float gain[ Biquad::MaxFramesToProcess];64 float detune[ Biquad::MaxFramesToProcess]; // in Cents65 66 ASSERT(framesToProcess <= Biquad::MaxFramesToProcess);62 float cutoffFrequency[AudioUtilities::renderQuantumSize]; 63 float q[AudioUtilities::renderQuantumSize]; 64 float gain[AudioUtilities::renderQuantumSize]; 65 float detune[AudioUtilities::renderQuantumSize]; // in Cents 66 67 ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize); 67 68 68 69 biquadProcessor()->parameter1().calculateSampleAccurateValues(cutoffFrequency, framesToProcess); -
trunk/Source/WebCore/Modules/webaudio/BiquadProcessor.cpp
r267432 r267541 111 111 void BiquadProcessor::processOnlyAudioParams(size_t framesToProcess) 112 112 { 113 float values[Audio Node::ProcessingSizeInFrames];114 ASSERT(framesToProcess <= Audio Node::ProcessingSizeInFrames);113 float values[AudioUtilities::renderQuantumSize]; 114 ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize); 115 115 116 116 m_parameter1->calculateSampleAccurateValues(values, framesToProcess); -
trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.cpp
r266221 r267541 32 32 #include "AudioNodeOutput.h" 33 33 #include "AudioParam.h" 34 #include "AudioUtilities.h" 34 35 #include "ConstantSourceOptions.h" 35 36 #include <wtf/IsoMallocInlines.h> … … 56 57 : AudioScheduledSourceNode(context) 57 58 , m_offset(AudioParam::create(context, "offset"_s, offset, -FLT_MAX, FLT_MAX, AutomationRate::ARate)) 59 , m_sampleAccurateValues(AudioUtilities::renderQuantumSize) 58 60 { 59 61 setNodeType(NodeTypeConstant); -
trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.h
r267537 r267541 58 58 59 59 // Stores sample-accurate values calculated. 60 AudioFloatArray m_sampleAccurateValues { AudioNode::ProcessingSizeInFrames };60 AudioFloatArray m_sampleAccurateValues; 61 61 }; 62 62 -
trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp
r267537 r267541 33 33 #include "AudioNodeInput.h" 34 34 #include "AudioNodeOutput.h" 35 #include "AudioUtilities.h" 35 36 #include "Reverb.h" 36 37 #include <wtf/IsoMallocInlines.h> … … 147 148 // Create the reverb with the given impulse response. 148 149 bool useBackgroundThreads = !context().isOfflineContext(); 149 auto reverb = makeUnique<Reverb>(bufferBus.get(), Audio Node::ProcessingSizeInFrames, MaxFFTSize, useBackgroundThreads, m_normalize);150 auto reverb = makeUnique<Reverb>(bufferBus.get(), AudioUtilities::renderQuantumSize, MaxFFTSize, useBackgroundThreads, m_normalize); 150 151 151 152 { -
trunk/Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp
r267432 r267541 36 36 DelayDSPKernel::DelayDSPKernel(DelayProcessor* processor) 37 37 : AudioDSPKernel(processor) 38 , m_delayTimes(Audio Node::ProcessingSizeInFrames)38 , m_delayTimes(AudioUtilities::renderQuantumSize) 39 39 { 40 40 ASSERT(processor && processor->sampleRate() > 0); … … 139 139 return; 140 140 141 float values[Audio Node::ProcessingSizeInFrames];142 ASSERT(framesToProcess <= Audio Node::ProcessingSizeInFrames);141 float values[AudioUtilities::renderQuantumSize]; 142 ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize); 143 143 144 144 delayProcessor()->delayTime().calculateSampleAccurateValues(values, framesToProcess); -
trunk/Source/WebCore/Modules/webaudio/DynamicsCompressorNode.cpp
r267537 r267541 33 33 #include "AudioNodeInput.h" 34 34 #include "AudioNodeOutput.h" 35 #include "AudioUtilities.h" 35 36 #include "DynamicsCompressor.h" 36 37 #include "WebKitDynamicsCompressorNode.h" … … 106 107 void DynamicsCompressorNode::processOnlyAudioParams(size_t framesToProcess) 107 108 { 108 float values[Audio Node::ProcessingSizeInFrames];109 ASSERT(framesToProcess <= Audio Node::ProcessingSizeInFrames);109 float values[AudioUtilities::renderQuantumSize]; 110 ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize); 110 111 111 112 m_threshold->calculateSampleAccurateValues(values, framesToProcess); -
trunk/Source/WebCore/Modules/webaudio/GainNode.cpp
r267537 r267541 58 58 GainNode::GainNode(BaseAudioContext& context) 59 59 : AudioNode(context) 60 , m_sampleAccurateGainValues(Audio Node::ProcessingSizeInFrames) // FIXME: can probably share temp buffer in context60 , m_sampleAccurateGainValues(AudioUtilities::renderQuantumSize) // FIXME: can probably share temp buffer in context 61 61 , m_gain(AudioParam::create(context, "gain"_s, 1.0, -FLT_MAX, FLT_MAX, AutomationRate::ARate)) 62 62 { … … 105 105 void GainNode::processOnlyAudioParams(size_t framesToProcess) 106 106 { 107 float values[Audio Node::ProcessingSizeInFrames];108 ASSERT(framesToProcess <= Audio Node::ProcessingSizeInFrames);107 float values[AudioUtilities::renderQuantumSize]; 108 ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize); 109 109 110 110 m_gain->calculateSampleAccurateValues(values, framesToProcess); -
trunk/Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp
r267151 r267541 143 143 144 144 size_t frame = AudioUtilities::timeToSampleFrame(suspendTime, sampleRate()); 145 frame = OfflineAudioDestinationNode::renderQuantumSize * ((frame + OfflineAudioDestinationNode::renderQuantumSize - 1) / OfflineAudioDestinationNode::renderQuantumSize);145 frame = AudioUtilities::renderQuantumSize * ((frame + AudioUtilities::renderQuantumSize - 1) / AudioUtilities::renderQuantumSize); 146 146 if (frame < currentSampleFrame()) { 147 147 promise->reject(Exception { InvalidStateError, "Suspension frame is earlier than current frame"_s }); -
trunk/Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp
r267505 r267541 31 31 #include "AudioBus.h" 32 32 #include "AudioContext.h" 33 #include "AudioUtilities.h" 33 34 #include "HRTFDatabaseLoader.h" 34 35 #include <algorithm> … … 39 40 40 41 WTF_MAKE_ISO_ALLOCATED_IMPL(OfflineAudioDestinationNode); 41 42 const size_t OfflineAudioDestinationNode::renderQuantumSize = 128;43 42 44 43 OfflineAudioDestinationNode::OfflineAudioDestinationNode(BaseAudioContext& context, unsigned numberOfChannels, RefPtr<AudioBuffer>&& renderTarget) … … 48 47 , m_framesToProcess(m_renderTarget ? m_renderTarget->length() : 0) 49 48 { 50 m_renderBus = AudioBus::create(numberOfChannels, renderQuantumSize);49 m_renderBus = AudioBus::create(numberOfChannels, AudioUtilities::renderQuantumSize); 51 50 initializeDefaultNodeOptions(numberOfChannels, ChannelCountMode::Explicit, ChannelInterpretation::Speakers); 52 51 } … … 135 134 return OfflineRenderResult::Failure; 136 135 137 bool isRenderBusAllocated = m_renderBus->length() >= renderQuantumSize;136 bool isRenderBusAllocated = m_renderBus->length() >= AudioUtilities::renderQuantumSize; 138 137 ASSERT(isRenderBusAllocated); 139 138 if (!isRenderBusAllocated) … … 149 148 150 149 // Render one render quantum. 151 render(0, m_renderBus.get(), renderQuantumSize, { });150 render(0, m_renderBus.get(), AudioUtilities::renderQuantumSize, { }); 152 151 153 size_t framesAvailableToCopy = std::min(m_framesToProcess, renderQuantumSize);152 size_t framesAvailableToCopy = std::min(m_framesToProcess, AudioUtilities::renderQuantumSize); 154 153 155 154 for (unsigned channelIndex = 0; channelIndex < numberOfChannels; ++channelIndex) { -
trunk/Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.h
r267147 r267541 55 55 float sampleRate() const final { return m_renderTarget->sampleRate(); } 56 56 57 static const size_t renderQuantumSize;58 59 57 private: 60 58 OfflineAudioDestinationNode(BaseAudioContext&, unsigned numberOfChannels, RefPtr<AudioBuffer>&& renderTarget); -
trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp
r267537 r267541 31 31 #include "AudioNodeOutput.h" 32 32 #include "AudioParam.h" 33 #include "AudioUtilities.h" 33 34 #include "PeriodicWave.h" 34 35 #include "VectorMath.h" … … 95 96 , m_frequency(AudioParam::create(context, "frequency"_s, options.frequency, -context.sampleRate() / 2, context.sampleRate() / 2, AutomationRate::ARate)) 96 97 , 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)) 98 , m_phaseIncrements(AudioUtilities::renderQuantumSize) 99 , m_detuneValues(AudioUtilities::renderQuantumSize) 97 100 { 98 101 setNodeType(NodeTypeOscillator); -
trunk/Source/WebCore/Modules/webaudio/OscillatorNode.h
r267537 r267541 89 89 90 90 // Stores sample-accurate values calculated according to frequency and detune. 91 AudioFloatArray m_phaseIncrements { AudioNode::ProcessingSizeInFrames };92 AudioFloatArray m_detuneValues { AudioNode::ProcessingSizeInFrames };91 AudioFloatArray m_phaseIncrements; 92 AudioFloatArray m_detuneValues; 93 93 94 94 RefPtr<PeriodicWave> m_periodicWave; -
trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp
r267537 r267541 184 184 void PannerNode::processOnlyAudioParams(size_t framesToProcess) 185 185 { 186 float values[Audio Node::ProcessingSizeInFrames];187 ASSERT(framesToProcess <= Audio Node::ProcessingSizeInFrames);186 float values[AudioUtilities::renderQuantumSize]; 187 ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize); 188 188 189 189 m_positionX->calculateSampleAccurateValues(values, framesToProcess); … … 202 202 // Get the sample accurate values from all of the AudioParams, including the 203 203 // values from the AudioListener. 204 float pannerX[Audio Node::ProcessingSizeInFrames];205 float pannerY[Audio Node::ProcessingSizeInFrames];206 float pannerZ[Audio Node::ProcessingSizeInFrames];207 208 float orientationX[Audio Node::ProcessingSizeInFrames];209 float orientationY[Audio Node::ProcessingSizeInFrames];210 float orientationZ[Audio Node::ProcessingSizeInFrames];204 float pannerX[AudioUtilities::renderQuantumSize]; 205 float pannerY[AudioUtilities::renderQuantumSize]; 206 float pannerZ[AudioUtilities::renderQuantumSize]; 207 208 float orientationX[AudioUtilities::renderQuantumSize]; 209 float orientationY[AudioUtilities::renderQuantumSize]; 210 float orientationZ[AudioUtilities::renderQuantumSize]; 211 211 212 212 m_positionX->calculateSampleAccurateValues(pannerX, framesToProcess); … … 218 218 219 219 // Get the automation values from the listener. 220 const float* listenerX = listener().positionXValues(Audio Node::ProcessingSizeInFrames);221 const float* listenerY = listener().positionYValues(Audio Node::ProcessingSizeInFrames);222 const float* listenerZ = listener().positionZValues(Audio Node::ProcessingSizeInFrames);223 224 const float* forwardX = listener().forwardXValues(Audio Node::ProcessingSizeInFrames);225 const float* forwardY = listener().forwardYValues(Audio Node::ProcessingSizeInFrames);226 const float* forwardZ = listener().forwardZValues(Audio Node::ProcessingSizeInFrames);227 228 const float* upX = listener().upXValues(Audio Node::ProcessingSizeInFrames);229 const float* upY = listener().upYValues(Audio Node::ProcessingSizeInFrames);230 const float* upZ = listener().upZValues(Audio Node::ProcessingSizeInFrames);220 const float* listenerX = listener().positionXValues(AudioUtilities::renderQuantumSize); 221 const float* listenerY = listener().positionYValues(AudioUtilities::renderQuantumSize); 222 const float* listenerZ = listener().positionZValues(AudioUtilities::renderQuantumSize); 223 224 const float* forwardX = listener().forwardXValues(AudioUtilities::renderQuantumSize); 225 const float* forwardY = listener().forwardYValues(AudioUtilities::renderQuantumSize); 226 const float* forwardZ = listener().forwardZValues(AudioUtilities::renderQuantumSize); 227 228 const float* upX = listener().upXValues(AudioUtilities::renderQuantumSize); 229 const float* upY = listener().upYValues(AudioUtilities::renderQuantumSize); 230 const float* upZ = listener().upZValues(AudioUtilities::renderQuantumSize); 231 231 232 232 // Compute the azimuth, elevation, and total gains for each position. 233 double azimuth[Audio Node::ProcessingSizeInFrames];234 double elevation[Audio Node::ProcessingSizeInFrames];235 float totalGain[Audio Node::ProcessingSizeInFrames];233 double azimuth[AudioUtilities::renderQuantumSize]; 234 double elevation[AudioUtilities::renderQuantumSize]; 235 float totalGain[AudioUtilities::renderQuantumSize]; 236 236 237 237 for (size_t k = 0; k < framesToProcess; ++k) { -
trunk/Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp
r267537 r267541 56 56 : m_inputBuffer(InputBufferSize) 57 57 , m_writeIndex(0) 58 , m_downmixBus(AudioBus::create(1, Audio Node::ProcessingSizeInFrames))58 , m_downmixBus(AudioBus::create(1, AudioUtilities::renderQuantumSize)) 59 59 , m_fftSize(DefaultFFTSize) 60 60 , m_magnitudeBuffer(DefaultFFTSize / 2) -
trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp
r267537 r267541 35 35 #include "AudioNodeOutput.h" 36 36 #include "AudioProcessingEvent.h" 37 #include "AudioUtilities.h" 37 38 #include "Document.h" 38 39 #include "EventNames.h" … … 59 60 , m_numberOfInputChannels(numberOfInputChannels) 60 61 , m_numberOfOutputChannels(numberOfOutputChannels) 61 , m_internalInputBus(AudioBus::create(numberOfInputChannels, Audio Node::ProcessingSizeInFrames, false))62 , m_internalInputBus(AudioBus::create(numberOfInputChannels, AudioUtilities::renderQuantumSize, false)) 62 63 { 63 64 // Regardless of the allowed buffer sizes, we still need to process at the granularity of the AudioNode. 64 if (m_bufferSize < Audio Node::ProcessingSizeInFrames)65 m_bufferSize = Audio Node::ProcessingSizeInFrames;65 if (m_bufferSize < AudioUtilities::renderQuantumSize) 66 m_bufferSize = AudioUtilities::renderQuantumSize; 66 67 67 68 ASSERT(numberOfInputChannels <= AudioContext::maxNumberOfChannels()); -
trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.cpp
r267432 r267541 33 33 #include "AudioNodeInput.h" 34 34 #include "AudioNodeOutput.h" 35 #include "AudioUtilities.h" 35 36 #include <wtf/IsoMallocInlines.h> 36 37 … … 58 59 : AudioNode(context) 59 60 , m_pan(AudioParam::create(context, "pan"_s, pan, -1, 1, AutomationRate::ARate)) 61 , m_sampleAccurateValues(AudioUtilities::renderQuantumSize) 60 62 { 61 63 setNodeType(NodeTypeStereo); … … 103 105 void StereoPannerNode::processOnlyAudioParams(size_t framesToProcess) 104 106 { 105 float values[Audio Node::ProcessingSizeInFrames];106 ASSERT(framesToProcess <= Audio Node::ProcessingSizeInFrames);107 float values[AudioUtilities::renderQuantumSize]; 108 ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize); 107 109 108 110 m_pan->calculateSampleAccurateValues(values, framesToProcess); -
trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.h
r267537 r267541 62 62 63 63 Ref<AudioParam> m_pan; 64 AudioFloatArray m_sampleAccurateValues { AudioNode::ProcessingSizeInFrames };64 AudioFloatArray m_sampleAccurateValues; 65 65 }; 66 66 -
trunk/Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp
r266417 r267541 29 29 #include "WaveShaperDSPKernel.h" 30 30 31 #include "AudioUtilities.h" 31 32 #include "WaveShaperProcessor.h" 32 33 #include <algorithm> … … 34 35 #include <wtf/Threading.h> 35 36 36 const unsigned RenderingQuantum = 128;37 38 37 namespace WebCore { 39 38 … … 50 49 51 50 if (!m_tempBuffer) { 52 m_tempBuffer = makeUnique<AudioFloatArray>( RenderingQuantum* 2);53 m_tempBuffer2 = makeUnique<AudioFloatArray>( RenderingQuantum* 4);54 m_upSampler = makeUnique<UpSampler>( RenderingQuantum);55 m_downSampler = makeUnique<DownSampler>( RenderingQuantum* 2);56 m_upSampler2 = makeUnique<UpSampler>( RenderingQuantum* 2);57 m_downSampler2 = makeUnique<DownSampler>( RenderingQuantum* 4);51 m_tempBuffer = makeUnique<AudioFloatArray>(AudioUtilities::renderQuantumSize * 2); 52 m_tempBuffer2 = makeUnique<AudioFloatArray>(AudioUtilities::renderQuantumSize * 4); 53 m_upSampler = makeUnique<UpSampler>(AudioUtilities::renderQuantumSize); 54 m_downSampler = makeUnique<DownSampler>(AudioUtilities::renderQuantumSize * 2); 55 m_upSampler2 = makeUnique<UpSampler>(AudioUtilities::renderQuantumSize * 2); 56 m_downSampler2 = makeUnique<DownSampler>(AudioUtilities::renderQuantumSize * 4); 58 57 } 59 58 } … … 118 117 void WaveShaperDSPKernel::processCurve2x(const float* source, float* destination, size_t framesToProcess) 119 118 { 120 bool isSafe = framesToProcess == RenderingQuantum;119 bool isSafe = framesToProcess == AudioUtilities::renderQuantumSize; 121 120 ASSERT(isSafe); 122 121 if (!isSafe) … … 135 134 void WaveShaperDSPKernel::processCurve4x(const float* source, float* destination, size_t framesToProcess) 136 135 { 137 bool isSafe = framesToProcess == RenderingQuantum;136 bool isSafe = framesToProcess == AudioUtilities::renderQuantumSize; 138 137 ASSERT(isSafe); 139 138 if (!isSafe) -
trunk/Source/WebCore/platform/audio/AudioResamplerKernel.cpp
r159027 r267541 30 30 31 31 #include "AudioResampler.h" 32 #include "AudioUtilities.h" 32 33 #include <algorithm> 33 34 34 35 namespace WebCore { 35 36 const size_t AudioResamplerKernel::MaxFramesToProcess = 128;37 36 38 37 AudioResamplerKernel::AudioResamplerKernel(AudioResampler* resampler) 39 38 : m_resampler(resampler) 40 39 // The buffer size must be large enough to hold up to two extra sample frames for the linear interpolation. 41 , m_sourceBuffer(2 + static_cast<int>( MaxFramesToProcess* AudioResampler::MaxRate))40 , m_sourceBuffer(2 + static_cast<int>(AudioUtilities::renderQuantumSize * AudioResampler::MaxRate)) 42 41 , m_virtualReadIndex(0.0) 43 42 , m_fillIndex(0) … … 49 48 float* AudioResamplerKernel::getSourcePointer(size_t framesToProcess, size_t* numberOfSourceFramesNeededP) 50 49 { 51 ASSERT(framesToProcess <= MaxFramesToProcess);50 ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize); 52 51 53 52 // Calculate the next "virtual" index. After process() is called, m_virtualReadIndex will equal this value. … … 74 73 void AudioResamplerKernel::process(float* destination, size_t framesToProcess) 75 74 { 76 ASSERT(framesToProcess <= MaxFramesToProcess);75 ASSERT(framesToProcess <= AudioUtilities::renderQuantumSize); 77 76 78 77 float* source = m_sourceBuffer.data(); -
trunk/Source/WebCore/platform/audio/AudioResamplerKernel.h
r249022 r267541 46 46 // Given a number of frames to process (for subsequent call to process()), it returns a pointer and numberOfSourceFramesNeeded 47 47 // where sample data should be copied. This sample data provides the input to the resampler when process() is called. 48 // framesToProcess must be less than or equal to MaxFramesToProcess.48 // framesToProcess must be less than or equal to AudioUtilities::renderQuantumSize. 49 49 float* getSourcePointer(size_t framesToProcess, size_t* numberOfSourceFramesNeeded); 50 50 51 51 // process() resamples framesToProcess frames from the source into destination. 52 52 // Each call to process() must be preceded by a call to getSourcePointer() so that source input may be supplied. 53 // framesToProcess must be less than or equal to MaxFramesToProcess.53 // framesToProcess must be less than or equal to AudioUtilities::renderQuantumSize. 54 54 void process(float* destination, size_t framesToProcess); 55 55 56 56 // Resets the processing state. 57 57 void reset(); 58 59 static const size_t MaxFramesToProcess;60 58 61 59 private: -
trunk/Source/WebCore/platform/audio/AudioUtilities.h
r267202 r267541 29 29 30 30 namespace AudioUtilities { 31 32 // https://www.w3.org/TR/webaudio/#render-quantum-size 33 constexpr size_t renderQuantumSize = 128; 31 34 32 35 // Standard functions for converting to and from decibel values from linear. -
trunk/Source/WebCore/platform/audio/Biquad.cpp
r267444 r267541 33 33 #include "Biquad.h" 34 34 35 #include "AudioUtilities.h" 35 36 #include "DenormalDisabler.h" 36 37 #include <algorithm> … … 60 61 // Allocate enough space for the a-rate filter coefficients to handle a 61 62 // rendering quantum of 128 frames. 62 m_b0.allocate( MaxFramesToProcess);63 m_b1.allocate( MaxFramesToProcess);64 m_b2.allocate( MaxFramesToProcess);65 m_a1.allocate( MaxFramesToProcess);66 m_a2.allocate( MaxFramesToProcess);63 m_b0.allocate(AudioUtilities::renderQuantumSize); 64 m_b1.allocate(AudioUtilities::renderQuantumSize); 65 m_b2.allocate(AudioUtilities::renderQuantumSize); 66 m_a1.allocate(AudioUtilities::renderQuantumSize); 67 m_a2.allocate(AudioUtilities::renderQuantumSize); 67 68 68 69 // Initialize as pass-thru (straight-wire, no filter effect) -
trunk/Source/WebCore/platform/audio/Biquad.h
r266398 r267541 46 46 Biquad(); 47 47 ~Biquad(); 48 49 static constexpr size_t MaxFramesToProcess = 128;50 48 51 49 void process(const float* sourceP, float* destP, size_t framesToProcess); -
trunk/Source/WebCore/platform/audio/HRTFPanner.cpp
r266417 r267541 30 30 31 31 #include "AudioBus.h" 32 #include "AudioUtilities.h" 32 33 #include "FFTConvolver.h" 33 34 #include "HRTFDatabase.h" … … 43 44 44 45 const int UninitializedAzimuth = -1; 45 const unsigned RenderingQuantum = 128;46 46 47 47 HRTFPanner::HRTFPanner(float sampleRate, HRTFDatabaseLoader* databaseLoader) … … 62 62 , m_delayLineL(MaxDelayTimeSeconds, sampleRate) 63 63 , m_delayLineR(MaxDelayTimeSeconds, sampleRate) 64 , m_tempL1( RenderingQuantum)65 , m_tempR1( RenderingQuantum)66 , m_tempL2( RenderingQuantum)67 , m_tempR2( RenderingQuantum)64 , m_tempL1(AudioUtilities::renderQuantumSize) 65 , m_tempR1(AudioUtilities::renderQuantumSize) 66 , m_tempL2(AudioUtilities::renderQuantumSize) 67 , m_tempR2(AudioUtilities::renderQuantumSize) 68 68 { 69 69 ASSERT(databaseLoader); … … 219 219 } 220 220 221 // This algorithm currently requires that we process in power-of-two size chunks at least RenderingQuantum.221 // This algorithm currently requires that we process in power-of-two size chunks at least AudioUtilities::renderQuantumSize. 222 222 ASSERT(1UL << static_cast<int>(log2(framesToProcess)) == framesToProcess); 223 ASSERT(framesToProcess >= RenderingQuantum);224 225 const unsigned framesPerSegment = RenderingQuantum;223 ASSERT(framesToProcess >= AudioUtilities::renderQuantumSize); 224 225 const unsigned framesPerSegment = AudioUtilities::renderQuantumSize; 226 226 const unsigned numberOfSegments = framesToProcess / framesPerSegment; 227 227 -
trunk/Source/WebCore/platform/audio/IIRFilter.cpp
r266186 r267541 30 30 31 31 #include "AudioArray.h" 32 #include "AudioUtilities.h" 32 33 #include "VectorMath.h" 33 34 #include <algorithm> … … 36 37 37 38 namespace WebCore { 38 39 constexpr unsigned iirRenderingQuantum = 128;40 39 41 40 // The length of the memory buffers for the IIR filter. This MUST be a power of … … 189 188 190 189 // Number of render quanta needed to reach the max tail time. 191 int numberOfBlocks = std::ceil(sampleRate * maxTailTime / iirRenderingQuantum);190 int numberOfBlocks = std::ceil(sampleRate * maxTailTime / AudioUtilities::renderQuantumSize); 192 191 193 192 // Input and output buffers for filtering. 194 AudioFloatArray input( iirRenderingQuantum);195 AudioFloatArray output( iirRenderingQuantum);193 AudioFloatArray input(AudioUtilities::renderQuantumSize); 194 AudioFloatArray output(AudioUtilities::renderQuantumSize); 196 195 197 196 // Array to hold the max magnitudes … … 202 201 203 202 // Process the first block and get the max magnitude of the output. 204 process(input.data(), output.data(), iirRenderingQuantum);205 VectorMath::vmaxmgv(output.data(), 1, &magnitudes[0], iirRenderingQuantum);203 process(input.data(), output.data(), AudioUtilities::renderQuantumSize); 204 VectorMath::vmaxmgv(output.data(), 1, &magnitudes[0], AudioUtilities::renderQuantumSize); 206 205 207 206 // Process the rest of the signal, getting the max magnitude of the … … 210 209 211 210 for (int k = 1; k < numberOfBlocks; ++k) { 212 process(input.data(), output.data(), iirRenderingQuantum);213 VectorMath::vmaxmgv(output.data(), 1, &magnitudes[k], iirRenderingQuantum);211 process(input.data(), output.data(), AudioUtilities::renderQuantumSize); 212 VectorMath::vmaxmgv(output.data(), 1, &magnitudes[k], AudioUtilities::renderQuantumSize); 214 213 } 215 214 … … 229 228 // The magnitude first become lower than the threshold at the next block. 230 229 // Compute the corresponding time value value; that's the tail time. 231 return (index + 1) * iirRenderingQuantum/ sampleRate;230 return (index + 1) * AudioUtilities::renderQuantumSize / sampleRate; 232 231 } 233 232 -
trunk/Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp
r267036 r267541 31 31 #include "AudioBus.h" 32 32 #include "AudioSession.h" 33 #include "AudioUtilities.h" 33 34 #include "Logging.h" 34 35 #include "MultiChannelResampler.h" … … 37 38 namespace WebCore { 38 39 39 constexpr size_t kRenderBufferSize = 128; 40 41 constexpr size_t fifoSize = 96 * kRenderBufferSize; 40 constexpr size_t fifoSize = 96 * AudioUtilities::renderQuantumSize; 42 41 43 42 CreateAudioDestinationCocoaOverride AudioDestinationCocoa::createOverride = nullptr; … … 75 74 : m_outputUnit(0) 76 75 , m_callback(callback) 77 , m_outputBus(AudioBus::create(numberOfOutputChannels, kRenderBufferSize, false).releaseNonNull())78 , m_renderBus(AudioBus::create(numberOfOutputChannels, kRenderBufferSize).releaseNonNull())76 , m_outputBus(AudioBus::create(numberOfOutputChannels, AudioUtilities::renderQuantumSize, false).releaseNonNull()) 77 , m_renderBus(AudioBus::create(numberOfOutputChannels, AudioUtilities::renderQuantumSize).releaseNonNull()) 79 78 , m_fifo(makeUniqueRef<PushPullFIFO>(numberOfOutputChannels, fifoSize)) 80 79 , m_contextSampleRate(sampleRate) … … 85 84 if (sampleRate != hardwareSampleRate) { 86 85 double scaleFactor = static_cast<double>(sampleRate) / hardwareSampleRate; 87 m_resampler = makeUnique<MultiChannelResampler>(scaleFactor, numberOfOutputChannels, kRenderBufferSize);86 m_resampler = makeUnique<MultiChannelResampler>(scaleFactor, numberOfOutputChannels, AudioUtilities::renderQuantumSize); 88 87 } 89 88 } … … 177 176 size_t framesToRender = m_fifo->pull(m_outputBus.ptr(), numberOfFrames); 178 177 179 for (size_t pushedFrames = 0; pushedFrames < framesToRender; pushedFrames += kRenderBufferSize) {178 for (size_t pushedFrames = 0; pushedFrames < framesToRender; pushedFrames += AudioUtilities::renderQuantumSize) { 180 179 if (m_resampler) 181 m_resampler->process(this, m_renderBus.ptr(), kRenderBufferSize);180 m_resampler->process(this, m_renderBus.ptr(), AudioUtilities::renderQuantumSize); 182 181 else 183 m_callback.render(0, m_renderBus.ptr(), kRenderBufferSize, m_outputTimestamp);182 m_callback.render(0, m_renderBus.ptr(), AudioUtilities::renderQuantumSize, m_outputTimestamp); 184 183 185 184 m_fifo->push(m_renderBus.ptr()); … … 198 197 void AudioDestinationCocoa::provideInput(AudioBus* bus, size_t framesToProcess) 199 198 { 200 ASSERT_UNUSED(framesToProcess, framesToProcess == kRenderBufferSize);201 m_callback.render(0, bus, kRenderBufferSize, m_outputTimestamp);199 ASSERT_UNUSED(framesToProcess, framesToProcess == AudioUtilities::renderQuantumSize); 200 m_callback.render(0, bus, AudioUtilities::renderQuantumSize, m_outputTimestamp); 202 201 } 203 202 -
trunk/Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm
r266121 r267541 30 30 31 31 #import "AudioSession.h" 32 #import "AudioUtilities.h" 32 33 #import "DeprecatedGlobalSettings.h" 33 34 #import "HTMLMediaElement.h" … … 43 44 #import "MediaRemoteSoftLink.h" 44 45 45 static const size_t kWebAudioBufferSize = 128;46 46 static const size_t kLowPowerVideoBufferSize = 4096; 47 47 … … 103 103 104 104 if (webAudioCount) 105 AudioSession::sharedSession().setPreferredBufferSize( kWebAudioBufferSize);105 AudioSession::sharedSession().setPreferredBufferSize(AudioUtilities::renderQuantumSize); 106 106 // In case of audio capture, we want to grab 20 ms chunks to limit the latency so that it is not noticeable by users 107 107 // while having a large enough buffer so that the audio rendering remains stable, hence a computation based on sample rate. … … 113 113 bufferSize = kLowPowerVideoBufferSize; 114 114 else 115 bufferSize = kWebAudioBufferSize;115 bufferSize = AudioUtilities::renderQuantumSize; 116 116 117 117 AudioSession::sharedSession().setPreferredBufferSize(bufferSize); -
trunk/Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp
r266895 r267541 26 26 #include "AudioChannel.h" 27 27 #include "AudioSourceProvider.h" 28 #include "AudioUtilities.h" 28 29 #include "GRefPtrGStreamer.h" 29 30 #include "Logging.h" … … 35 36 36 37 namespace WebCore { 37 38 // Size of the AudioBus for playback. The webkitwebaudiosrc element39 // needs to handle this number of frames per cycle as well.40 const unsigned framesToPull = 128;41 38 42 39 gboolean messageCallback(GstBus*, GstMessage* message, AudioDestinationGStreamer* destination) … … 80 77 AudioDestinationGStreamer::AudioDestinationGStreamer(AudioIOCallback& callback, float sampleRate) 81 78 : m_callback(callback) 82 , m_renderBus(AudioBus::create(2, framesToPull, false))79 , m_renderBus(AudioBus::create(2, AudioUtilities::renderQuantumSize, false)) 83 80 , m_sampleRate(sampleRate) 84 81 , m_isPlaying(false) … … 94 91 "bus", m_renderBus.get(), 95 92 "provider", &m_callback, 96 "frames", framesToPull, nullptr));93 "frames", AudioUtilities::renderQuantumSize, nullptr)); 97 94 98 95 GRefPtr<GstElement> audioSink = gst_element_factory_make("autoaudiosink", nullptr); … … 139 136 unsigned AudioDestinationGStreamer::framesPerBuffer() const 140 137 { 141 return framesToPull;138 return AudioUtilities::renderQuantumSize; 142 139 } 143 140 -
trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp
r266721 r267541 26 26 #include "AudioBus.h" 27 27 #include "AudioIOCallback.h" 28 #include "AudioUtilities.h" 28 29 #include "GStreamerCommon.h" 29 30 #include <gst/app/gstappsrc.h> … … 187 188 g_param_spec_uint("frames", "frames", 188 189 "Number of audio frames to pull at each iteration", 189 0, G_MAXUINT8, 128, flags));190 0, G_MAXUINT8, AudioUtilities::renderQuantumSize, flags)); 190 191 } 191 192
Note:
See TracChangeset
for help on using the changeset viewer.