mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-24 09:14:04 +02:00
Merge branch 'dev' into dev-0.12
This commit is contained in:
+17
@@ -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
|
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.
|
* 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.
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ Examples
|
|||||||
This example shows one way to play a sound using the high level API.
|
This example shows one way to play a sound using the high level API.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#include "miniaudio.h"
|
#include "miniaudio/miniaudio.h"
|
||||||
|
|
||||||
#include <stdio.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.
|
This example shows how to decode and play a sound using the low level API.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#include "miniaudio.h"
|
#include "miniaudio/miniaudio.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|||||||
+18
-21
@@ -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.
|
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
|
David Reid - mackron@gmail.com
|
||||||
|
|
||||||
@@ -12,18 +12,10 @@ GitHub: https://github.com/mackron/miniaudio
|
|||||||
/*
|
/*
|
||||||
1. Introduction
|
1. Introduction
|
||||||
===============
|
===============
|
||||||
To use miniaudio, include "miniaudio.h":
|
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
|
||||||
```c
|
any other library. Note that ABI compatiblity is not guaranteed between versions, even with bug
|
||||||
#include "miniaudio.h"
|
fix releases, so take care if compiling as a shared object.
|
||||||
```
|
|
||||||
|
|
||||||
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"
|
|
||||||
```
|
|
||||||
|
|
||||||
miniaudio includes both low level and high level APIs. The low level API is good for those who want
|
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
|
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
|
miniaudio should work cleanly out of the box without the need to download or install any
|
||||||
dependencies. See below for platform-specific details.
|
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.
|
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`,
|
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_MAJOR 0
|
||||||
#define MA_VERSION_MINOR 11
|
#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)
|
#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__)
|
||||||
@@ -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_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;
|
ma_uint64 totalFramesRead = 0;
|
||||||
static ma_int32 adaptationTable[] = {
|
static const ma_int32 adaptationTable[] = {
|
||||||
230, 230, 230, 230, 307, 409, 512, 614,
|
230, 230, 230, 230, 307, 409, 512, 614,
|
||||||
768, 614, 512, 409, 307, 230, 230, 230
|
768, 614, 512, 409, 307, 230, 230, 230
|
||||||
};
|
};
|
||||||
static ma_int32 coeff1Table[] = { 256, 512, 0, 192, 240, 460, 392 };
|
static const 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 coeff2Table[] = { 0, -256, 0, 64, 0, -208, -232 };
|
||||||
MA_DR_WAV_ASSERT(pWav != NULL);
|
MA_DR_WAV_ASSERT(pWav != NULL);
|
||||||
MA_DR_WAV_ASSERT(framesToRead > 0);
|
MA_DR_WAV_ASSERT(framesToRead > 0);
|
||||||
while (pWav->readCursorInPCMFrames < pWav->totalPCMFrameCount) {
|
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_uint64 totalFramesRead = 0;
|
||||||
ma_uint32 iChannel;
|
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,
|
||||||
-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,
|
7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
|
||||||
19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
|
19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
|
||||||
50, 55, 60, 66, 73, 80, 88, 97, 107, 118,
|
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;
|
return totalFramesRead;
|
||||||
}
|
}
|
||||||
#ifndef MA_DR_WAV_NO_CONVERSION_API
|
#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,
|
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,
|
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,
|
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,
|
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
|
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,
|
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,
|
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,
|
0xE104, 0xE204, 0xE304, 0xE404, 0xE504, 0xE604, 0xE704, 0xE804, 0xE904, 0xEA04, 0xEB04, 0xEC04, 0xED04, 0xEE04, 0xEF04, 0xF004,
|
||||||
|
|||||||
Reference in New Issue
Block a user