Path: blob/master/RSDKv5/RSDK/Audio/MiniAudio/MiniAudioDevice.cpp
1163 views
#define MINIAUDIO_IMPLEMENTATION1#include <miniaudio/miniaudio.h>23uint8 AudioDevice::contextInitialized;4ma_device AudioDevice::device;56bool32 AudioDevice::Init()7{8if (!contextInitialized) {9contextInitialized = true;10InitAudioChannels();11}1213ma_device_config config = ma_device_config_init(ma_device_type_playback);14config.playback.format = ma_format_f32; // Set to ma_format_unknown to use the device's native format.15config.playback.channels = 2; // Set to 0 to use the device's native channel count.16config.periodSizeInFrames = MIX_BUFFER_SIZE;17config.sampleRate = AUDIO_FREQUENCY; // Set to 0 to use the device's native sample rate.18config.dataCallback = AudioCallback; // This function will be called when miniaudio needs more data.1920ma_result result = ma_device_init(NULL, &config, &device);21if (result != MA_SUCCESS) {22PrintLog(PRINT_NORMAL, "[MA] Initializing device failed: %d", result);23return false;24}2526result = ma_device_start(&device);27if (result != MA_SUCCESS) {28PrintLog(PRINT_NORMAL, "[MA] Starting device failed: %d", result);29return false;30}3132return true;33}3435void AudioDevice::Release()36{37ma_device_uninit(&device);38}3940void AudioDevice::InitAudioChannels() { AudioDeviceBase::InitAudioChannels(); }4142void RSDK::AudioDevice::AudioCallback(ma_device* device, void *output, const void *input, ma_uint32 frameCount)43{44(void)input;45(void)device;4647AudioDevice::ProcessAudioMixing(output, frameCount * AUDIO_CHANNELS);48}495051