void OutputDeviceNodeWebAudio::initialize() { CI_LOG_I( "OutputDevicenode :: Initialize called" ); const size_t sampleRate = getOutputSampleRate(); const size_t framesPerBlock = getOutputFramesPerBlock(); const size_t numChannels = getNumChannels(); mInterleavedBuffer = BufferInterleaved( framesPerBlock, numChannels ); auto functor = std::bind( &OutputDeviceNodeWebAudio::renderInputs,this,std::placeholders::_1 ); mImpl->setRenderFunction( functor ); }
void OutputDeviceNodeXAudio::initialize() { CI_ASSERT_MSG( getNumChannels() <= 2, "number of channels greater than 2 is not supported." ); auto internalBuffer = getInternalBuffer(); size_t numSamples = internalBuffer->getSize(); memset( &mXAudioBuffer, 0, sizeof( mXAudioBuffer ) ); mXAudioBuffer.AudioBytes = numSamples * sizeof( float ); if( getNumChannels() == 2 ) { // setup stereo, XAudio2 requires interleaved samples so point at interleaved buffer mBufferInterleaved = BufferInterleaved( internalBuffer->getNumFrames(), internalBuffer->getNumChannels() ); mXAudioBuffer.pAudioData = reinterpret_cast<BYTE *>( mBufferInterleaved.getData() ); } else { // setup mono mXAudioBuffer.pAudioData = reinterpret_cast<BYTE *>( internalBuffer->getData() ); } initSourceVoice(); }