Path: blob/master/RSDKv5/RSDK/Audio/PortAudio/PortAudioDevice.cpp
1168 views
uint8 AudioDevice::contextInitialized;1PaStream *AudioDevice::stream;23bool32 AudioDevice::Init()4{5if (!contextInitialized) {6contextInitialized = true;7InitAudioChannels();8}910PaError result;11result = Pa_Initialize();12if (result != paNoError) {13PrintLog(PRINT_NORMAL, "[PA] Initialization failed: %s", Pa_GetErrorText(result));14return false;15}16result = Pa_OpenDefaultStream(&stream, 0, AUDIO_CHANNELS, paFloat32, AUDIO_FREQUENCY, MIX_BUFFER_SIZE, AudioCallback, nullptr);17if (result != paNoError) {18PrintLog(PRINT_NORMAL, "[PA] Opening stream failed: %s", Pa_GetErrorText(result));19return false;20}21result = Pa_StartStream(stream);22if (result != paNoError) {23PrintLog(PRINT_NORMAL, "[PA] Starting stream failed: %s", Pa_GetErrorText(result));24return false;25}26return true;27}2829void AudioDevice::Release()30{31Pa_StopStream(stream);32Pa_Terminate();33}3435void AudioDevice::InitAudioChannels() { AudioDeviceBase::InitAudioChannels(); }3637int RSDK::AudioDevice::AudioCallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo,38PaStreamCallbackFlags statusFlags, void *userData)39{40(void)input;41(void)timeInfo;42(void)statusFlags;43(void)userData;4445AudioDevice::ProcessAudioMixing(output, frameCount * AUDIO_CHANNELS);46return 0;47}484950