Ejemplo n.º 1
0
//-----------------------------------------------------------------------------------------
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;
	}
}
Ejemplo n.º 2
0
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;
    }
  }
}