mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-23 00:34:03 +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
|
||||
=====================
|
||||
* 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.
|
||||
|
||||
```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
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user