diff options
Diffstat (limited to 'media/libsoundtouch/moz-libsoundtouch.patch')
-rw-r--r-- | media/libsoundtouch/moz-libsoundtouch.patch | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/media/libsoundtouch/moz-libsoundtouch.patch b/media/libsoundtouch/moz-libsoundtouch.patch new file mode 100644 index 000000000..87629373e --- /dev/null +++ b/media/libsoundtouch/moz-libsoundtouch.patch @@ -0,0 +1,141 @@ +diff -u /src/cpu_detect_x86.cpp /src/cpu_detect_x86.cpp +--- /src/cpu_detect_x86.cpp ++++ /src/cpu_detect_x86.cpp +@@ -44,9 +44,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 +@@ -97,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}; +@@ -121,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,12 +54,13 @@ + #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" + ++#if defined(WIN32) ++#define EXPORT __declspec(dllexport) ++#else ++#define EXPORT ++#endif + + namespace soundtouch + { +diff -u /src/SoundTouch.h /src/SoundTouch.h +--- /src/SoundTouch.h ++++ /src/SoundTouch.h +@@ -141,7 +141,7 @@ + /// tempo/pitch/rate/samplerate settings. + #define SETTING_NOMINAL_OUTPUT_SEQUENCE 7 + +-class SoundTouch : public FIFOProcessor ++class EXPORT SoundTouch : public FIFOProcessor + { + private: + /// Rate transposer class instance +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 --git a/media/libsoundtouch/src/AAFilter.cpp b/media/libsoundtouch/src/AAFilter.cpp +--- a/media/libsoundtouch/src/AAFilter.cpp ++++ b/media/libsoundtouch/src/AAFilter.cpp +@@ -44,17 +44,17 @@ + #include <assert.h> + #include <math.h> + #include <stdlib.h> + #include "AAFilter.h" + #include "FIRFilter.h" + + using namespace soundtouch; + +-#define PI 3.141592655357989 ++#define PI M_PI + #define TWOPI (2 * PI) + + // define this to save AA filter coefficients to a file + // #define _DEBUG_SAVE_AAFILTER_COEFFICIENTS 1 + + #ifdef _DEBUG_SAVE_AAFILTER_COEFFICIENTS + #include <stdio.h> + |