14 #define M_PI 3.14159265358979323846 /* pi */
15 #define M_PI_2 1.57079632679489661923 /* pi/2 */
19 #define aluPow(x,y) ((ALfloat)powf((float)(x),(float)(y)))
21 #define aluPow(x,y) ((ALfloat)pow((double)(x),(double)(y)))
25 #define aluSqrt(x) ((ALfloat)sqrtf((float)(x)))
27 #define aluSqrt(x) ((ALfloat)sqrt((double)(x)))
31 #define aluAcos(x) ((ALfloat)acosf((float)(x)))
33 #define aluAcos(x) ((ALfloat)acos((double)(x)))
37 #define aluAtan(x) ((ALfloat)atanf((float)(x)))
39 #define aluAtan(x) ((ALfloat)atan((double)(x)))
43 #define aluFabs(x) ((ALfloat)fabsf((float)(x)))
45 #define aluFabs(x) ((ALfloat)fabs((double)(x)))
49 #if defined(max) && !defined(__max)
52 #if defined(min) && !defined(__min)
56 #define QUADRANT_NUM 128
57 #define LUT_NUM (4 * QUADRANT_NUM)
77 #define BUFFERSIZE 8192
79 /* NOTE: The AL_FORMAT_REAR* enums aren't handled here because they're
80 * converted to AL_FORMAT_QUAD* when loaded */
81 static __inline ALuint
aluBytesFromFormat(ALenum format
)
86 case AL_FORMAT_STEREO8
:
87 case AL_FORMAT_QUAD8_LOKI
:
89 case AL_FORMAT_51CHN8
:
90 case AL_FORMAT_61CHN8
:
91 case AL_FORMAT_71CHN8
:
94 case AL_FORMAT_MONO16
:
95 case AL_FORMAT_STEREO16
:
96 case AL_FORMAT_QUAD16_LOKI
:
97 case AL_FORMAT_QUAD16
:
98 case AL_FORMAT_51CHN16
:
99 case AL_FORMAT_61CHN16
:
100 case AL_FORMAT_71CHN16
:
103 case AL_FORMAT_MONO_FLOAT32
:
104 case AL_FORMAT_STEREO_FLOAT32
:
105 case AL_FORMAT_QUAD32
:
106 case AL_FORMAT_51CHN32
:
107 case AL_FORMAT_61CHN32
:
108 case AL_FORMAT_71CHN32
:
111 case AL_FORMAT_MONO_DOUBLE_EXT
:
112 case AL_FORMAT_STEREO_DOUBLE_EXT
:
119 static __inline ALuint
aluChannelsFromFormat(ALenum format
)
123 case AL_FORMAT_MONO8
:
124 case AL_FORMAT_MONO16
:
125 case AL_FORMAT_MONO_FLOAT32
:
126 case AL_FORMAT_MONO_DOUBLE_EXT
:
129 case AL_FORMAT_STEREO8
:
130 case AL_FORMAT_STEREO16
:
131 case AL_FORMAT_STEREO_FLOAT32
:
132 case AL_FORMAT_STEREO_DOUBLE_EXT
:
135 case AL_FORMAT_QUAD8_LOKI
:
136 case AL_FORMAT_QUAD16_LOKI
:
137 case AL_FORMAT_QUAD8
:
138 case AL_FORMAT_QUAD16
:
139 case AL_FORMAT_QUAD32
:
142 case AL_FORMAT_51CHN8
:
143 case AL_FORMAT_51CHN16
:
144 case AL_FORMAT_51CHN32
:
147 case AL_FORMAT_61CHN8
:
148 case AL_FORMAT_61CHN16
:
149 case AL_FORMAT_61CHN32
:
152 case AL_FORMAT_71CHN8
:
153 case AL_FORMAT_71CHN16
:
154 case AL_FORMAT_71CHN32
:
161 static __inline ALuint
aluFrameSizeFromFormat(ALenum format
)
163 return aluBytesFromFormat(format
) * aluChannelsFromFormat(format
);
166 static __inline ALint
aluCart2LUTpos(ALfloat re
, ALfloat im
)
169 ALfloat denom
= aluFabs(re
) + aluFabs(im
);
171 pos
= (ALint
)(QUADRANT_NUM
*aluFabs(im
) / denom
+ 0.5);
174 pos
= 2 * QUADRANT_NUM
- pos
;
180 ALvoid
aluInitPanning(ALCdevice
*Device
);
181 ALvoid
aluMixData(ALCdevice
*device
, ALvoid
*buffer
, ALsizei size
);
182 ALvoid
aluHandleDisconnect(ALCdevice
*device
);