#ifndef _ALU_H_ #define _ALU_H_ #include "config.h" #include "AL/al.h" #include "AL/alc.h" #include "AL/alext.h" #include #include #ifdef HAVE_FLOAT_H #include #endif #ifndef M_PI #define M_PI 3.14159265358979323846 /* pi */ #define M_PI_2 1.57079632679489661923 /* pi/2 */ #endif #ifdef HAVE_POWF #define aluPow(x,y) (float2ALfp(powf(ALfp2float(x), ALfp2float(y)))) #else #define aluPow(x,y) (float2ALfp((float)pow((double)ALfp2float(x), (double)ALfp2float(y)))) #endif #ifdef HAVE_SQRTF #define aluSqrt(x) (float2ALfp(sqrtf(ALfp2float(x)))) #else #define aluSqrt(x) (float2ALfp((float)sqrt((double)ALfp2float(x)))) #endif #ifdef HAVE_ACOSF #define aluAcos(x) (float2ALfp(acosf(ALfp2float(x)))) #else #define aluAcos(x) (float2ALfp((float)acos((double)ALfp2float(x)))) #endif #ifdef HAVE_ATANF #define aluAtan(x) (float2ALfp(atanf(ALfp2float(x)))) #else #define aluAtan(x) (float2ALfp((float)atan((double)ALfp2float(x)))) #endif #ifdef HAVE_FABSF #define aluFabs(x) (float2ALfp(fabsf(ALfp2float(x)))) #else #define aluFabs(x) (float2ALfp((float)fabs((double)ALfp2float(x)))) #endif // FIXME make this better #if defined(max) && !defined(__max) #define __max(x,y) float2ALfp(max(ALfp2float(x),ALfp2float(y))) #endif #if defined(min) && !defined(__min) #define __min(x,y) float2ALfp(min(ALfp2float(x),ALfp2float(y))) #endif #define QUADRANT_NUM 128 #define LUT_NUM (4 * QUADRANT_NUM) #ifdef __cplusplus extern "C" { #endif typedef enum { FRONT_LEFT = 0, FRONT_RIGHT, FRONT_CENTER, LFE, BACK_LEFT, BACK_RIGHT, BACK_CENTER, SIDE_LEFT, SIDE_RIGHT, } Channel; #ifndef MAXCHANNELS #define MAXCHANNELS (SIDE_RIGHT+1) #error MAXCHANNELS #endif #define BUFFERSIZE 4096 #define FRACTIONBITS (14) #define FRACTIONONE (1<