Merge branch 'dev' into dev-0.12

This commit is contained in:
David Reid
2025-07-23 12:12:53 +10:00
3 changed files with 37 additions and 23 deletions
+17
View File
@@ -1,3 +1,20 @@
v0.11.23 - TBD
=====================
* Fixed an error in `ma_channel_map_to_string()` where the output string is not null terminated correctly.
* Fixed an error with logging due to mishandling of va_list.
* Fixed some errors when compiling with `MA_NO_RUNTIME_LINKING`.
* Fixed an alignment error with the ring buffer.
* Fixed a memory leak in the resource manager when opening a file fails.
* Fixed an assertion failure in the resource manager when opening a file fails.
* Improved compatibility with old versions of GCC.
* WAV, FLAC and MP3 decoders have been brought up to date with dr_libs. Of particular note, this should fix some long outstanding bugs with MP3 due to metadata not being handled correctly.
* POSIX: Added a fallback for when creation of a real-time thread fails. This fallback can be disabled with `MA_NO_PTHREAD_REALTIME_PRIORITY_FALLBACK` if you need an explicit failure.
* POSIX: pthread.h is no longer included when `MA_NO_THREADING` is defined.
* WASAPI: Improved handling of COM initialization and shutdown to make it a bit more robust.
* PulseAudio: Fixed a crash when requesting a channel count greater than 32.
* AAudio: Fixed a crash when uninitializing the device while in the middle of rerouting.
v0.11.22 - 2025-02-24
=====================
* Starting from version 0.12, miniaudio will be switching to a split .c/h pair, away from a single header. In preparation for this, a file named "miniaudio.c" has been added to repository. Currently this is just a simple wrapper around miniaudio.h and `MINIAUDIO_IMPLEMENTATION`. Nothing has changed in miniaudio.h, however when version 0.12 is released you will need to use miniaudio.c for the implementation. It's recommended you start the transition away from `MINIAUDIO_IMPLEMENTATION` and towards miniaudio.c. If you want to keep building your project as a single translation unit, you can do `#include "miniaudio.c"` which will continue to be supported with version 0.12 and beyond.
+2 -2
View File
@@ -50,7 +50,7 @@ Examples
This example shows one way to play a sound using the high level API.
```c
#include "miniaudio.h"
#include "miniaudio/miniaudio.h"
#include <stdio.h>
@@ -78,7 +78,7 @@ int main()
This example shows how to decode and play a sound using the low level API.
```c
#include "miniaudio.h"
#include "miniaudio/miniaudio.h"
#include <stdio.h>
+18 -21
View File
@@ -1,6 +1,6 @@
/*
Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file.
miniaudio - v0.11.22 - 2025-02-24
miniaudio - v0.11.23 - TBD
David Reid - mackron@gmail.com
@@ -12,18 +12,10 @@ GitHub: https://github.com/mackron/miniaudio
/*
1. Introduction
===============
To use miniaudio, include "miniaudio.h":
```c
#include "miniaudio.h"
```
The implementation is contained in "miniaudio.c". Just compile this like any other source file. You
can include miniaudio.c if you want to compile your project as a single translation unit:
```c
#include "miniaudio.c"
```
To use miniaudio, just include "miniaudio.h" like any other header and add "miniaudio.c" to your
source tree. If you don't want to add it to your source tree you can compile and link to it like
any other library. Note that ABI compatiblity is not guaranteed between versions, even with bug
fix releases, so take care if compiling as a shared object.
miniaudio includes both low level and high level APIs. The low level API is good for those who want
to do all of their mixing themselves and only require a light weight interface to the underlying
@@ -463,6 +455,11 @@ is at the end, use `ma_sound_at_end()`. Looping of a sound can be controlled wit
miniaudio should work cleanly out of the box without the need to download or install any
dependencies. See below for platform-specific details.
This library has been designed to be added directly to your source tree which is the preferred way
of using it, but you can compile it as a normal library if that's your preference. Be careful if
compiling as a shared object because miniaudio is not ABI compatible between any release, including
bug fix releases. It's recommended you link statically.
Note that GCC and Clang require `-msse2`, `-mavx2`, etc. for SIMD optimizations.
If you get errors about undefined references to `__sync_val_compare_and_swap_8`, `__atomic_load_8`,
@@ -3770,7 +3767,7 @@ extern "C" {
#define MA_VERSION_MAJOR 0
#define MA_VERSION_MINOR 11
#define MA_VERSION_REVISION 22
#define MA_VERSION_REVISION 23
#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__)
@@ -83176,12 +83173,12 @@ MA_API ma_uint64 ma_dr_wav_write_pcm_frames(ma_dr_wav* pWav, ma_uint64 framesToW
MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__msadpcm(ma_dr_wav* pWav, ma_uint64 framesToRead, ma_int16* pBufferOut)
{
ma_uint64 totalFramesRead = 0;
static ma_int32 adaptationTable[] = {
static const ma_int32 adaptationTable[] = {
230, 230, 230, 230, 307, 409, 512, 614,
768, 614, 512, 409, 307, 230, 230, 230
};
static ma_int32 coeff1Table[] = { 256, 512, 0, 192, 240, 460, 392 };
static ma_int32 coeff2Table[] = { 0, -256, 0, 64, 0, -208, -232 };
static const ma_int32 coeff1Table[] = { 256, 512, 0, 192, 240, 460, 392 };
static const ma_int32 coeff2Table[] = { 0, -256, 0, 64, 0, -208, -232 };
MA_DR_WAV_ASSERT(pWav != NULL);
MA_DR_WAV_ASSERT(framesToRead > 0);
while (pWav->readCursorInPCMFrames < pWav->totalPCMFrameCount) {
@@ -83314,11 +83311,11 @@ MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__ima(ma_dr_wav* pWav, ma_uint
{
ma_uint64 totalFramesRead = 0;
ma_uint32 iChannel;
static ma_int32 indexTable[16] = {
static const ma_int32 indexTable[16] = {
-1, -1, -1, -1, 2, 4, 6, 8,
-1, -1, -1, -1, 2, 4, 6, 8
};
static ma_int32 stepTable[89] = {
static const ma_int32 stepTable[89] = {
7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
50, 55, 60, 66, 73, 80, 88, 97, 107, 118,
@@ -83431,7 +83428,7 @@ MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__ima(ma_dr_wav* pWav, ma_uint
return totalFramesRead;
}
#ifndef MA_DR_WAV_NO_CONVERSION_API
static unsigned short ma_dr_wav_gAlawTable[256] = {
static const unsigned short ma_dr_wav_gAlawTable[256] = {
0xEA80, 0xEB80, 0xE880, 0xE980, 0xEE80, 0xEF80, 0xEC80, 0xED80, 0xE280, 0xE380, 0xE080, 0xE180, 0xE680, 0xE780, 0xE480, 0xE580,
0xF540, 0xF5C0, 0xF440, 0xF4C0, 0xF740, 0xF7C0, 0xF640, 0xF6C0, 0xF140, 0xF1C0, 0xF040, 0xF0C0, 0xF340, 0xF3C0, 0xF240, 0xF2C0,
0xAA00, 0xAE00, 0xA200, 0xA600, 0xBA00, 0xBE00, 0xB200, 0xB600, 0x8A00, 0x8E00, 0x8200, 0x8600, 0x9A00, 0x9E00, 0x9200, 0x9600,
@@ -83449,7 +83446,7 @@ static unsigned short ma_dr_wav_gAlawTable[256] = {
0x0560, 0x0520, 0x05E0, 0x05A0, 0x0460, 0x0420, 0x04E0, 0x04A0, 0x0760, 0x0720, 0x07E0, 0x07A0, 0x0660, 0x0620, 0x06E0, 0x06A0,
0x02B0, 0x0290, 0x02F0, 0x02D0, 0x0230, 0x0210, 0x0270, 0x0250, 0x03B0, 0x0390, 0x03F0, 0x03D0, 0x0330, 0x0310, 0x0370, 0x0350
};
static unsigned short ma_dr_wav_gMulawTable[256] = {
static const unsigned short ma_dr_wav_gMulawTable[256] = {
0x8284, 0x8684, 0x8A84, 0x8E84, 0x9284, 0x9684, 0x9A84, 0x9E84, 0xA284, 0xA684, 0xAA84, 0xAE84, 0xB284, 0xB684, 0xBA84, 0xBE84,
0xC184, 0xC384, 0xC584, 0xC784, 0xC984, 0xCB84, 0xCD84, 0xCF84, 0xD184, 0xD384, 0xD584, 0xD784, 0xD984, 0xDB84, 0xDD84, 0xDF84,
0xE104, 0xE204, 0xE304, 0xE404, 0xE504, 0xE604, 0xE704, 0xE804, 0xE904, 0xEA04, 0xEB04, 0xEC04, 0xED04, 0xEE04, 0xEF04, 0xF004,