Use dynamically allocated buffer (#105)

This commit is contained in:
Christian Semmler 2025-05-17 08:14:36 -07:00 committed by GitHub
parent b90215603b
commit fb54b4d1c2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -136,15 +136,16 @@ void MxSoundManager::AudioStreamCallback(
int p_totalAmount int p_totalAmount
) )
{ {
static MxU8 g_buffer[4096]; static vector<MxU8> g_buffer;
g_buffer.reserve(p_additionalAmount);
MxSoundManager* manager = (MxSoundManager*) p_userdata; MxSoundManager* manager = (MxSoundManager*) p_userdata;
ma_uint32 bytesPerFrame = ma_get_bytes_per_frame(ma_format_f32, ma_engine_get_channels(&manager->m_engine)); ma_uint32 bytesPerFrame = ma_get_bytes_per_frame(ma_format_f32, ma_engine_get_channels(&manager->m_engine));
ma_uint32 bufferSizeInFrames = (ma_uint32) SDL_min(sizeof(g_buffer), p_additionalAmount) / bytesPerFrame; ma_uint32 bufferSizeInFrames = (ma_uint32) p_additionalAmount / bytesPerFrame;
ma_uint64 framesRead; ma_uint64 framesRead;
if (ma_engine_read_pcm_frames(&manager->m_engine, g_buffer, bufferSizeInFrames, &framesRead) == MA_SUCCESS) { if (ma_engine_read_pcm_frames(&manager->m_engine, g_buffer.data(), bufferSizeInFrames, &framesRead) == MA_SUCCESS) {
SDL_PutAudioStreamData(manager->m_stream, g_buffer, framesRead * bytesPerFrame); SDL_PutAudioStreamData(manager->m_stream, g_buffer.data(), framesRead * bytesPerFrame);
} }
} }