//----------------------------------------------------------------------------------------- void gsBEncoder::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) { int nin = (int)inputBuffers.size(); int nout = (int)outputBuffers.size(); int n = 0; while(n < sampleFrames) { int toprocess = MIN(bufferSize, (sampleFrames-n)); for(int i=0; i < nin; i++) { FloatToSample(inputBuffers[i], inputs[i]+n, toprocess); } for(int i=nin; i < inputBuffers.size(); i++) { zeroBuffer(inputBuffers[i], toprocess); } perform( gen, &(inputBuffers[0]), inputBuffers.size(), &(outputBuffers[0]), outputBuffers.size(), toprocess ); for(int i=0; i < nout; i++) { FloatFromSample(outputs[i]+n, outputBuffers[i], toprocess); } n += toprocess; } }
static void InterleaveAndConvertBuffer(const SrcT* aSource, int32_t aSourceLength, int32_t aLength, float aVolume, int32_t aChannels, DestT* aOutput) { DestT* output = aOutput; for (int32_t i = 0; i < aLength; ++i) { for (int32_t channel = 0; channel < aChannels; ++channel) { float v = SampleToFloat(aSource[channel*aSourceLength + i])*aVolume; FloatToSample(v, output); ++output; } } }