Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 333e3890f47db063eed9abe9bd35f005f1e354fd
      
https://github.com/WebKit/WebKit/commit/333e3890f47db063eed9abe9bd35f005f1e354fd
  Author: Jer Noble <[email protected]>
  Date:   2025-05-27 (Tue, 27 May 2025)

  Changed paths:
    M Source/WebCore/Modules/webaudio/AnalyserNode.cpp
    M Source/WebCore/Modules/webaudio/AudioBasicInspectorNode.cpp
    M Source/WebCore/Modules/webaudio/AudioBasicProcessorNode.cpp
    M Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp
    M Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h
    M Source/WebCore/Modules/webaudio/AudioDestinationNode.cpp
    M Source/WebCore/Modules/webaudio/AudioDestinationNode.h
    M Source/WebCore/Modules/webaudio/AudioNode.cpp
    M Source/WebCore/Modules/webaudio/AudioNodeInput.cpp
    M Source/WebCore/Modules/webaudio/AudioNodeInput.h
    M Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp
    M Source/WebCore/Modules/webaudio/AudioNodeOutput.h
    M Source/WebCore/Modules/webaudio/AudioParam.cpp
    M Source/WebCore/Modules/webaudio/AudioWorkletNode.cpp
    M Source/WebCore/Modules/webaudio/BiquadProcessor.cpp
    M Source/WebCore/Modules/webaudio/BiquadProcessor.h
    M Source/WebCore/Modules/webaudio/ChannelMergerNode.cpp
    M Source/WebCore/Modules/webaudio/ChannelSplitterNode.cpp
    M Source/WebCore/Modules/webaudio/ConstantSourceNode.cpp
    M Source/WebCore/Modules/webaudio/ConvolverNode.cpp
    M Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp
    M Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h
    M Source/WebCore/Modules/webaudio/DynamicsCompressorNode.cpp
    M Source/WebCore/Modules/webaudio/GainNode.cpp
    M Source/WebCore/Modules/webaudio/IIRProcessor.cpp
    M Source/WebCore/Modules/webaudio/IIRProcessor.h
    M Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.cpp
    M Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp
    M Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.cpp
    M Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp
    M Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.h
    M Source/WebCore/Modules/webaudio/OscillatorNode.cpp
    M Source/WebCore/Modules/webaudio/PannerNode.cpp
    M Source/WebCore/Modules/webaudio/PannerNode.h
    M Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp
    M Source/WebCore/Modules/webaudio/RealtimeAnalyser.h
    M Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp
    M Source/WebCore/Modules/webaudio/ScriptProcessorNode.h
    M Source/WebCore/Modules/webaudio/StereoPannerNode.cpp
    M Source/WebCore/Modules/webaudio/WaveShaperProcessor.cpp
    M Source/WebCore/Modules/webaudio/WaveShaperProcessor.h
    M Source/WebCore/platform/audio/AudioBus.cpp
    M Source/WebCore/platform/audio/AudioBus.h
    M Source/WebCore/platform/audio/AudioDSPKernelProcessor.cpp
    M Source/WebCore/platform/audio/AudioDSPKernelProcessor.h
    M Source/WebCore/platform/audio/AudioDestination.h
    M Source/WebCore/platform/audio/AudioDestinationResampler.cpp
    M Source/WebCore/platform/audio/AudioIOCallback.h
    M Source/WebCore/platform/audio/AudioProcessor.h
    M Source/WebCore/platform/audio/AudioResampler.cpp
    M Source/WebCore/platform/audio/AudioResampler.h
    M Source/WebCore/platform/audio/DynamicsCompressor.cpp
    M Source/WebCore/platform/audio/DynamicsCompressor.h
    M Source/WebCore/platform/audio/EqualPowerPanner.cpp
    M Source/WebCore/platform/audio/EqualPowerPanner.h
    M Source/WebCore/platform/audio/HRTFElevation.cpp
    M Source/WebCore/platform/audio/HRTFPanner.cpp
    M Source/WebCore/platform/audio/HRTFPanner.h
    M Source/WebCore/platform/audio/MultiChannelResampler.cpp
    M Source/WebCore/platform/audio/MultiChannelResampler.h
    M Source/WebCore/platform/audio/Panner.h
    M Source/WebCore/platform/audio/PushPullFIFO.cpp
    M Source/WebCore/platform/audio/PushPullFIFO.h
    M Source/WebCore/platform/audio/Reverb.cpp
    M Source/WebCore/platform/audio/Reverb.h
    M Source/WebCore/platform/audio/SharedAudioDestination.cpp
    M Source/WebCore/platform/audio/SharedAudioDestination.h
    M Source/WebCore/platform/audio/StereoPanner.cpp
    M Source/WebCore/platform/audio/StereoPanner.h
    M Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp
    M Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp

  Log Message:
  -----------
  [Refactor] Pass AudioBus by reference everywhere possible
rdar://151925227
https://bugs.webkit.org/show_bug.cgi?id=293490

Reviewed by Eric Carlson.

AudioBus is currently passed almost everywhere inside Modules/webaudio as a 
pointer.
However, in many cases, the pointer bus parameter or the return value of a 
method
are never null-checked.

Make this guarantee explicit by changing parameter types and return values from
`AudioBus*` to `AudioBus&`. For some classes, this means changing instance 
variable
types from `RefPtr<AudioBus>` to `Ref<AudioBus>`, which is possible after 
295322@main
changed the return type of `AudioBus::create()` to `Ref<AudioBus>`.

Drive-by fix:

There was one case where converting a return type from `RefPtr` to `Ref` 
required
a change in logic. In `AudioBus::createByMixingToMono()`, only mono and stereo
channel layouts were handled, and any other channel number resulted in a nullptr
being returned. Logic was added to this function to handle any number of 
channels
being mixed down to mono.

* Source/WebCore/Modules/webaudio/AnalyserNode.cpp:
(WebCore::AnalyserNode::process):
* Source/WebCore/Modules/webaudio/AudioBasicInspectorNode.cpp:
(WebCore::AudioBasicInspectorNode::pullInputs):
* Source/WebCore/Modules/webaudio/AudioBasicProcessorNode.cpp:
(WebCore::AudioBasicProcessorNode::process):
(WebCore::AudioBasicProcessorNode::pullInputs):
* Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::process):
(WebCore::AudioBufferSourceNode::renderSilenceAndFinishIfNotLooping):
(WebCore::AudioBufferSourceNode::renderFromBuffer):
* Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h:
* Source/WebCore/Modules/webaudio/AudioDestinationNode.cpp:
(WebCore::AudioDestinationNode::renderQuantum):
* Source/WebCore/Modules/webaudio/AudioDestinationNode.h:
* Source/WebCore/Modules/webaudio/AudioNode.cpp:
(WebCore::AudioNode::inputsAreSilent):
(WebCore::AudioNode::silenceOutputs):
* Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:
(WebCore::AudioNodeInput::AudioNodeInput):
(WebCore::AudioNodeInput::bus):
(WebCore::AudioNodeInput::internalSummingBus):
(WebCore::AudioNodeInput::sumAllConnections):
(WebCore::AudioNodeInput::pull):
* Source/WebCore/Modules/webaudio/AudioNodeInput.h:
* Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp:
(WebCore::AudioNodeOutput::AudioNodeOutput):
(WebCore::AudioNodeOutput::pull):
(WebCore::AudioNodeOutput::bus const):
* Source/WebCore/Modules/webaudio/AudioNodeOutput.h:
* Source/WebCore/Modules/webaudio/AudioParam.cpp:
(WebCore::AudioParam::calculateFinalValues):
* Source/WebCore/Modules/webaudio/AudioWorkletNode.cpp:
(WebCore::AudioWorkletNode::process):
* Source/WebCore/Modules/webaudio/BiquadProcessor.cpp:
(WebCore::BiquadProcessor::process):
* Source/WebCore/Modules/webaudio/BiquadProcessor.h:
* Source/WebCore/Modules/webaudio/ChannelMergerNode.cpp:
(WebCore::ChannelMergerNode::process):
* Source/WebCore/Modules/webaudio/ChannelSplitterNode.cpp:
(WebCore::ChannelSplitterNode::process):
* Source/WebCore/Modules/webaudio/ConstantSourceNode.cpp:
(WebCore::ConstantSourceNode::process):
* Source/WebCore/Modules/webaudio/ConvolverNode.cpp:
(WebCore::ConvolverNode::process):
(WebCore::ConvolverNode::setBufferForBindings):
* Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:
(WebCore::DefaultAudioDestinationNode::render):
* Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:
* Source/WebCore/Modules/webaudio/DynamicsCompressorNode.cpp:
(WebCore::DynamicsCompressorNode::process):
* Source/WebCore/Modules/webaudio/GainNode.cpp:
(WebCore::GainNode::process):
* Source/WebCore/Modules/webaudio/IIRProcessor.cpp:
(WebCore::IIRProcessor::process):
* Source/WebCore/Modules/webaudio/IIRProcessor.h:
* Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.cpp:
(WebCore::MediaElementAudioSourceNode::process):
* Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp:
(WebCore::MediaStreamAudioDestinationNode::process):
* Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.cpp:
(WebCore::MediaStreamAudioSourceNode::process):
* Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp:
(WebCore::OfflineAudioDestinationNode::renderOnAudioThread):
* Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.h:
* Source/WebCore/Modules/webaudio/OscillatorNode.cpp:
(WebCore::OscillatorNode::process):
* Source/WebCore/Modules/webaudio/PannerNode.cpp:
(WebCore::PannerNode::process):
(WebCore::PannerNode::processSampleAccurateValues):
* Source/WebCore/Modules/webaudio/PannerNode.h:
* Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp:
(WebCore::RealtimeAnalyser::writeInput):
* Source/WebCore/Modules/webaudio/RealtimeAnalyser.h:
* Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp:
(WebCore::ScriptProcessorNode::process):
* Source/WebCore/Modules/webaudio/ScriptProcessorNode.h:
* Source/WebCore/Modules/webaudio/StereoPannerNode.cpp:
(WebCore::StereoPannerNode::process):
* Source/WebCore/Modules/webaudio/WaveShaperProcessor.cpp:
(WebCore::WaveShaperProcessor::process):
* Source/WebCore/Modules/webaudio/WaveShaperProcessor.h:
* Source/WebCore/platform/audio/AudioBus.cpp:
(WebCore::AudioBus::createCopy):
(WebCore::AudioBus::createBufferFromRange):
(WebCore::AudioBus::createBySampleRateConverting):
(WebCore::AudioBus::createByMixingToMono):
* Source/WebCore/platform/audio/AudioBus.h:
* Source/WebCore/platform/audio/AudioDSPKernelProcessor.cpp:
(WebCore::AudioDSPKernelProcessor::process):
* Source/WebCore/platform/audio/AudioDSPKernelProcessor.h:
* Source/WebCore/platform/audio/AudioDestination.h:
(WebCore::AudioDestination::callRenderCallback):
* Source/WebCore/platform/audio/AudioDestinationResampler.cpp:
(WebCore::m_fifo):
(WebCore::AudioDestinationResampler::pullRendered):
(WebCore::AudioDestinationResampler::renderOnRenderingThreadIfPlaying):
* Source/WebCore/platform/audio/AudioIOCallback.h:
* Source/WebCore/platform/audio/AudioProcessor.h:
* Source/WebCore/platform/audio/AudioResampler.cpp:
(WebCore::AudioResampler::process):
* Source/WebCore/platform/audio/AudioResampler.h:
* Source/WebCore/platform/audio/DynamicsCompressor.cpp:
(WebCore::DynamicsCompressor::process):
* Source/WebCore/platform/audio/DynamicsCompressor.h:
* Source/WebCore/platform/audio/EqualPowerPanner.cpp:
(WebCore::EqualPowerPanner::pan):
(WebCore::EqualPowerPanner::panWithSampleAccurateValues):
* Source/WebCore/platform/audio/EqualPowerPanner.h:
* Source/WebCore/platform/audio/HRTFElevation.cpp:
(WebCore::HRTFElevation::calculateKernelsForAzimuthElevation):
* Source/WebCore/platform/audio/HRTFPanner.cpp:
(WebCore::HRTFPanner::pan):
(WebCore::HRTFPanner::panWithSampleAccurateValues):
* Source/WebCore/platform/audio/HRTFPanner.h:
* Source/WebCore/platform/audio/MultiChannelResampler.cpp:
(WebCore::MultiChannelResampler::process):
(WebCore::MultiChannelResampler::provideInputForChannel):
* Source/WebCore/platform/audio/MultiChannelResampler.h:
* Source/WebCore/platform/audio/Panner.h:
* Source/WebCore/platform/audio/PushPullFIFO.cpp:
(WebCore::PushPullFIFO::push):
(WebCore::PushPullFIFO::pull):
* Source/WebCore/platform/audio/PushPullFIFO.h:
(WebCore::PushPullFIFO::bus const):
* Source/WebCore/platform/audio/Reverb.cpp:
(WebCore::calculateNormalizationScale):
(WebCore::Reverb::Reverb):
(WebCore::Reverb::initialize):
(WebCore::Reverb::process):
* Source/WebCore/platform/audio/Reverb.h:
* Source/WebCore/platform/audio/SharedAudioDestination.cpp:
(WebCore::SharedAudioDestinationAdapter::render):
(WebCore::SharedAudioDestination::sharedRender):
* Source/WebCore/platform/audio/SharedAudioDestination.h:
* Source/WebCore/platform/audio/StereoPanner.cpp:
(WebCore::StereoPanner::panWithSampleAccurateValues):
(WebCore::StereoPanner::panToTargetValue):
* Source/WebCore/platform/audio/StereoPanner.h:

Canonical link: https://commits.webkit.org/295461@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to