From 55f16e62f6e73859caf8e573417fd70f93eea59d Mon Sep 17 00:00:00 2001 From: amaldika Date: Fri, 27 Mar 2026 16:01:56 +0530 Subject: [PATCH 1/4] Support to build for arm64EC configuration on MSVC. --- miniaudio.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/miniaudio.h b/miniaudio.h index a58ac69f..063da8b6 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -3764,7 +3764,7 @@ extern "C" { #endif -#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64) || defined(__ia64) || defined(_M_IA64) || defined(__aarch64__) || defined(_M_ARM64) || defined(__powerpc64__) || defined(__ppc64__) +#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64) || defined(__ia64) || defined(_M_IA64) || defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(__powerpc64__) || defined(__ppc64__) #define MA_SIZEOF_PTR 8 #else #define MA_SIZEOF_PTR 4 @@ -11656,11 +11656,11 @@ IMPLEMENTATION #if defined(__arm__) || defined(_M_ARM) #define MA_ARM32 #endif -#if defined(__arm64) || defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64) +#if defined(__arm64) || defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) #define MA_ARM64 #endif -#if defined(__x86_64__) || defined(_M_X64) +#if defined(__x86_64__) || (defined(_M_X64) && !defined(_M_ARM64EC)) #define MA_X64 #elif defined(__i386) || defined(_M_IX86) #define MA_X86 @@ -11715,7 +11715,7 @@ IMPLEMENTATION #endif #if defined(MA_ARM) - #if !defined(MA_NO_NEON) && (defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64)) + #if !defined(MA_NO_NEON) && (defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) #define MA_SUPPORT_NEON #include #endif From 56ffd77769d1e6cb2662fd67b9f87cd3002f3b70 Mon Sep 17 00:00:00 2001 From: Yuri Khrustalev Date: Wed, 15 Apr 2026 12:30:55 -0400 Subject: [PATCH 2/4] Make ma_android_sdk_version static to fix -Wmissing-prototypes. --- miniaudio.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/miniaudio.h b/miniaudio.h index 063da8b6..0e2f9573 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -12169,7 +12169,7 @@ static MA_INLINE void ma_restore_denormals(unsigned int prevState) #ifdef MA_ANDROID #include -int ma_android_sdk_version() +static int ma_android_sdk_version(void) { char sdkVersion[PROP_VALUE_MAX + 1] = {0, }; if (__system_property_get("ro.build.version.sdk", sdkVersion)) { From 7533c9d3417f66f94db1070f889a277c1f2b1bed Mon Sep 17 00:00:00 2001 From: David Reid Date: Sun, 26 Apr 2026 08:10:43 +1000 Subject: [PATCH 3/4] Update build instructions for Emscripten test. --- tests/_build/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/_build/README.md b/tests/_build/README.md index 92985409..d0e3876d 100644 --- a/tests/_build/README.md +++ b/tests/_build/README.md @@ -15,11 +15,11 @@ On Linux, do `source ~/emsdk/emsdk_env.sh` before compiling. On Windows, you need to move into the build and run emsdk_env.bat from a command prompt using an absolute path like "C:\emsdk\emsdk_env.bat". Note that PowerShell doesn't work for me for some reason. Example: - emcc ../test_emscripten/ma_test_emscripten.c -o bin/test_emscripten.html -sAUDIO_WORKLET=1 -sWASM_WORKERS=1 -sASYNCIFY -DMA_ENABLE_AUDIO_WORKLETS -Wall -Wextra + emcc ../emscripten/emscripten.c -o bin/emscripten.html -sAUDIO_WORKLET=1 -sWASM_WORKERS=1 -sASYNCIFY -DMA_ENABLE_AUDIO_WORKLETS -Wall -Wextra If you output WASM it may not work when running the web page locally. To test you can run with something like this: - emrun ./bin/test_emscripten.html + emrun ./bin/emscripten.html If you want to see stdout on the command line when running from emrun, add `--emrun` to your emcc command. \ No newline at end of file From dcfc24c100e349459276fafddbffe2c5a0a84f58 Mon Sep 17 00:00:00 2001 From: Echo J Date: Fri, 3 Apr 2026 14:53:36 +0300 Subject: [PATCH 4/4] Emscripten: Cast pointer arguments to pointer-sized integers For some reason, 64-bit pointer arguments are casted to Numbers in Emscripten's type handling (which causes conversion errors when passing them back to native code) --- miniaudio.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/miniaudio.h b/miniaudio.h index 0e2f9573..694b73c1 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -42101,7 +42101,7 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co state: 1, /* 1 = ma_device_state_stopped */ pDevice: $1 }); - }, pDevice->webaudio.audioContext, pDevice); + }, pDevice->webaudio.audioContext, (ma_uintptr)pDevice); return MA_SUCCESS; } @@ -42182,7 +42182,7 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co /* The node processing callback. */ device.scriptNode.onaudioprocess = function(e) { if (device.intermediaryBufferView == null || device.intermediaryBufferView.length == 0) { - device.intermediaryBufferView = new Float32Array(HEAPF32.buffer, pIntermediaryBuffer, bufferSize * channels); + device.intermediaryBufferView = new Float32Array(HEAPF32.buffer, Number(pIntermediaryBuffer), bufferSize * channels); } /* Do the capture side first. */ @@ -42239,7 +42239,7 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co device.pDevice = pDevice; return window.miniaudio.track_device(device); - }, pConfig->deviceType, channels, sampleRate, periodSizeInFrames, pDevice->webaudio.pIntermediaryBuffer, pDevice); + }, pConfig->deviceType, channels, sampleRate, periodSizeInFrames, (ma_uintptr)pDevice->webaudio.pIntermediaryBuffer, (ma_uintptr)pDevice); if (deviceIndex < 0) { return MA_FAILED_TO_OPEN_BACKEND_DEVICE;