mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-23 16:54:03 +02:00
Merge branch 'dev' into dev-0.12
This commit is contained in:
@@ -572,6 +572,7 @@ if(HAS_LIBVORBIS)
|
|||||||
target_compile_options (miniaudio_libvorbis PRIVATE ${COMPILE_OPTIONS})
|
target_compile_options (miniaudio_libvorbis PRIVATE ${COMPILE_OPTIONS})
|
||||||
target_compile_definitions(miniaudio_libvorbis PRIVATE ${COMPILE_DEFINES})
|
target_compile_definitions(miniaudio_libvorbis PRIVATE ${COMPILE_DEFINES})
|
||||||
target_link_libraries (miniaudio_libvorbis PRIVATE libvorbis_interface)
|
target_link_libraries (miniaudio_libvorbis PRIVATE libvorbis_interface)
|
||||||
|
target_include_directories(miniaudio_libvorbis PUBLIC extras/decoders/libvorbis/)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(libopus_interface INTERFACE)
|
add_library(libopus_interface INTERFACE)
|
||||||
@@ -601,6 +602,7 @@ if(HAS_LIBOPUS)
|
|||||||
target_compile_options (miniaudio_libopus PRIVATE ${COMPILE_OPTIONS})
|
target_compile_options (miniaudio_libopus PRIVATE ${COMPILE_OPTIONS})
|
||||||
target_compile_definitions(miniaudio_libopus PRIVATE ${COMPILE_DEFINES})
|
target_compile_definitions(miniaudio_libopus PRIVATE ${COMPILE_DEFINES})
|
||||||
target_link_libraries (miniaudio_libopus PRIVATE libopus_interface)
|
target_link_libraries (miniaudio_libopus PRIVATE libopus_interface)
|
||||||
|
target_include_directories(miniaudio_libopus PUBLIC extras/decoders/libopus/)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+35
-25
@@ -63490,6 +63490,8 @@ Decoding and Encoding Headers. These are auto-generated from a tool.
|
|||||||
|
|
||||||
**************************************************************************************************************************************************************/
|
**************************************************************************************************************************************************************/
|
||||||
#if !defined(MA_NO_WAV) && (!defined(MA_NO_DECODING) || !defined(MA_NO_ENCODING))
|
#if !defined(MA_NO_WAV) && (!defined(MA_NO_DECODING) || !defined(MA_NO_ENCODING))
|
||||||
|
#define MA_HAS_WAV
|
||||||
|
|
||||||
/* dr_wav_h begin */
|
/* dr_wav_h begin */
|
||||||
#ifndef ma_dr_wav_h
|
#ifndef ma_dr_wav_h
|
||||||
#define ma_dr_wav_h
|
#define ma_dr_wav_h
|
||||||
@@ -63500,7 +63502,7 @@ extern "C" {
|
|||||||
#define MA_DR_WAV_XSTRINGIFY(x) MA_DR_WAV_STRINGIFY(x)
|
#define MA_DR_WAV_XSTRINGIFY(x) MA_DR_WAV_STRINGIFY(x)
|
||||||
#define MA_DR_WAV_VERSION_MAJOR 0
|
#define MA_DR_WAV_VERSION_MAJOR 0
|
||||||
#define MA_DR_WAV_VERSION_MINOR 14
|
#define MA_DR_WAV_VERSION_MINOR 14
|
||||||
#define MA_DR_WAV_VERSION_REVISION 1
|
#define MA_DR_WAV_VERSION_REVISION 3
|
||||||
#define MA_DR_WAV_VERSION_STRING MA_DR_WAV_XSTRINGIFY(MA_DR_WAV_VERSION_MAJOR) "." MA_DR_WAV_XSTRINGIFY(MA_DR_WAV_VERSION_MINOR) "." MA_DR_WAV_XSTRINGIFY(MA_DR_WAV_VERSION_REVISION)
|
#define MA_DR_WAV_VERSION_STRING MA_DR_WAV_XSTRINGIFY(MA_DR_WAV_VERSION_MAJOR) "." MA_DR_WAV_XSTRINGIFY(MA_DR_WAV_VERSION_MINOR) "." MA_DR_WAV_XSTRINGIFY(MA_DR_WAV_VERSION_REVISION)
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#define MA_DR_WAVE_FORMAT_PCM 0x1
|
#define MA_DR_WAVE_FORMAT_PCM 0x1
|
||||||
@@ -63923,6 +63925,8 @@ MA_API ma_bool32 ma_dr_wav_fourcc_equal(const ma_uint8* a, const char* b);
|
|||||||
#endif /* MA_NO_WAV */
|
#endif /* MA_NO_WAV */
|
||||||
|
|
||||||
#if !defined(MA_NO_FLAC) && !defined(MA_NO_DECODING)
|
#if !defined(MA_NO_FLAC) && !defined(MA_NO_DECODING)
|
||||||
|
#define MA_HAS_FLAC
|
||||||
|
|
||||||
/* dr_flac_h begin */
|
/* dr_flac_h begin */
|
||||||
#ifndef ma_dr_flac_h
|
#ifndef ma_dr_flac_h
|
||||||
#define ma_dr_flac_h
|
#define ma_dr_flac_h
|
||||||
@@ -64215,6 +64219,8 @@ MA_API ma_bool32 ma_dr_flac_next_cuesheet_track(ma_dr_flac_cuesheet_track_iterat
|
|||||||
#endif /* MA_NO_FLAC */
|
#endif /* MA_NO_FLAC */
|
||||||
|
|
||||||
#if !defined(MA_NO_MP3) && !defined(MA_NO_DECODING)
|
#if !defined(MA_NO_MP3) && !defined(MA_NO_DECODING)
|
||||||
|
#define MA_HAS_MP3
|
||||||
|
|
||||||
#ifndef MA_DR_MP3_NO_SIMD
|
#ifndef MA_DR_MP3_NO_SIMD
|
||||||
#if (defined(MA_NO_NEON) && defined(MA_ARM)) || (defined(MA_NO_SSE2) && (defined(MA_X86) || defined(MA_X64)))
|
#if (defined(MA_NO_NEON) && defined(MA_ARM)) || (defined(MA_NO_SSE2) && (defined(MA_X86) || defined(MA_X64)))
|
||||||
#define MA_DR_MP3_NO_SIMD
|
#define MA_DR_MP3_NO_SIMD
|
||||||
@@ -64397,7 +64403,6 @@ Decoding
|
|||||||
|
|
||||||
/* WAV */
|
/* WAV */
|
||||||
#ifdef ma_dr_wav_h
|
#ifdef ma_dr_wav_h
|
||||||
#define MA_HAS_WAV
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@@ -65095,7 +65100,6 @@ ma_decoding_backend_vtable* ma_decoding_backend_wav = NULL;
|
|||||||
|
|
||||||
/* FLAC */
|
/* FLAC */
|
||||||
#ifdef ma_dr_flac_h
|
#ifdef ma_dr_flac_h
|
||||||
#define MA_HAS_FLAC
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@@ -65731,7 +65735,6 @@ ma_decoding_backend_vtable* ma_decoding_backend_flac = NULL;
|
|||||||
|
|
||||||
/* MP3 */
|
/* MP3 */
|
||||||
#ifdef ma_dr_mp3_h
|
#ifdef ma_dr_mp3_h
|
||||||
#define MA_HAS_MP3
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@@ -84099,7 +84102,7 @@ MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__msadpcm(ma_dr_wav* pWav, ma_
|
|||||||
pWav->msadpcm.cachedFrames[2] = pWav->msadpcm.prevFrames[0][0];
|
pWav->msadpcm.cachedFrames[2] = pWav->msadpcm.prevFrames[0][0];
|
||||||
pWav->msadpcm.cachedFrames[3] = pWav->msadpcm.prevFrames[0][1];
|
pWav->msadpcm.cachedFrames[3] = pWav->msadpcm.prevFrames[0][1];
|
||||||
pWav->msadpcm.cachedFrameCount = 2;
|
pWav->msadpcm.cachedFrameCount = 2;
|
||||||
if (pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff1Table)) {
|
if (pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff1Table) || pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff2Table)) {
|
||||||
return totalFramesRead;
|
return totalFramesRead;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -84121,7 +84124,8 @@ MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__msadpcm(ma_dr_wav* pWav, ma_
|
|||||||
pWav->msadpcm.cachedFrames[2] = pWav->msadpcm.prevFrames[0][1];
|
pWav->msadpcm.cachedFrames[2] = pWav->msadpcm.prevFrames[0][1];
|
||||||
pWav->msadpcm.cachedFrames[3] = pWav->msadpcm.prevFrames[1][1];
|
pWav->msadpcm.cachedFrames[3] = pWav->msadpcm.prevFrames[1][1];
|
||||||
pWav->msadpcm.cachedFrameCount = 2;
|
pWav->msadpcm.cachedFrameCount = 2;
|
||||||
if (pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff1Table) || pWav->msadpcm.predictor[1] >= ma_dr_wav_countof(coeff2Table)) {
|
if (pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff1Table) || pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff2Table) ||
|
||||||
|
pWav->msadpcm.predictor[1] >= ma_dr_wav_countof(coeff1Table) || pWav->msadpcm.predictor[1] >= ma_dr_wav_countof(coeff2Table)) {
|
||||||
return totalFramesRead;
|
return totalFramesRead;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -84158,6 +84162,9 @@ MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__msadpcm(ma_dr_wav* pWav, ma_
|
|||||||
if (pWav->channels == 1) {
|
if (pWav->channels == 1) {
|
||||||
ma_int32 newSample0;
|
ma_int32 newSample0;
|
||||||
ma_int32 newSample1;
|
ma_int32 newSample1;
|
||||||
|
if (pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff1Table) || pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff2Table)) {
|
||||||
|
return totalFramesRead;
|
||||||
|
}
|
||||||
newSample0 = ((pWav->msadpcm.prevFrames[0][1] * coeff1Table[pWav->msadpcm.predictor[0]]) + (pWav->msadpcm.prevFrames[0][0] * coeff2Table[pWav->msadpcm.predictor[0]])) >> 8;
|
newSample0 = ((pWav->msadpcm.prevFrames[0][1] * coeff1Table[pWav->msadpcm.predictor[0]]) + (pWav->msadpcm.prevFrames[0][0] * coeff2Table[pWav->msadpcm.predictor[0]])) >> 8;
|
||||||
newSample0 += nibble0 * pWav->msadpcm.delta[0];
|
newSample0 += nibble0 * pWav->msadpcm.delta[0];
|
||||||
newSample0 = ma_dr_wav_clamp(newSample0, -32768, 32767);
|
newSample0 = ma_dr_wav_clamp(newSample0, -32768, 32767);
|
||||||
@@ -84182,6 +84189,9 @@ MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__msadpcm(ma_dr_wav* pWav, ma_
|
|||||||
} else {
|
} else {
|
||||||
ma_int32 newSample0;
|
ma_int32 newSample0;
|
||||||
ma_int32 newSample1;
|
ma_int32 newSample1;
|
||||||
|
if (pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff1Table) || pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff2Table)) {
|
||||||
|
return totalFramesRead;
|
||||||
|
}
|
||||||
newSample0 = ((pWav->msadpcm.prevFrames[0][1] * coeff1Table[pWav->msadpcm.predictor[0]]) + (pWav->msadpcm.prevFrames[0][0] * coeff2Table[pWav->msadpcm.predictor[0]])) >> 8;
|
newSample0 = ((pWav->msadpcm.prevFrames[0][1] * coeff1Table[pWav->msadpcm.predictor[0]]) + (pWav->msadpcm.prevFrames[0][0] * coeff2Table[pWav->msadpcm.predictor[0]])) >> 8;
|
||||||
newSample0 += nibble0 * pWav->msadpcm.delta[0];
|
newSample0 += nibble0 * pWav->msadpcm.delta[0];
|
||||||
newSample0 = ma_dr_wav_clamp(newSample0, -32768, 32767);
|
newSample0 = ma_dr_wav_clamp(newSample0, -32768, 32767);
|
||||||
@@ -84191,6 +84201,9 @@ MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__msadpcm(ma_dr_wav* pWav, ma_
|
|||||||
}
|
}
|
||||||
pWav->msadpcm.prevFrames[0][0] = pWav->msadpcm.prevFrames[0][1];
|
pWav->msadpcm.prevFrames[0][0] = pWav->msadpcm.prevFrames[0][1];
|
||||||
pWav->msadpcm.prevFrames[0][1] = newSample0;
|
pWav->msadpcm.prevFrames[0][1] = newSample0;
|
||||||
|
if (pWav->msadpcm.predictor[1] >= ma_dr_wav_countof(coeff1Table) || pWav->msadpcm.predictor[1] >= ma_dr_wav_countof(coeff2Table)) {
|
||||||
|
return totalFramesRead;
|
||||||
|
}
|
||||||
newSample1 = ((pWav->msadpcm.prevFrames[1][1] * coeff1Table[pWav->msadpcm.predictor[1]]) + (pWav->msadpcm.prevFrames[1][0] * coeff2Table[pWav->msadpcm.predictor[1]])) >> 8;
|
newSample1 = ((pWav->msadpcm.prevFrames[1][1] * coeff1Table[pWav->msadpcm.predictor[1]]) + (pWav->msadpcm.prevFrames[1][0] * coeff2Table[pWav->msadpcm.predictor[1]])) >> 8;
|
||||||
newSample1 += nibble1 * pWav->msadpcm.delta[1];
|
newSample1 += nibble1 * pWav->msadpcm.delta[1];
|
||||||
newSample1 = ma_dr_wav_clamp(newSample1, -32768, 32767);
|
newSample1 = ma_dr_wav_clamp(newSample1, -32768, 32767);
|
||||||
@@ -85435,6 +85448,10 @@ MA_PRIVATE ma_int16* ma_dr_wav__read_pcm_frames_and_close_s16(ma_dr_wav* pWav, u
|
|||||||
ma_int16* pSampleData;
|
ma_int16* pSampleData;
|
||||||
ma_uint64 framesRead;
|
ma_uint64 framesRead;
|
||||||
MA_DR_WAV_ASSERT(pWav != NULL);
|
MA_DR_WAV_ASSERT(pWav != NULL);
|
||||||
|
if (pWav->channels == 0 || pWav->totalPCMFrameCount > MA_SIZE_MAX / pWav->channels / sizeof(ma_int16)) {
|
||||||
|
ma_dr_wav_uninit(pWav);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
sampleDataSize = pWav->totalPCMFrameCount * pWav->channels * sizeof(ma_int16);
|
sampleDataSize = pWav->totalPCMFrameCount * pWav->channels * sizeof(ma_int16);
|
||||||
if (sampleDataSize > MA_SIZE_MAX) {
|
if (sampleDataSize > MA_SIZE_MAX) {
|
||||||
ma_dr_wav_uninit(pWav);
|
ma_dr_wav_uninit(pWav);
|
||||||
@@ -85469,6 +85486,10 @@ MA_PRIVATE float* ma_dr_wav__read_pcm_frames_and_close_f32(ma_dr_wav* pWav, unsi
|
|||||||
float* pSampleData;
|
float* pSampleData;
|
||||||
ma_uint64 framesRead;
|
ma_uint64 framesRead;
|
||||||
MA_DR_WAV_ASSERT(pWav != NULL);
|
MA_DR_WAV_ASSERT(pWav != NULL);
|
||||||
|
if (pWav->channels == 0 || pWav->totalPCMFrameCount > MA_SIZE_MAX / pWav->channels / sizeof(float)) {
|
||||||
|
ma_dr_wav_uninit(pWav);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
sampleDataSize = pWav->totalPCMFrameCount * pWav->channels * sizeof(float);
|
sampleDataSize = pWav->totalPCMFrameCount * pWav->channels * sizeof(float);
|
||||||
if (sampleDataSize > MA_SIZE_MAX) {
|
if (sampleDataSize > MA_SIZE_MAX) {
|
||||||
ma_dr_wav_uninit(pWav);
|
ma_dr_wav_uninit(pWav);
|
||||||
@@ -85503,6 +85524,10 @@ MA_PRIVATE ma_int32* ma_dr_wav__read_pcm_frames_and_close_s32(ma_dr_wav* pWav, u
|
|||||||
ma_int32* pSampleData;
|
ma_int32* pSampleData;
|
||||||
ma_uint64 framesRead;
|
ma_uint64 framesRead;
|
||||||
MA_DR_WAV_ASSERT(pWav != NULL);
|
MA_DR_WAV_ASSERT(pWav != NULL);
|
||||||
|
if (pWav->channels == 0 || pWav->totalPCMFrameCount > MA_SIZE_MAX / pWav->channels / sizeof(ma_int32)) {
|
||||||
|
ma_dr_wav_uninit(pWav);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
sampleDataSize = pWav->totalPCMFrameCount * pWav->channels * sizeof(ma_int32);
|
sampleDataSize = pWav->totalPCMFrameCount * pWav->channels * sizeof(ma_int32);
|
||||||
if (sampleDataSize > MA_SIZE_MAX) {
|
if (sampleDataSize > MA_SIZE_MAX) {
|
||||||
ma_dr_wav_uninit(pWav);
|
ma_dr_wav_uninit(pWav);
|
||||||
@@ -93375,16 +93400,14 @@ static type* ma_dr_flac__full_read_and_close_ ## extension (ma_dr_flac* pFlac, u
|
|||||||
{ \
|
{ \
|
||||||
type* pSampleData = NULL; \
|
type* pSampleData = NULL; \
|
||||||
ma_uint64 totalPCMFrameCount; \
|
ma_uint64 totalPCMFrameCount; \
|
||||||
\
|
|
||||||
MA_DR_FLAC_ASSERT(pFlac != NULL); \
|
|
||||||
\
|
|
||||||
totalPCMFrameCount = pFlac->totalPCMFrameCount; \
|
|
||||||
\
|
|
||||||
if (totalPCMFrameCount == 0) { \
|
|
||||||
type buffer[4096]; \
|
type buffer[4096]; \
|
||||||
ma_uint64 pcmFramesRead; \
|
ma_uint64 pcmFramesRead; \
|
||||||
size_t sampleDataBufferSize = sizeof(buffer); \
|
size_t sampleDataBufferSize = sizeof(buffer); \
|
||||||
\
|
\
|
||||||
|
MA_DR_FLAC_ASSERT(pFlac != NULL); \
|
||||||
|
\
|
||||||
|
totalPCMFrameCount = 0; \
|
||||||
|
\
|
||||||
pSampleData = (type*)ma_dr_flac__malloc_from_callbacks(sampleDataBufferSize, &pFlac->allocationCallbacks); \
|
pSampleData = (type*)ma_dr_flac__malloc_from_callbacks(sampleDataBufferSize, &pFlac->allocationCallbacks); \
|
||||||
if (pSampleData == NULL) { \
|
if (pSampleData == NULL) { \
|
||||||
goto on_error; \
|
goto on_error; \
|
||||||
@@ -93412,19 +93435,6 @@ static type* ma_dr_flac__full_read_and_close_ ## extension (ma_dr_flac* pFlac, u
|
|||||||
\
|
\
|
||||||
\
|
\
|
||||||
MA_DR_FLAC_ZERO_MEMORY(pSampleData + (totalPCMFrameCount*pFlac->channels), (size_t)(sampleDataBufferSize - totalPCMFrameCount*pFlac->channels*sizeof(type))); \
|
MA_DR_FLAC_ZERO_MEMORY(pSampleData + (totalPCMFrameCount*pFlac->channels), (size_t)(sampleDataBufferSize - totalPCMFrameCount*pFlac->channels*sizeof(type))); \
|
||||||
} else { \
|
|
||||||
ma_uint64 dataSize = totalPCMFrameCount*pFlac->channels*sizeof(type); \
|
|
||||||
if (dataSize > (ma_uint64)MA_SIZE_MAX) { \
|
|
||||||
goto on_error; \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
pSampleData = (type*)ma_dr_flac__malloc_from_callbacks((size_t)dataSize, &pFlac->allocationCallbacks); \
|
|
||||||
if (pSampleData == NULL) { \
|
|
||||||
goto on_error; \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
totalPCMFrameCount = ma_dr_flac_read_pcm_frames_##extension(pFlac, pFlac->totalPCMFrameCount, pSampleData); \
|
|
||||||
} \
|
|
||||||
\
|
\
|
||||||
if (sampleRateOut) *sampleRateOut = pFlac->sampleRate; \
|
if (sampleRateOut) *sampleRateOut = pFlac->sampleRate; \
|
||||||
if (channelsOut) *channelsOut = pFlac->channels; \
|
if (channelsOut) *channelsOut = pFlac->channels; \
|
||||||
|
|||||||
Reference in New Issue
Block a user