16 static __inline ALfloat
lpFilter4P(FILTER
*iir
, ALuint offset
, ALfloat input
)
18 ALfloat
*history
= &iir
->history
[offset
];
19 ALfloat a
= iir
->coeff
;
20 ALfloat output
= input
;
22 output
= output
+ (history
[0]-output
)*a
;
24 output
= output
+ (history
[1]-output
)*a
;
26 output
= output
+ (history
[2]-output
)*a
;
28 output
= output
+ (history
[3]-output
)*a
;
34 static __inline ALfloat
lpFilter2P(FILTER
*iir
, ALuint offset
, ALfloat input
)
36 ALfloat
*history
= &iir
->history
[offset
];
37 ALfloat a
= iir
->coeff
;
38 ALfloat output
= input
;
40 output
= output
+ (history
[0]-output
)*a
;
42 output
= output
+ (history
[1]-output
)*a
;
49 #define AL_FILTER_TYPE 0x8001
51 #define AL_FILTER_NULL 0x0000
52 #define AL_FILTER_LOWPASS 0x0001
53 #define AL_FILTER_HIGHPASS 0x0002
54 #define AL_FILTER_BANDPASS 0x0003
56 #define AL_LOWPASS_GAIN 0x0001
57 #define AL_LOWPASS_GAINHF 0x0002
60 typedef struct ALfilter_struct
62 // Filter type (AL_FILTER_NULL, ...)
71 struct ALfilter_struct
*next
;
74 ALvoid AL_APIENTRY
alGenFilters(ALsizei n
, ALuint
*filters
);
75 ALvoid AL_APIENTRY
alDeleteFilters(ALsizei n
, ALuint
*filters
);
76 ALboolean AL_APIENTRY
alIsFilter(ALuint filter
);
78 ALvoid AL_APIENTRY
alFilteri(ALuint filter
, ALenum param
, ALint iValue
);
79 ALvoid AL_APIENTRY
alFilteriv(ALuint filter
, ALenum param
, ALint
*piValues
);
80 ALvoid AL_APIENTRY
alFilterf(ALuint filter
, ALenum param
, ALfloat flValue
);
81 ALvoid AL_APIENTRY
alFilterfv(ALuint filter
, ALenum param
, ALfloat
*pflValues
);
83 ALvoid AL_APIENTRY
alGetFilteri(ALuint filter
, ALenum param
, ALint
*piValue
);
84 ALvoid AL_APIENTRY
alGetFilteriv(ALuint filter
, ALenum param
, ALint
*piValues
);
85 ALvoid AL_APIENTRY
alGetFilterf(ALuint filter
, ALenum param
, ALfloat
*pflValue
);
86 ALvoid AL_APIENTRY
alGetFilterfv(ALuint filter
, ALenum param
, ALfloat
*pflValues
);
88 ALvoid
ReleaseALFilters(ALvoid
);