Skip to content

Instantly share code, notes, and snippets.

@artgillespie
Created November 28, 2011 17:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save artgillespie/1401245 to your computer and use it in GitHub Desktop.
Save artgillespie/1401245 to your computer and use it in GitHub Desktop.
OSStatus TSAudioEngine::render(AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) {
OSStatus err = noErr;
for (int ii = 0; ii < ioData->mNumberBuffers; ++ii) {
vDSP_vclr(static_cast<float *>(ioData->mBuffers[ii].mData), 1, inNumberFrames);
}
if (0 == tryLock()) {
// this is a thin wrapper to ExtAudioFileRead
audioFileReader.process(ioData, inNumberFrames);
float * lbuf = static_cast<float *>(ioData->mBuffers[0].mData);
float * rbuf = static_cast<float *>(ioData->mBuffers[1].mData);
vDSP_vrvrs(lbuf, 1, inNumberFrames);
vDSP_vrvrs(rbuf, 1, inNumberFrames);
currentPos -= inNumberFrames;
// this is a thin wrapper to ExtAudioFileSeek
err = audioFileReader.seek(currentPos);
if (currentPos <= 44100) {
currentPos = 350000;
err = audioFileReader.seek(currentPos);
}
unlock();
} else {
printf("couldn't get audio lock\n");
}
return err;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment