Commit 4eab9679 authored by David Reid's avatar David Reid

API CHANGE: Update ma_noise_read_pcm_frames().

parent 02bf2a9e
...@@ -6606,7 +6606,7 @@ typedef struct ...@@ -6606,7 +6606,7 @@ typedef struct
MA_API ma_result ma_noise_init(const ma_noise_config* pConfig, ma_noise* pNoise); MA_API ma_result ma_noise_init(const ma_noise_config* pConfig, ma_noise* pNoise);
MA_API void ma_noise_uninit(ma_noise* pNoise); MA_API void ma_noise_uninit(ma_noise* pNoise);
MA_API ma_uint64 ma_noise_read_pcm_frames(ma_noise* pNoise, void* pFramesOut, ma_uint64 frameCount); MA_API ma_result ma_noise_read_pcm_frames(ma_noise* pNoise, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead);
MA_API ma_result ma_noise_set_amplitude(ma_noise* pNoise, double amplitude); MA_API ma_result ma_noise_set_amplitude(ma_noise* pNoise, double amplitude);
MA_API ma_result ma_noise_set_seed(ma_noise* pNoise, ma_int32 seed); MA_API ma_result ma_noise_set_seed(ma_noise* pNoise, ma_int32 seed);
MA_API ma_result ma_noise_set_type(ma_noise* pNoise, ma_noise_type type); MA_API ma_result ma_noise_set_type(ma_noise* pNoise, ma_noise_type type);
...@@ -54531,17 +54531,7 @@ MA_API ma_noise_config ma_noise_config_init(ma_format format, ma_uint32 channels ...@@ -54531,17 +54531,7 @@ MA_API ma_noise_config ma_noise_config_init(ma_format format, ma_uint32 channels
static ma_result ma_noise__data_source_on_read(ma_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead) static ma_result ma_noise__data_source_on_read(ma_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead)
{ {
ma_uint64 framesRead = ma_noise_read_pcm_frames((ma_noise*)pDataSource, pFramesOut, frameCount); return ma_noise_read_pcm_frames((ma_noise*)pDataSource, pFramesOut, frameCount, pFramesRead);
if (pFramesRead != NULL) {
*pFramesRead = framesRead;
}
if (framesRead == 0) {
return MA_AT_END;
}
return MA_SUCCESS;
} }
static ma_result ma_noise__data_source_on_seek(ma_data_source* pDataSource, ma_uint64 frameIndex) static ma_result ma_noise__data_source_on_seek(ma_data_source* pDataSource, ma_uint64 frameIndex)
...@@ -54935,32 +54925,39 @@ static MA_INLINE ma_uint64 ma_noise_read_pcm_frames__brownian(ma_noise* pNoise, ...@@ -54935,32 +54925,39 @@ static MA_INLINE ma_uint64 ma_noise_read_pcm_frames__brownian(ma_noise* pNoise,
return frameCount; return frameCount;
} }
MA_API ma_uint64 ma_noise_read_pcm_frames(ma_noise* pNoise, void* pFramesOut, ma_uint64 frameCount) MA_API ma_result ma_noise_read_pcm_frames(ma_noise* pNoise, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead)
{ {
if (pNoise == NULL) { ma_uint64 framesRead = 0;
return 0;
if (pFramesRead != NULL) {
*pFramesRead = 0;
} }
/* The output buffer is allowed to be NULL. Since we aren't tracking cursors or anything we can just do nothing and pretend to be successful. */ if (frameCount == 0) {
if (pFramesOut == NULL) { return MA_INVALID_ARGS;
return frameCount;
} }
if (pNoise->config.type == ma_noise_type_white) { if (pNoise == NULL) {
return ma_noise_read_pcm_frames__white(pNoise, pFramesOut, frameCount); return MA_INVALID_ARGS;
} }
if (pNoise->config.type == ma_noise_type_pink) { /* The output buffer is allowed to be NULL. Since we aren't tracking cursors or anything we can just do nothing and pretend to be successful. */
return ma_noise_read_pcm_frames__pink(pNoise, pFramesOut, frameCount); if (pFramesOut == NULL) {
framesRead = frameCount;
} else {
switch (pNoise->config.type) {
case ma_noise_type_white: framesRead = ma_noise_read_pcm_frames__white (pNoise, pFramesOut, frameCount); break;
case ma_noise_type_pink: framesRead = ma_noise_read_pcm_frames__pink (pNoise, pFramesOut, frameCount); break;
case ma_noise_type_brownian: framesRead = ma_noise_read_pcm_frames__brownian(pNoise, pFramesOut, frameCount); break;
default: return MA_INVALID_OPERATION; /* Unknown noise type. */
}
} }
if (pNoise->config.type == ma_noise_type_brownian) { if (pFramesRead != NULL) {
return ma_noise_read_pcm_frames__brownian(pNoise, pFramesOut, frameCount); *pFramesRead = framesRead;
} }
/* Should never get here. */ return MA_SUCCESS;
MA_ASSERT(MA_FALSE);
return 0;
} }
#endif /* MA_NO_GENERATION */ #endif /* MA_NO_GENERATION */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment