77
#define BUFFERSIZE 16384
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:
113
case AL_FORMAT_MONO_DOUBLE_EXT:
114
case AL_FORMAT_STEREO_DOUBLE_EXT:
121
static __inline ALuint aluChannelsFromFormat(ALenum format)
125
case AL_FORMAT_MONO8:
126
case AL_FORMAT_MONO16:
127
case AL_FORMAT_MONO_FLOAT32:
128
case AL_FORMAT_MONO_DOUBLE_EXT:
131
case AL_FORMAT_STEREO8:
132
case AL_FORMAT_STEREO16:
133
case AL_FORMAT_STEREO_FLOAT32:
134
case AL_FORMAT_STEREO_DOUBLE_EXT:
137
case AL_FORMAT_QUAD8_LOKI:
138
case AL_FORMAT_QUAD16_LOKI:
139
case AL_FORMAT_QUAD8:
140
case AL_FORMAT_QUAD16:
141
case AL_FORMAT_QUAD32:
144
case AL_FORMAT_51CHN8:
145
case AL_FORMAT_51CHN16:
146
case AL_FORMAT_51CHN32:
149
case AL_FORMAT_61CHN8:
150
case AL_FORMAT_61CHN16:
151
case AL_FORMAT_61CHN32:
154
case AL_FORMAT_71CHN8:
155
case AL_FORMAT_71CHN16:
156
case AL_FORMAT_71CHN32:
164
static __inline ALint aluCart2LUTpos(ALfloat re, ALfloat im)
167
ALfloat denom = aluFabs(re) + aluFabs(im);
169
pos = (ALint)(QUADRANT_NUM*aluFabs(im) / denom + 0.5);
172
pos = 2 * QUADRANT_NUM - pos;
178
ALvoid aluInitPanning(ALCcontext *Context);
78
#define BUFFERSIZE 4096
80
#define FRACTIONBITS (14)
81
#define FRACTIONONE (1<<FRACTIONBITS)
82
#define FRACTIONMASK (FRACTIONONE-1)
84
/* Size for temporary stack storage of buffer data. Larger values need more
85
* stack, while smaller values may need more iterations. The value needs to be
86
* a sensible size, however, as it constrains the max stepping value used for
88
* The mixer requires being able to do two samplings per mixing loop. A 16KB
89
* buffer can hold 512 sample frames for a 7.1 float buffer. With the cubic
90
* resampler (which requires 3 padding sample frames), this limits the maximum
91
* step to about 508. This means that buffer_freq*source_pitch cannot exceed
92
* device_freq*508 for an 8-channel 32-bit buffer. */
93
#ifndef STACK_DATA_SIZE
94
#define STACK_DATA_SIZE 16384
98
static __inline ALdouble lerp(ALdouble val1, ALdouble val2, ALdouble mu)
100
return val1 + (val2-val1)*mu;
102
static __inline ALdouble cubic(ALdouble val0, ALdouble val1, ALdouble val2, ALdouble val3, ALdouble mu)
104
ALdouble mu2 = mu*mu;
105
ALdouble a0 = -0.5*val0 + 1.5*val1 + -1.5*val2 + 0.5*val3;
106
ALdouble a1 = val0 + -2.5*val1 + 2.0*val2 + -0.5*val3;
107
ALdouble a2 = -0.5*val0 + 0.5*val2;
110
return a0*mu*mu2 + a1*mu2 + a2*mu + a3;
115
ALvoid aluInitPanning(ALCdevice *Device);
116
ALint aluCart2LUTpos(ALfloat re, ALfloat im);
118
ALvoid CalcSourceParams(struct ALsource *ALSource, const ALCcontext *ALContext);
119
ALvoid CalcNonAttnSourceParams(struct ALsource *ALSource, const ALCcontext *ALContext);
121
ALvoid MixSource(struct ALsource *Source, ALCdevice *Device, ALuint SamplesToDo);
179
123
ALvoid aluMixData(ALCdevice *device, ALvoid *buffer, ALsizei size);
180
124
ALvoid aluHandleDisconnect(ALCdevice *device);