/** * @author Edouard DUPIN * * @copyright 2014, Edouard DUPIN, all right reserved * * @license BSD v3 (see license file) */ #include #include #include #include #undef __class__ #define __class__ "ReceiverRtAudio" int eaudiofx::ReceiverRtAudio::rtAudioCallBack(void *_outputBuffer, void *_inputBuffer, unsigned int _nBufferFrames, double _streamTime, airtaudio::streamStatus _status, void* _userData) { if (_userData == NULL) { EAUDIOFX_ERROR("Null class pointer"); return -1; } if (_outputBuffer == NULL) { EAUDIOFX_ERROR("Null output buffer pointer"); return -1; } eaudiofx::ReceiverRtAudio* classPointer = static_cast(_userData); if (classPointer == NULL) { EAUDIOFX_ERROR("Wrong class pointer data"); return -1; } return classPointer->needData((float*)_outputBuffer, _nBufferFrames, _streamTime, _status); } int32_t eaudiofx::ReceiverRtAudio::needData(void* _outputBuffer, size_t _nBufferFrames, double _streamTime, airtaudio::streamStatus _status) { EAUDIOFX_INFO("NEED DATA : " << _nBufferFrames); if (m_processStarted == false) { for (int32_t iii=0; iii<_nBufferFrames*2; ++iii) { ((int8_t*)_outputBuffer)[iii] = 0; } return 0; } int32_t nbData = std::min(m_buffer.size()/2, _nBufferFrames*2); for (int32_t iii=0; iii