From 2e22affe38709090c06efc13400b780731ddac7e Mon Sep 17 00:00:00 2001 From: David Reid Date: Sat, 16 Jan 2021 20:36:19 +1000 Subject: [PATCH] Update ma_audio_buffer_ref_init() to take a buffer. This saves a mandatory call to ma_audio_buffer_ref_set_data(). With this change, an ma_audio_buffer_ref_init() call is all that is required to initialize a usable data source. --- miniaudio.h | 10 +++++----- research/_examples/duplex_effect.c | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/miniaudio.h b/miniaudio.h index 8485ee9c..60184551 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -5824,7 +5824,7 @@ typedef struct const void* pData; } ma_audio_buffer_ref; -MA_API ma_result ma_audio_buffer_ref_init(ma_format format, ma_uint32 channels, ma_audio_buffer_ref* pAudioBufferRef); +MA_API ma_result ma_audio_buffer_ref_init(ma_format format, ma_uint32 channels, const void* pData, ma_uint64 sizeInFrames, ma_audio_buffer_ref* pAudioBufferRef); MA_API ma_result ma_audio_buffer_ref_set_data(ma_audio_buffer_ref* pAudioBufferRef, const void* pData, ma_uint64 sizeInFrames); MA_API ma_uint64 ma_audio_buffer_ref_read_pcm_frames(ma_audio_buffer_ref* pAudioBufferRef, void* pFramesOut, ma_uint64 frameCount, ma_bool32 loop); MA_API ma_result ma_audio_buffer_ref_seek_to_pcm_frame(ma_audio_buffer_ref* pAudioBufferRef, ma_uint64 frameIndex); @@ -43393,7 +43393,7 @@ static ma_result ma_audio_buffer_ref__data_source_on_get_length(ma_data_source* return MA_SUCCESS; } -MA_API ma_result ma_audio_buffer_ref_init(ma_format format, ma_uint32 channels, ma_audio_buffer_ref* pAudioBufferRef) +MA_API ma_result ma_audio_buffer_ref_init(ma_format format, ma_uint32 channels, const void* pData, ma_uint64 sizeInFrames, ma_audio_buffer_ref* pAudioBufferRef) { if (pAudioBufferRef == NULL) { return MA_INVALID_ARGS; @@ -43411,8 +43411,8 @@ MA_API ma_result ma_audio_buffer_ref_init(ma_format format, ma_uint32 channels, pAudioBufferRef->format = format; pAudioBufferRef->channels = channels; pAudioBufferRef->cursor = 0; - pAudioBufferRef->sizeInFrames = 0; - pAudioBufferRef->pData = NULL; + pAudioBufferRef->sizeInFrames = sizeInFrames; + pAudioBufferRef->pData = pData; return MA_SUCCESS; } @@ -43604,7 +43604,7 @@ static ma_result ma_audio_buffer_init_ex(const ma_audio_buffer_config* pConfig, return MA_INVALID_ARGS; /* Not allowing buffer sizes of 0 frames. */ } - result = ma_audio_buffer_ref_init(pConfig->format, pConfig->channels, &pAudioBuffer->ref); + result = ma_audio_buffer_ref_init(pConfig->format, pConfig->channels, NULL, 0, &pAudioBuffer->ref); if (result != MA_SUCCESS) { return result; } diff --git a/research/_examples/duplex_effect.c b/research/_examples/duplex_effect.c index 73e36e7b..d5ac01c7 100644 --- a/research/_examples/duplex_effect.c +++ b/research/_examples/duplex_effect.c @@ -87,7 +87,7 @@ int main(int argc, char** argv) /* Source/carrier. Attached to input bus 0 of the vocoder node. */ - result = ma_audio_buffer_ref_init(device.capture.format, device.capture.channels, &g_sourceData); + result = ma_audio_buffer_ref_init(device.capture.format, device.capture.channels, NULL, 0, &g_sourceData); if (result != MA_SUCCESS) { printf("Failed to initialize audio buffer for source."); goto done2;