Path: blob/master/RSDKv5/RSDK/Audio/SDL2/SDL2AudioDevice.cpp
1163 views
1uint8 AudioDevice::contextInitialized;23SDL_AudioDeviceID AudioDevice::device;4SDL_AudioSpec AudioDevice::deviceSpec;56bool32 AudioDevice::Init()7{8SDL_InitSubSystem(SDL_INIT_AUDIO);9if (!contextInitialized) {10contextInitialized = true;11InitAudioChannels();12}1314SDL_AudioSpec want;15want.freq = AUDIO_FREQUENCY;16want.format = AUDIO_F32SYS;17want.samples = MIX_BUFFER_SIZE / AUDIO_CHANNELS;18want.channels = AUDIO_CHANNELS;19want.callback = AudioCallback;2021audioState = false;22if ((device = SDL_OpenAudioDevice(nullptr, 0, &want, &deviceSpec, SDL_AUDIO_ALLOW_SAMPLES_CHANGE)) > 0) {23SDL_PauseAudioDevice(device, SDL_FALSE);24audioState = true;25}26else {27PrintLog(PRINT_NORMAL, "ERROR: Unable to open audio device!");28PrintLog(PRINT_NORMAL, "ERROR: %s", SDL_GetError());29}3031return true;32}3334void AudioDevice::Release()35{36SDL_PauseAudioDevice(device, SDL_TRUE);3738LockAudioDevice();39AudioDeviceBase::Release();40UnlockAudioDevice();4142SDL_CloseAudioDevice(device);43SDL_QuitSubSystem(SDL_INIT_AUDIO);44}4546void AudioDevice::InitAudioChannels()47{48AudioDeviceBase::InitAudioChannels();49}5051void AudioDevice::AudioCallback(void *data, uint8 *stream, int32 len)52{53(void)data; // Unused5455AudioDevice::ProcessAudioMixing(stream, len / sizeof(SAMPLE_FORMAT));56}575859