zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
alFilter.h
Go to the documentation of this file.
1 #ifndef _AL_FILTER_H_
2 #define _AL_FILTER_H_
3 
4 #include "alMain.h"
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
10 #define LOWPASSFREQREF (5000)
11 
12 typedef struct {
14 #ifndef _MSC_VER
15  ALfloat history[0];
16 #else
17  ALfloat history[1];
18 #endif
19 } FILTER;
20 
22 {
23  ALfloat *history = &iir->history[offset*2];
24  ALfloat a = iir->coeff;
26 
27  output = output + (history[0]-output)*a;
28  history[0] = output;
29  output = output + (history[1]-output)*a;
30  history[1] = output;
31 
32  return output;
33 }
34 
35 static __inline ALfloat lpFilter2PC(const FILTER *iir, ALuint offset, ALfloat input)
36 {
37  const ALfloat *history = &iir->history[offset*2];
38  ALfloat a = iir->coeff;
40 
41  output = output + (history[0]-output)*a;
42  output = output + (history[1]-output)*a;
43 
44  return output;
45 }
46 
47 /* Calculates the low-pass filter coefficient given the pre-scaled gain and
48  * cos(w) value. Note that g should be pre-scaled (sqr(gain) for one-pole,
49  * sqrt(gain) for four-pole, etc) */
51 
52 
53 typedef struct ALfilter {
54  // Filter type (AL_FILTER_NULL, ...)
56 
59 
64 
69 
70  /* Self ID */
72 } ALfilter;
73 
74 #define ALfilter_SetParami(x, c, p, v) ((x)->SetParami((x),(c),(p),(v)))
75 #define ALfilter_SetParamiv(x, c, p, v) ((x)->SetParamiv((x),(c),(p),(v)))
76 #define ALfilter_SetParamf(x, c, p, v) ((x)->SetParamf((x),(c),(p),(v)))
77 #define ALfilter_SetParamfv(x, c, p, v) ((x)->SetParamfv((x),(c),(p),(v)))
78 
79 #define ALfilter_GetParami(x, c, p, v) ((x)->GetParami((x),(c),(p),(v)))
80 #define ALfilter_GetParamiv(x, c, p, v) ((x)->GetParamiv((x),(c),(p),(v)))
81 #define ALfilter_GetParamf(x, c, p, v) ((x)->GetParamf((x),(c),(p),(v)))
82 #define ALfilter_GetParamfv(x, c, p, v) ((x)->GetParamfv((x),(c),(p),(v)))
83 
85 
86 #ifdef __cplusplus
87 }
88 #endif
89 
90 #endif
ALfloat coeff
Definition: alFilter.h:13
GLuint const GLfloat * val
Definition: glew.h:2715
void ALvoid
Definition: al.h:74
GLenum GLint param
Definition: gl2ext.h:1491
ALfloat history[0]
Definition: alFilter.h:15
GLvoid **typedef void(GLAPIENTRY *PFNGLGETVERTEXATTRIBDVPROC)(GLuint
Definition: glew.h:1824
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: gl2ext.h:961
void(* SetParamfv)(struct ALfilter *filter, ALCcontext *context, ALenum param, const ALfloat *vals)
Definition: alFilter.h:63
GLboolean GLboolean g
Definition: glew.h:8736
ALuint id
Definition: alFilter.h:71
ALfloat lpCoeffCalc(ALfloat g, ALfloat cw)
Definition: alFilter.c:329
void(* SetParamiv)(struct ALfilter *filter, ALCcontext *context, ALenum param, const ALint *vals)
Definition: alFilter.h:61
int ALint
Definition: al.h:56
struct ALfilter ALfilter
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
float ALfloat
Definition: al.h:68
static __inline ALfloat lpFilter2P(FILTER *iir, ALuint offset, ALfloat input)
Definition: alFilter.h:21
ALenum type
Definition: alFilter.h:55
void(* SetParamf)(struct ALfilter *filter, ALCcontext *context, ALenum param, ALfloat val)
Definition: alFilter.h:62
void(* SetParami)(struct ALfilter *filter, ALCcontext *context, ALenum param, ALint val)
Definition: alFilter.h:60
ALfloat Gain
Definition: alFilter.h:57
ALfloat GainHF
Definition: alFilter.h:58
int ALenum
Definition: al.h:65
void(* GetParamf)(struct ALfilter *filter, ALCcontext *context, ALenum param, ALfloat *val)
Definition: alFilter.h:67
unsigned int ALuint
Definition: al.h:59
GLenum GLenum GLenum input
Definition: glew.h:12631
GLintptr offset
Definition: glew.h:1668
void(* GetParamfv)(struct ALfilter *filter, ALCcontext *context, ALenum param, ALfloat *vals)
Definition: alFilter.h:68
void(* GetParamiv)(struct ALfilter *filter, ALCcontext *context, ALenum param, ALint *vals)
Definition: alFilter.h:66
TParseContext * context
static __inline ALfloat lpFilter2PC(const FILTER *iir, ALuint offset, ALfloat input)
Definition: alFilter.h:35
ALvoid ReleaseALFilters(ALCdevice *device)
Definition: alFilter.c:424
void(* GetParami)(struct ALfilter *filter, ALCcontext *context, ALenum param, ALint *val)
Definition: alFilter.h:65