From 43280c3f7f09644bcaeadd368ad742a0c57aaa95 Mon Sep 17 00:00:00 2001 From: reuk Date: Tue, 30 Nov 2021 19:10:48 +0000 Subject: [PATCH] AU: Tidy up ChannelRemapper --- .../AU/juce_AU_Wrapper.mm | 5 ++-- .../AU/juce_AUv3_Wrapper.mm | 8 +++---- .../format_types/juce_AU_Shared.h | 24 ++++++++----------- 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm index 4193ebbf6a..fe2d28d31e 100644 --- a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm +++ b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm @@ -131,8 +131,7 @@ public: : AudioProcessorHolder (activePlugins.size() + activeUIs.size() == 0), MusicDeviceBase (component, (UInt32) AudioUnitHelpers::getBusCountForWrapper (*juceFilter, true), - (UInt32) AudioUnitHelpers::getBusCountForWrapper (*juceFilter, false)), - mapper (*juceFilter) + (UInt32) AudioUnitHelpers::getBusCountForWrapper (*juceFilter, false)) { inParameterChangedCallback = false; @@ -208,7 +207,7 @@ public: if ((err = MusicDeviceBase::Initialize()) != noErr) return err; - mapper.alloc(); + mapper.alloc (*juceFilter); pulledSucceeded.calloc (static_cast (AudioUnitHelpers::getBusCountForWrapper (*juceFilter, true))); prepareToPlay(); diff --git a/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm index de1ff74dff..d679b3efa1 100644 --- a/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm +++ b/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm @@ -421,16 +421,14 @@ public: AudioComponentInstantiationOptions options, NSError** error) : JuceAudioUnitv3Base (descr, options, error), - processorHolder (processor), - mapper (*processorHolder->get()) + processorHolder (processor) { init(); } JuceAudioUnitv3 (AUAudioUnit* audioUnit, AudioComponentDescription, AudioComponentInstantiationOptions, NSError**) : JuceAudioUnitv3Base (audioUnit), - processorHolder (new AudioProcessorHolder (createPluginFilterOfType (AudioProcessor::wrapperType_AudioUnitv3))), - mapper (*processorHolder->get()) + processorHolder (new AudioProcessorHolder (createPluginFilterOfType (AudioProcessor::wrapperType_AudioUnitv3))) { init(); } @@ -844,7 +842,7 @@ public: allocateBusBuffer (true); allocateBusBuffer (false); - mapper.alloc(); + mapper.alloc (processor); audioBuffer.prepare (AudioUnitHelpers::getBusesLayout (&processor), static_cast (maxFrames)); diff --git a/modules/juce_audio_processors/format_types/juce_AU_Shared.h b/modules/juce_audio_processors/format_types/juce_AU_Shared.h index 5a907e7c35..fc4406b9f8 100644 --- a/modules/juce_audio_processors/format_types/juce_AU_Shared.h +++ b/modules/juce_audio_processors/format_types/juce_AU_Shared.h @@ -38,22 +38,19 @@ struct AudioUnitHelpers class ChannelRemapper { public: - ChannelRemapper (AudioProcessor& p) : processor (p), inputLayoutMap (nullptr), outputLayoutMap (nullptr) {} - ~ChannelRemapper() {} - - void alloc() + void alloc (AudioProcessor& processor) { const int numInputBuses = AudioUnitHelpers::getBusCount (processor, true); const int numOutputBuses = AudioUnitHelpers::getBusCount (processor, false); - initializeChannelMapArray (true, numInputBuses); - initializeChannelMapArray (false, numOutputBuses); + initializeChannelMapArray (processor, true, numInputBuses); + initializeChannelMapArray (processor, false, numOutputBuses); for (int busIdx = 0; busIdx < numInputBuses; ++busIdx) - fillLayoutChannelMaps (true, busIdx); + fillLayoutChannelMaps (processor, true, busIdx); for (int busIdx = 0; busIdx < numOutputBuses; ++busIdx) - fillLayoutChannelMaps (false, busIdx); + fillLayoutChannelMaps (processor, false, busIdx); } void release() @@ -69,14 +66,13 @@ struct AudioUnitHelpers private: //============================================================================== - AudioProcessor& processor; HeapBlock inputLayoutMapPtrStorage, outputLayoutMapPtrStorage; HeapBlock inputLayoutMapStorage, outputLayoutMapStorage; - int** inputLayoutMap; - int** outputLayoutMap; + int** inputLayoutMap = nullptr; + int** outputLayoutMap = nullptr; //============================================================================== - void initializeChannelMapArray (bool isInput, const int numBuses) + void initializeChannelMapArray (AudioProcessor& processor, bool isInput, const int numBuses) { HeapBlock& layoutMapPtrStorage = isInput ? inputLayoutMapPtrStorage : outputLayoutMapPtrStorage; HeapBlock& layoutMapStorage = isInput ? inputLayoutMapStorage : outputLayoutMapStorage; @@ -88,7 +84,7 @@ struct AudioUnitHelpers layoutMapPtrStorage.calloc (static_cast (numBuses)); layoutMapStorage.calloc (static_cast (isInput ? totalInChannels : totalOutChannels)); - layoutMap = layoutMapPtrStorage. get(); + layoutMap = layoutMapPtrStorage.get(); int ch = 0; for (int busIdx = 0; busIdx < numBuses; ++busIdx) @@ -98,7 +94,7 @@ struct AudioUnitHelpers } } - void fillLayoutChannelMaps (bool isInput, int busNr) + void fillLayoutChannelMaps (AudioProcessor& processor, bool isInput, int busNr) { int* layoutMap = (isInput ? inputLayoutMap : outputLayoutMap)[busNr]; auto channelFormat = processor.getChannelLayoutOfBus (isInput, busNr);