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 24000
79 extern ALboolean DuplicateStereo
;
81 /* NOTE: The AL_FORMAT_REAR* enums aren't handled here be cause they're
82 * converted to AL_FORMAT_QUAD* when loaded */
83 static __inline ALuint
aluBytesFromFormat(ALenum format
)
88 case AL_FORMAT_STEREO8
:
89 case AL_FORMAT_QUAD8_LOKI
:
91 case AL_FORMAT_51CHN8
:
92 case AL_FORMAT_61CHN8
:
93 case AL_FORMAT_71CHN8
:
96 case AL_FORMAT_MONO16
:
97 case AL_FORMAT_STEREO16
:
98 case AL_FORMAT_QUAD16_LOKI
:
99 case AL_FORMAT_QUAD16
:
100 case AL_FORMAT_51CHN16
:
101 case AL_FORMAT_61CHN16
:
102 case AL_FORMAT_71CHN16
:
105 case AL_FORMAT_MONO_FLOAT32
:
106 case AL_FORMAT_STEREO_FLOAT32
:
107 case AL_FORMAT_QUAD32
:
108 case AL_FORMAT_51CHN32
:
109 case AL_FORMAT_61CHN32
:
110 case AL_FORMAT_71CHN32
:
117 static __inline ALuint
aluChannelsFromFormat(ALenum format
)
121 case AL_FORMAT_MONO8
:
122 case AL_FORMAT_MONO16
:
123 case AL_FORMAT_MONO_FLOAT32
:
126 case AL_FORMAT_STEREO8
:
127 case AL_FORMAT_STEREO16
:
128 case AL_FORMAT_STEREO_FLOAT32
:
131 case AL_FORMAT_QUAD8_LOKI
:
132 case AL_FORMAT_QUAD16_LOKI
:
133 case AL_FORMAT_QUAD8
:
134 case AL_FORMAT_QUAD16
:
135 case AL_FORMAT_QUAD32
:
138 case AL_FORMAT_51CHN8
:
139 case AL_FORMAT_51CHN16
:
140 case AL_FORMAT_51CHN32
:
143 case AL_FORMAT_61CHN8
:
144 case AL_FORMAT_61CHN16
:
145 case AL_FORMAT_61CHN32
:
148 case AL_FORMAT_71CHN8
:
149 case AL_FORMAT_71CHN16
:
150 case AL_FORMAT_71CHN32
:
158 static __inline ALint
aluCart2LUTpos(ALfloat re
, ALfloat im
)
161 ALfloat denom
= aluFabs(re
) + aluFabs(im
);
163 pos
= (ALint
)(QUADRANT_NUM
*aluFabs(im
) / denom
+ 0.5);
166 pos
= 2 * QUADRANT_NUM
- pos
;
172 ALvoid
aluInitPanning(ALCcontext
*Context
);
173 ALvoid
aluMixData(ALCdevice
*device
, ALvoid
*buffer
, ALsizei size
);
174 ALvoid
aluHandleDisconnect(ALCdevice
*device
);