static OSStatus OutputIOProc(AudioDeviceID inDevice, const AudioTimeStamp* /*inNow*/, const AudioBufferList* /*inputData*/, const AudioTimeStamp* /*inInputTime*/, AudioBufferList* outputData, const AudioTimeStamp* /*inOutputTime*/, void* inClientData) { Impl* impl = reinterpret_cast<Impl*>(inClientData); switch (impl->m_outputProcState) { case kStarting: impl->m_outputProcState = kRunning; break; case kStopRequested: AudioDeviceStop(inDevice, OutputIOProc); impl->m_outputProcState = kOff; return noErr; default: break; } /* char buf[512] = {0}; sprintf(buf, "Received %i bytes of audio data\n", inputData->mBuffers[0].mDataByteSize); impl->m_logger(2, buf);*/ impl->read(reinterpret_cast<unsigned char*>(outputData->mBuffers[0].mData), outputData->mBuffers[0].mDataByteSize / impl->m_format.mBytesPerFrame); return noErr; }