Commit a6cd9340 authored by David Reid's avatar David Reid

Version 0.10.30

parent 369fb6fd
/* /*
Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file. Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file.
miniaudio - v0.10.29 - 2020-12-26 miniaudio - v0.10.30 - 2021-01-10
David Reid - mackron@gmail.com David Reid - mackron@gmail.com
...@@ -3605,7 +3605,7 @@ Threading ...@@ -3605,7 +3605,7 @@ Threading
#endif #endif
typedef ma_thread_result (MA_THREADCALL * ma_thread_entry_proc)(void* pData); typedef ma_thread_result (MA_THREADCALL * ma_thread_entry_proc)(void* pData);
static MA_INLINE ma_result ma_spinlock_lock_ex(ma_spinlock* pSpinlock, ma_bool32 yield) static MA_INLINE ma_result ma_spinlock_lock_ex(volatile ma_spinlock* pSpinlock, ma_bool32 yield)
{ {
if (pSpinlock == NULL) { if (pSpinlock == NULL) {
return MA_INVALID_ARGS; return MA_INVALID_ARGS;
...@@ -3626,17 +3626,17 @@ static MA_INLINE ma_result ma_spinlock_lock_ex(ma_spinlock* pSpinlock, ma_bool32 ...@@ -3626,17 +3626,17 @@ static MA_INLINE ma_result ma_spinlock_lock_ex(ma_spinlock* pSpinlock, ma_bool32
return MA_SUCCESS; return MA_SUCCESS;
} }
MA_API ma_result ma_spinlock_lock(ma_spinlock* pSpinlock) MA_API ma_result ma_spinlock_lock(volatile ma_spinlock* pSpinlock)
{ {
return ma_spinlock_lock_ex(pSpinlock, MA_TRUE); return ma_spinlock_lock_ex(pSpinlock, MA_TRUE);
} }
MA_API ma_result ma_spinlock_lock_noyield(ma_spinlock* pSpinlock) MA_API ma_result ma_spinlock_lock_noyield(volatile ma_spinlock* pSpinlock)
{ {
return ma_spinlock_lock_ex(pSpinlock, MA_FALSE); return ma_spinlock_lock_ex(pSpinlock, MA_FALSE);
} }
MA_API ma_result ma_spinlock_unlock(ma_spinlock* pSpinlock) MA_API ma_result ma_spinlock_unlock(volatile ma_spinlock* pSpinlock)
{ {
if (pSpinlock == NULL) { if (pSpinlock == NULL) {
return MA_INVALID_ARGS; return MA_INVALID_ARGS;
...@@ -4940,7 +4940,7 @@ Timing ...@@ -4940,7 +4940,7 @@ Timing
*******************************************************************************/ *******************************************************************************/
#ifdef MA_WIN32 #ifdef MA_WIN32
static LARGE_INTEGER g_ma_TimerFrequency = {{0}}; static LARGE_INTEGER g_ma_TimerFrequency; /* <-- Initialized to zero since it's static. */
static void ma_timer_init(ma_timer* pTimer) static void ma_timer_init(ma_timer* pTimer)
{ {
LARGE_INTEGER counter; LARGE_INTEGER counter;
...@@ -6153,6 +6153,7 @@ static ma_result ma_context_init__null(ma_context* pContext, const ma_context_co ...@@ -6153,6 +6153,7 @@ static ma_result ma_context_init__null(ma_context* pContext, const ma_context_co
MA_ASSERT(pContext != NULL); MA_ASSERT(pContext != NULL);
(void)pConfig; (void)pConfig;
(void)pContext;
pCallbacks->onContextInit = ma_context_init__null; pCallbacks->onContextInit = ma_context_init__null;
pCallbacks->onContextUninit = ma_context_uninit__null; pCallbacks->onContextUninit = ma_context_uninit__null;
...@@ -7413,6 +7414,8 @@ static LPWSTR ma_context_get_default_device_id_from_IMMDeviceEnumerator__wasapi( ...@@ -7413,6 +7414,8 @@ static LPWSTR ma_context_get_default_device_id_from_IMMDeviceEnumerator__wasapi(
MA_ASSERT(pContext != NULL); MA_ASSERT(pContext != NULL);
MA_ASSERT(pDeviceEnumerator != NULL); MA_ASSERT(pDeviceEnumerator != NULL);
(void)pContext;
/* Grab the EDataFlow type from the device type. */ /* Grab the EDataFlow type from the device type. */
dataFlow = ma_device_type_to_EDataFlow(deviceType); dataFlow = ma_device_type_to_EDataFlow(deviceType);
...@@ -37371,7 +37374,7 @@ MA_API ma_uint64 ma_audio_buffer_read_pcm_frames(ma_audio_buffer* pAudioBuffer, ...@@ -37371,7 +37374,7 @@ MA_API ma_uint64 ma_audio_buffer_read_pcm_frames(ma_audio_buffer* pAudioBuffer,
} }
if (pFramesOut != NULL) { if (pFramesOut != NULL) {
ma_copy_pcm_frames(pFramesOut, ma_offset_ptr(pAudioBuffer->pData, pAudioBuffer->cursor * ma_get_bytes_per_frame(pAudioBuffer->format, pAudioBuffer->channels)), frameCount, pAudioBuffer->format, pAudioBuffer->channels); ma_copy_pcm_frames(pFramesOut, ma_offset_ptr(pAudioBuffer->pData, pAudioBuffer->cursor * ma_get_bytes_per_frame(pAudioBuffer->format, pAudioBuffer->channels)), framesToRead, pAudioBuffer->format, pAudioBuffer->channels);
} }
totalFramesRead += framesToRead; totalFramesRead += framesToRead;
...@@ -39586,6 +39589,8 @@ static ma_result ma_decoder_init_wav__internal(const ma_decoder_config* pConfig, ...@@ -39586,6 +39589,8 @@ static ma_result ma_decoder_init_wav__internal(const ma_decoder_config* pConfig,
MA_ASSERT(pConfig != NULL); MA_ASSERT(pConfig != NULL);
MA_ASSERT(pDecoder != NULL); MA_ASSERT(pDecoder != NULL);
(void)pConfig;
pWav = (drwav*)ma__malloc_from_callbacks(sizeof(*pWav), &pDecoder->allocationCallbacks); pWav = (drwav*)ma__malloc_from_callbacks(sizeof(*pWav), &pDecoder->allocationCallbacks);
if (pWav == NULL) { if (pWav == NULL) {
return MA_OUT_OF_MEMORY; return MA_OUT_OF_MEMORY;
...@@ -39847,6 +39852,8 @@ static ma_result ma_decoder_init_mp3__internal(const ma_decoder_config* pConfig, ...@@ -39847,6 +39852,8 @@ static ma_result ma_decoder_init_mp3__internal(const ma_decoder_config* pConfig,
MA_ASSERT(pConfig != NULL); MA_ASSERT(pConfig != NULL);
MA_ASSERT(pDecoder != NULL); MA_ASSERT(pDecoder != NULL);
(void)pConfig;
pMP3 = (drmp3*)ma__malloc_from_callbacks(sizeof(*pMP3), &pDecoder->allocationCallbacks); pMP3 = (drmp3*)ma__malloc_from_callbacks(sizeof(*pMP3), &pDecoder->allocationCallbacks);
if (pMP3 == NULL) { if (pMP3 == NULL) {
return MA_OUT_OF_MEMORY; return MA_OUT_OF_MEMORY;
...@@ -40312,6 +40319,8 @@ static ma_result ma_decoder_init_raw__internal(const ma_decoder_config* pConfigI ...@@ -40312,6 +40319,8 @@ static ma_result ma_decoder_init_raw__internal(const ma_decoder_config* pConfigI
MA_ASSERT(pConfigOut != NULL); MA_ASSERT(pConfigOut != NULL);
MA_ASSERT(pDecoder != NULL); MA_ASSERT(pDecoder != NULL);
(void)pConfigOut;
pDecoder->onReadPCMFrames = ma_decoder_internal_on_read_pcm_frames__raw; pDecoder->onReadPCMFrames = ma_decoder_internal_on_read_pcm_frames__raw;
pDecoder->onSeekToPCMFrame = ma_decoder_internal_on_seek_to_pcm_frame__raw; pDecoder->onSeekToPCMFrame = ma_decoder_internal_on_seek_to_pcm_frame__raw;
pDecoder->onUninit = ma_decoder_internal_on_uninit__raw; pDecoder->onUninit = ma_decoder_internal_on_uninit__raw;
/* /*
Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file. Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file.
miniaudio - v0.10.29 - 2020-12-26 miniaudio - v0.10.30 - 2021-01-10
David Reid - mackron@gmail.com David Reid - mackron@gmail.com
...@@ -20,7 +20,7 @@ extern "C" { ...@@ -20,7 +20,7 @@ extern "C" {
#define MA_VERSION_MAJOR 0 #define MA_VERSION_MAJOR 0
#define MA_VERSION_MINOR 10 #define MA_VERSION_MINOR 10
#define MA_VERSION_REVISION 29 #define MA_VERSION_REVISION 30
#define MA_VERSION_STRING MA_XSTRINGIFY(MA_VERSION_MAJOR) "." MA_XSTRINGIFY(MA_VERSION_MINOR) "." MA_XSTRINGIFY(MA_VERSION_REVISION) #define MA_VERSION_STRING MA_XSTRINGIFY(MA_VERSION_MAJOR) "." MA_XSTRINGIFY(MA_VERSION_MINOR) "." MA_XSTRINGIFY(MA_VERSION_REVISION)
#if defined(_MSC_VER) && !defined(__clang__) #if defined(_MSC_VER) && !defined(__clang__)
...@@ -338,6 +338,7 @@ typedef int ma_result; ...@@ -338,6 +338,7 @@ typedef int ma_result;
#define MA_NO_DEVICE -104 #define MA_NO_DEVICE -104
#define MA_API_NOT_FOUND -105 #define MA_API_NOT_FOUND -105
#define MA_INVALID_DEVICE_CONFIG -106 #define MA_INVALID_DEVICE_CONFIG -106
#define MA_LOOP -107
/* State errors. */ /* State errors. */
#define MA_DEVICE_NOT_INITIALIZED -200 #define MA_DEVICE_NOT_INITIALIZED -200
...@@ -4136,17 +4137,17 @@ MA_API ma_bool32 ma_is_loopback_supported(ma_backend backend); ...@@ -4136,17 +4137,17 @@ MA_API ma_bool32 ma_is_loopback_supported(ma_backend backend);
/* /*
Locks a spinlock. Locks a spinlock.
*/ */
MA_API ma_result ma_spinlock_lock(ma_spinlock* pSpinlock); MA_API ma_result ma_spinlock_lock(volatile ma_spinlock* pSpinlock);
/* /*
Locks a spinlock, but does not yield() when looping. Locks a spinlock, but does not yield() when looping.
*/ */
MA_API ma_result ma_spinlock_lock_noyield(ma_spinlock* pSpinlock); MA_API ma_result ma_spinlock_lock_noyield(volatile ma_spinlock* pSpinlock);
/* /*
Unlocks a spinlock. Unlocks a spinlock.
*/ */
MA_API ma_result ma_spinlock_unlock(ma_spinlock* pSpinlock); MA_API ma_result ma_spinlock_unlock(volatile ma_spinlock* pSpinlock);
/* /*
...@@ -4239,6 +4240,8 @@ Offsets a pointer by the specified number of PCM frames. ...@@ -4239,6 +4240,8 @@ Offsets a pointer by the specified number of PCM frames.
*/ */
MA_API void* ma_offset_pcm_frames_ptr(void* p, ma_uint64 offsetInFrames, ma_format format, ma_uint32 channels); MA_API void* ma_offset_pcm_frames_ptr(void* p, ma_uint64 offsetInFrames, ma_format format, ma_uint32 channels);
MA_API const void* ma_offset_pcm_frames_const_ptr(const void* p, ma_uint64 offsetInFrames, ma_format format, ma_uint32 channels); MA_API const void* ma_offset_pcm_frames_const_ptr(const void* p, ma_uint64 offsetInFrames, ma_format format, ma_uint32 channels);
static MA_INLINE float* ma_offset_pcm_frames_ptr_f32(float* p, ma_uint64 offsetInFrames, ma_uint32 channels) { return (float*)ma_offset_pcm_frames_const_ptr((void*)p, offsetInFrames, ma_format_f32, channels); }
static MA_INLINE const float* ma_offset_pcm_frames_const_ptr_f32(const float* p, ma_uint64 offsetInFrames, ma_uint32 channels) { return (const float*)ma_offset_pcm_frames_const_ptr((const void*)p, offsetInFrames, ma_format_f32, channels); }
/* /*
......
/* /*
Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file. Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file.
miniaudio - v0.10.30 - TBD miniaudio - v0.10.30 - 2021-01-10
David Reid - mackron@gmail.com David Reid - mackron@gmail.com
...@@ -64684,7 +64684,7 @@ The following miscellaneous changes have also been made. ...@@ -64684,7 +64684,7 @@ The following miscellaneous changes have also been made.
/* /*
REVISION HISTORY REVISION HISTORY
================ ================
v0.10.30 - TBD v0.10.30 - 2021-01-10
- Fix a crash in ma_audio_buffer_read_pcm_frames(). - Fix a crash in ma_audio_buffer_read_pcm_frames().
- Update spinlock APIs to take a volatile parameter as input. - Update spinlock APIs to take a volatile parameter as input.
- Silence some unused parameter warnings. - Silence some unused parameter warnings.
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