60 int totalNumInputChannels,
61 float** outputChannelData,
62 int totalNumOutputChannels,
66 jassert (sampleRate > 0 && bufferSize > 0);
70 if (source !=
nullptr)
72 int numActiveChans = 0, numInputs = 0, numOutputs = 0;
76 for (
int i = 0; i < totalNumInputChannels; ++i)
78 if (inputChannelData[i] !=
nullptr)
80 inputChans [numInputs++] = inputChannelData[i];
81 if (numInputs >= numElementsInArray (inputChans))
86 for (
int i = 0; i < totalNumOutputChannels; ++i)
88 if (outputChannelData[i] !=
nullptr)
90 outputChans [numOutputs++] = outputChannelData[i];
91 if (numOutputs >= numElementsInArray (outputChans))
96 if (numInputs > numOutputs)
101 tempBuffer.
setSize (numInputs - numOutputs, numSamples,
104 for (
int i = 0; i < numOutputs; ++i)
106 channels[numActiveChans] = outputChans[i];
107 memcpy (channels[numActiveChans], inputChans[i], (
size_t) numSamples *
sizeof (
float));
111 for (
int i = numOutputs; i < numInputs; ++i)
113 channels[numActiveChans] = tempBuffer.
getWritePointer (i - numOutputs);
114 memcpy (channels[numActiveChans], inputChans[i], (
size_t) numSamples *
sizeof (
float));
120 for (
int i = 0; i < numInputs; ++i)
122 channels[numActiveChans] = outputChans[i];
123 memcpy (channels[numActiveChans], inputChans[i], (
size_t) numSamples *
sizeof (
float));
127 for (
int i = numInputs; i < numOutputs; ++i)
129 channels[numActiveChans] = outputChans[i];
130 zeromem (channels[numActiveChans], (
size_t) numSamples *
sizeof (
float));
147 for (
int i = 0; i < totalNumOutputChannels; ++i)
148 if (outputChannelData[i] !=
nullptr)
149 zeromem (outputChannelData[i], (
size_t) numSamples *
sizeof (
float));