summaryrefslogtreecommitdiffstats
path: root/media/libsoundtouch/moz-libsoundtouch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'media/libsoundtouch/moz-libsoundtouch.patch')
-rw-r--r--media/libsoundtouch/moz-libsoundtouch.patch152
1 files changed, 152 insertions, 0 deletions
diff --git a/media/libsoundtouch/moz-libsoundtouch.patch b/media/libsoundtouch/moz-libsoundtouch.patch
new file mode 100644
index 0000000000..d5607caed4
--- /dev/null
+++ b/media/libsoundtouch/moz-libsoundtouch.patch
@@ -0,0 +1,152 @@
+diff -u /src/cpu_detect_x86.cpp /src/cpu_detect_x86.cpp
+--- /src/cpu_detect_x86.cpp
++++ /src/cpu_detect_x86.cpp
+@@ -37,9 +37,8 @@
+
+
+ #if defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS)
+-
+- #if defined(__GNUC__) && defined(__i386__)
+- // gcc
++ #if defined(__GNUC__) && defined(HAVE_CPUID_H)
++ // gcc and clang
+ #include "cpuid.h"
+ #elif defined(_M_IX86)
+ // windows non-gcc
+@@ -71,10 +70,18 @@
+ /// Checks which instruction set extensions are supported by the CPU.
+ uint detectCPUextensions(void)
+ {
++/// If building for RLBox, we enable the SSE code that will be
++/// translated to WASMSIMD with SIMD-everywhere.
++#if defined(SOUNDTOUCH_WASM_SIMD)
++ uint res = 0;
++ res = res | SUPPORT_SSE;
++ res = res | SUPPORT_SSE2;
++ return res & ~_dwDisabledISA;
++
+ /// If building for a 64bit system (no Itanium) and the user wants optimizations.
+ /// Return the OR of SUPPORT_{MMX,SSE,SSE2}. 11001 or 0x19.
+ /// Keep the _dwDisabledISA test (2 more operations, could be eliminated).
+-#if ((defined(__GNUC__) && defined(__x86_64__)) \
++#elif ((defined(__GNUC__) && defined(__x86_64__)) \
+ || defined(_M_X64)) \
+ && defined(SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS)
+ return 0x19 & ~_dwDisabledISA;
+@@ -89,18 +96,7 @@
+
+ uint res = 0;
+
+-#if defined(__GNUC__)
+- // GCC version of cpuid. Requires GCC 4.3.0 or later for __cpuid intrinsic support.
+- uint eax, ebx, ecx, edx; // unsigned int is the standard type. uint is defined by the compiler and not guaranteed to be portable.
+-
+- // Check if no cpuid support.
+- if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) return 0; // always disable extensions.
+-
+- if (edx & bit_MMX) res = res | SUPPORT_MMX;
+- if (edx & bit_SSE) res = res | SUPPORT_SSE;
+- if (edx & bit_SSE2) res = res | SUPPORT_SSE2;
+-
+-#else
++#if !defined(__GNUC__)
+ // Window / VS version of cpuid. Notice that Visual Studio 2005 or later required
+ // for __cpuid intrinsic support.
+ int reg[4] = {-1};
+@@ -113,7 +109,19 @@
+ if ((unsigned int)reg[3] & bit_MMX) res = res | SUPPORT_MMX;
+ if ((unsigned int)reg[3] & bit_SSE) res = res | SUPPORT_SSE;
+ if ((unsigned int)reg[3] & bit_SSE2) res = res | SUPPORT_SSE2;
++#elif defined(HAVE_CPUID_H)
++ // GCC version of cpuid. Requires GCC 4.3.0 or later for __cpuid intrinsic support.
++ uint eax, ebx, ecx, edx; // unsigned int is the standard type. uint is defined by the compiler and not guaranteed to be portable.
++
++ // Check if no cpuid support.
++ if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) return 0; // always disable extensions.
+
++ if (edx & bit_MMX) res = res | SUPPORT_MMX;
++ if (edx & bit_SSE) res = res | SUPPORT_SSE;
++ if (edx & bit_SSE2) res = res | SUPPORT_SSE2;
++#else
++ // Compatible with GCC but no cpuid.h.
++ return 0;
+ #endif
+
+ return res & ~_dwDisabledISA;
+diff -u /src/STTypes.h /src/STTypes.h
+--- /src/STTypes.h
++++ /src/STTypes.h
+@@ -54,11 +54,7 @@
+ #define SOUNDTOUCH_ALIGN_POINTER_16(x) ( ( (ulongptr)(x) + 15 ) & ~(ulongptr)15 )
+
+
+-#if (defined(__GNUC__) && !defined(ANDROID))
+- // In GCC, include soundtouch_config.h made by config scritps.
+- // Skip this in Android compilation that uses GCC but without configure scripts.
+- #include "soundtouch_config.h"
+-#endif
++#include "soundtouch_config.h"
+
+ namespace soundtouch
+ {
+diff -u /src/FIRFilter.cpp /src/FIRFilter.cpp
+--- /src/FIRFilter.cpp
++++ /src/FIRFilter.cpp
+@@ -291,9 +296,11 @@
+
+ FIRFilter * FIRFilter::newInstance()
+ {
++#if defined(SOUNDTOUCH_ALLOW_MMX) || defined(SOUNDTOUCH_ALLOW_SSE)
+ uint uExtensions;
+
+ uExtensions = detectCPUextensions();
++#endif
+
+ // Check if MMX/SSE instruction set extensions supported by CPU
+
+diff -u /src/TDStretch.cpp /src/TDStretch.cpp
+--- /src/TDStretch.cpp
++++ /src/TDStretch.cpp
+@@ -624,9 +624,11 @@
+
+ TDStretch * TDStretch::newInstance()
+ {
++#if defined(SOUNDTOUCH_ALLOW_MMX) || defined(SOUNDTOUCH_ALLOW_SSE)
+ uint uExtensions;
+
+ uExtensions = detectCPUextensions();
++#endif
+
+ // Check if MMX/SSE instruction set extensions supported by CPU
+
+diff -u /src/AAFilter.cpp /src/AAFilter.cpp
+--- /src/AAFilter.cpp
++++ /src/AAFilter.cpp
+@@ -42,7 +42,7 @@
+
+ using namespace soundtouch;
+
+-#define PI 3.14159265358979323846
++#define PI M_PI
+ #define TWOPI (2 * PI)
+
+ // define this to save AA filter coefficients to a file
+
+
+diff -u /src/sse_optimized.cpp /src/sse_optimized.cpp
+--- /src/sse_optimized.cpp
++++ /src_patched/sse_optimized.cpp
+@@ -60,7 +60,13 @@
+ //////////////////////////////////////////////////////////////////////////////
+
+ #include "TDStretch.h"
++
++#ifdef SOUNDTOUCH_WASM_SIMD
++#include "simde/x86/avx2.h"
++#else
+ #include <xmmintrin.h>
++#endif
++
+ #include <math.h>
+
+ // Calculates cross correlation of two buffers