static int callbackByLambda(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData) { AudioDevice* audioDevice = (AudioDevice*)userData; float** output = (float**)outputBuffer; float** input = (float**)inputBuffer; audioDevice->getLambda()(input, audioDevice->getNumInputs() ,output, audioDevice->getNumOutputs() ,framesPerBuffer); return 0; }
static OSStatus inputRenderCallback(void* inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData) { OSStatus result = noErr; AudioDevice* thisDevice = (AudioDevice*)inRefCon; SInt16* left = (SInt16*) ioData->mBuffers[0].mData; SInt16* right = (SInt16*) ioData->mBuffers[1].mData; thisDevice->getLambda()(thisDevice->buffer, thisDevice->buffer, inNumberFrames); floatToInt16(thisDevice->buffer[0], left, inNumberFrames); floatToInt16(thisDevice->buffer[1], right, inNumberFrames); return result; }