27 : currentSampleRate (0.0), bufferSizeExpected (0)
39 if (input !=
nullptr && ! inputs.contains (input))
45 const ScopedLock sl (lock);
46 localRate = currentSampleRate;
47 localBufferSize = bufferSizeExpected;
53 const ScopedLock sl (lock);
55 inputsToDelete.setBit (inputs.size(), deleteWhenRemoved);
64 std::unique_ptr<AudioSource> toDelete;
67 const ScopedLock sl (lock);
68 const int index = inputs.indexOf (input);
73 if (inputsToDelete [index])
74 toDelete.reset (input);
76 inputsToDelete.shiftBits (-1, index);
77 inputs.remove (index);
89 const ScopedLock sl (lock);
91 for (
int i = inputs.size(); --i >= 0;)
92 if (inputsToDelete[i])
93 toDelete.
add (inputs.getUnchecked (i));
98 for (
int i = toDelete.
size(); --i >= 0;)
104 tempBuffer.setSize (2, samplesPerBlockExpected);
106 const ScopedLock sl (lock);
108 currentSampleRate = sampleRate;
109 bufferSizeExpected = samplesPerBlockExpected;
111 for (
int i = inputs.size(); --i >= 0;)
112 inputs.getUnchecked (i)->prepareToPlay (samplesPerBlockExpected, sampleRate);
117 const ScopedLock sl (lock);
119 for (
int i = inputs.size(); --i >= 0;)
120 inputs.getUnchecked (i)->releaseResources();
122 tempBuffer.setSize (2, 0);
124 currentSampleRate = 0;
125 bufferSizeExpected = 0;
130 const ScopedLock sl (lock);
132 if (inputs.size() > 0)
134 inputs.getUnchecked (0)->getNextAudioBlock (info);
136 if (inputs.size() > 1)
143 for (
int i = 1; i < inputs.size(); ++i)
145 inputs.getUnchecked (i)->getNextAudioBlock (info2);
int getNumChannels() const noexcept
int getNumSamples() const noexcept
void addFrom(int destChannel, int destStartSample, const AudioBuffer &source, int sourceChannel, int sourceStartSample, int numSamples, Type gainToApplyToSource=Type(1)) noexcept
virtual void releaseResources()=0
virtual void prepareToPlay(int samplesPerBlockExpected, double sampleRate)=0
void removeInputSource(AudioSource *input)
void getNextAudioBlock(const AudioSourceChannelInfo &) override
void addInputSource(AudioSource *newInput, bool deleteWhenRemoved)
void prepareToPlay(int samplesPerBlockExpected, double sampleRate) override
~MixerAudioSource() override
void releaseResources() override
int size() const noexcept
ObjectClass * getUnchecked(int index) const noexcept
ObjectClass * add(ObjectClass *newObject)
void clearActiveBufferRegion() const
AudioBuffer< float > * buffer