Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Rubberduckycooly
GitHub Repository: Rubberduckycooly/RSDKv5-Decompilation
Path: blob/master/RSDKv5/RSDK/Audio/PortAudio/PortAudioDevice.cpp
1168 views
1
uint8 AudioDevice::contextInitialized;
2
PaStream *AudioDevice::stream;
3
4
bool32 AudioDevice::Init()
5
{
6
if (!contextInitialized) {
7
contextInitialized = true;
8
InitAudioChannels();
9
}
10
11
PaError result;
12
result = Pa_Initialize();
13
if (result != paNoError) {
14
PrintLog(PRINT_NORMAL, "[PA] Initialization failed: %s", Pa_GetErrorText(result));
15
return false;
16
}
17
result = Pa_OpenDefaultStream(&stream, 0, AUDIO_CHANNELS, paFloat32, AUDIO_FREQUENCY, MIX_BUFFER_SIZE, AudioCallback, nullptr);
18
if (result != paNoError) {
19
PrintLog(PRINT_NORMAL, "[PA] Opening stream failed: %s", Pa_GetErrorText(result));
20
return false;
21
}
22
result = Pa_StartStream(stream);
23
if (result != paNoError) {
24
PrintLog(PRINT_NORMAL, "[PA] Starting stream failed: %s", Pa_GetErrorText(result));
25
return false;
26
}
27
return true;
28
}
29
30
void AudioDevice::Release()
31
{
32
Pa_StopStream(stream);
33
Pa_Terminate();
34
}
35
36
void AudioDevice::InitAudioChannels() { AudioDeviceBase::InitAudioChannels(); }
37
38
int RSDK::AudioDevice::AudioCallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo,
39
PaStreamCallbackFlags statusFlags, void *userData)
40
{
41
(void)input;
42
(void)timeInfo;
43
(void)statusFlags;
44
(void)userData;
45
46
AudioDevice::ProcessAudioMixing(output, frameCount * AUDIO_CHANNELS);
47
return 0;
48
}
49
50