diff options
Diffstat (limited to 'Alc/ALu.c')
-rw-r--r-- | Alc/ALu.c | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -36,6 +36,8 @@ #include "alu.h" #include "bs2b.h" +#include "mixer_defs.h" + struct ChanMap { enum Channel channel; @@ -49,6 +51,49 @@ ALfloat ConeScale = 1.0f; ALfloat ZScale = 1.0f; +static DryMixerFunc SelectDirectMixer(void) +{ +#ifdef HAVE_SSE + if((CPUCapFlags&CPU_CAP_SSE)) + return MixDirect_SSE; +#endif +#ifdef HAVE_NEON + if((CPUCapFlags&CPU_CAP_NEON)) + return MixDirect_Neon; +#endif + + return MixDirect_C; +} + +static DryMixerFunc SelectHrtfMixer(void) +{ +#ifdef HAVE_SSE + if((CPUCapFlags&CPU_CAP_SSE)) + return MixDirect_Hrtf_SSE; +#endif +#ifdef HAVE_NEON + if((CPUCapFlags&CPU_CAP_NEON)) + return MixDirect_Hrtf_Neon; +#endif + + return MixDirect_Hrtf_C; +} + +static WetMixerFunc SelectSendMixer(void) +{ +#ifdef HAVE_SSE + if((CPUCapFlags&CPU_CAP_SSE)) + return MixSend_SSE; +#endif +#ifdef HAVE_NEON + if((CPUCapFlags&CPU_CAP_NEON)) + return MixSend_Neon; +#endif + + return MixSend_C; +} + + static __inline ALvoid aluMatrixVector(ALfloat *vector,ALfloat w,ALfloat matrix[4][4]) { ALfloat temp[4] = { |