Module: wine Branch: master Commit: a084fd052885678937648886b78e579ed945831f URL: https://gitlab.winehq.org/wine/wine/-/commit/a084fd052885678937648886b78e579...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Oct 2 11:54:20 2023 +0200
faudio: Import upstream release 23.10.
---
libs/faudio/include/FAudio.h | 2 +- libs/faudio/src/F3DAudio.c | 8 +++++--- libs/faudio/src/FACT_internal.c | 26 +++++++++++++++++++++++--- libs/faudio/src/FAudio_internal_simd.c | 2 +- libs/faudio/src/FAudio_platform_win32.c | 8 ++++---- 5 files changed, 34 insertions(+), 12 deletions(-)
diff --git a/libs/faudio/include/FAudio.h b/libs/faudio/include/FAudio.h index 009e93a7fb3..0c75809f79d 100644 --- a/libs/faudio/include/FAudio.h +++ b/libs/faudio/include/FAudio.h @@ -494,7 +494,7 @@ extern FAudioGUID DATAFORMAT_SUBTYPE_IEEE_FLOAT;
#define FAUDIO_ABI_VERSION 0 #define FAUDIO_MAJOR_VERSION 23 -#define FAUDIO_MINOR_VERSION 7 +#define FAUDIO_MINOR_VERSION 10 #define FAUDIO_PATCH_VERSION 0
#define FAUDIO_COMPILED_VERSION ( \ diff --git a/libs/faudio/src/F3DAudio.c b/libs/faudio/src/F3DAudio.c index 068bd1facdf..877f184f130 100644 --- a/libs/faudio/src/F3DAudio.c +++ b/libs/faudio/src/F3DAudio.c @@ -1274,7 +1274,7 @@ static inline void CalculateMatrix( } } } - else + else if (curConfig != NULL) { listenerToEmitter = VectorScale(emitterToListener, -1.0f);
@@ -1351,8 +1351,10 @@ static inline void CalculateMatrix( } } } - - + } + else + { + FAudio_assert(0 && "Config info not found!"); }
/* TODO: add post check to validate values diff --git a/libs/faudio/src/FACT_internal.c b/libs/faudio/src/FACT_internal.c index 22a0f7c04a0..32832fd3270 100644 --- a/libs/faudio/src/FACT_internal.c +++ b/libs/faudio/src/FACT_internal.c @@ -39,6 +39,8 @@ #define FACT_CONTENT_VERSION_3_4 45 #define FACT_CONTENT_VERSION_3_1 44 #define FACT_CONTENT_VERSION_3_0 43 +#define FACT_CONTENT_VERSION_2_4 41 +#define FACT_CONTENT_VERSION_2_0 37
static inline int FACT_INTERNAL_SupportedContent(uint16_t version) { @@ -3105,7 +3107,17 @@ uint32_t FACT_INTERNAL_ParseWaveBank( #define DOSWAP_64(x) x = FAudio_swap64BE(x)
fileOffset = offset; - READ(&header, sizeof(header)) + + FAudio_zero(&header, sizeof(header)); + READ(&header.dwSignature, sizeof(header.dwSignature)); + READ(&header.dwVersion, sizeof(header.dwVersion)); + if (header.dwVersion > FACT_CONTENT_VERSION_2_4) + { + READ(&header.dwHeaderVersion, sizeof(header.dwHeaderVersion)); + } + + READ(&header.Segments, sizeof(header.Segments)); + se = header.dwSignature == 0x57424E44; if (se) { @@ -3123,12 +3135,20 @@ uint32_t FACT_INTERNAL_ParseWaveBank( return -1; /* TODO: NOT XACT FILE */ }
- if (!FACT_INTERNAL_SupportedContent(header.dwVersion)) + /* We support all Wavebank versions - Restore when SoundBank support them also. */ + /*if (!FACT_INTERNAL_SupportedContent(header.dwVersion)) + { + return -2; + } + */ + if ( header.dwVersion < FACT_CONTENT_VERSION_2_4 || + header.dwVersion > FACT_CONTENT_VERSION ) { return -2; }
- if (!FACT_INTERNAL_SupportedWBContent(header.dwHeaderVersion)) + if ( header.dwVersion > FACT_CONTENT_VERSION_2_4 && + !FACT_INTERNAL_SupportedWBContent(header.dwHeaderVersion) ) { return -3; } diff --git a/libs/faudio/src/FAudio_internal_simd.c b/libs/faudio/src/FAudio_internal_simd.c index 21dcd143c4e..71fc281074f 100644 --- a/libs/faudio/src/FAudio_internal_simd.c +++ b/libs/faudio/src/FAudio_internal_simd.c @@ -48,7 +48,7 @@
/* AArch64 guarantees NEON. */ #define NEED_SCALAR_CONVERTER_FALLBACKS 0 -#elif __MACOSX__ +#elif __MACOSX__ && !defined(__POWERPC__) /* Some build systems may need to specify this. */ #if !defined(__SSE2__) && !defined(__ARM_NEON__) #error macOS does not have SSE2/NEON? Bad compiler? diff --git a/libs/faudio/src/FAudio_platform_win32.c b/libs/faudio/src/FAudio_platform_win32.c index 8ed9cde1c7d..d3ded665df9 100644 --- a/libs/faudio/src/FAudio_platform_win32.c +++ b/libs/faudio/src/FAudio_platform_win32.c @@ -444,8 +444,8 @@ uint32_t FAudio_PlatformGetDeviceDetails( hr = IMMDevice_GetId(device, &str); FAudio_assert(!FAILED(hr) && "Failed to get audio endpoint id!");
- lstrcpynW(details->DeviceID, str, ARRAYSIZE(details->DeviceID) - 1); - lstrcpynW(details->DisplayName, str, ARRAYSIZE(details->DisplayName) - 1); + lstrcpynW((WCHAR *)details->DeviceID, str, ARRAYSIZE(details->DeviceID) - 1); + lstrcpynW((WCHAR *)details->DisplayName, str, ARRAYSIZE(details->DisplayName) - 1); CoTaskMemFree(str);
hr = IMMDevice_Activate( @@ -739,7 +739,7 @@ FAudioIOStream* FAudio_memopen(void *mem, int len) uint8_t* FAudio_memptr(FAudioIOStream *io, size_t offset) { struct FAudio_mem *memio = io->data; - return memio->mem + offset; + return (uint8_t *)memio->mem + offset; }
void FAudio_close(FAudioIOStream *io) @@ -896,7 +896,7 @@ FAUDIOAPI float XNA_PlaySong(const char *name) IMFAttributes *attributes = NULL; IMFMediaType *media_type = NULL; UINT32 channels, samplerate; - UINT64 duration; + INT64 duration; PROPVARIANT var; HRESULT hr; WCHAR filename_w[MAX_PATH];