From 2ee1bf131e6f6a38b2a828ac8518e8b8b8d98aac Mon Sep 17 00:00:00 2001 From: Clownacy Date: Wed, 24 Jun 2020 01:15:21 +0100 Subject: [PATCH] Update miniaudio backend to new mixer --- src/Backends/Audio/miniaudio.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Backends/Audio/miniaudio.cpp b/src/Backends/Audio/miniaudio.cpp index 7f772afe..62244607 100644 --- a/src/Backends/Audio/miniaudio.cpp +++ b/src/Backends/Audio/miniaudio.cpp @@ -28,7 +28,7 @@ static void Callback(ma_device *device, void *output_stream, const void *input_s (void)device; (void)input_stream; - float *stream = (float*)output_stream; + short *stream = (short*)output_stream; ma_mutex_lock(&organya_mutex); @@ -68,6 +68,17 @@ static void Callback(ma_device *device, void *output_stream, const void *input_s } } + // Clamp output, and convert from 8-bit to 16-bit + for (unsigned int i = 0; i < frames_total * 2; ++i) + { + if (stream[i] > 0x7F) + stream[i] = 0x7F00; + else if (stream[i] < -0x7F) + stream[i] = -0x7F00; + else + stream[i] <<= 8; + } + ma_mutex_unlock(&organya_mutex); } @@ -75,7 +86,7 @@ bool AudioBackend_Init(void) { ma_device_config config = ma_device_config_init(ma_device_type_playback); config.playback.pDeviceID = NULL; - config.playback.format = ma_format_f32; + config.playback.format = ma_format_s16; config.playback.channels = 2; config.sampleRate = 0; // Let miniaudio decide what sample rate to use config.dataCallback = Callback;