Asterisk - The Open Source Telephony Project GIT-master-f36a736
Functions
filter.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void AllPoleFilter (float *InOut, float *Coef, int lengthInOut, int orderCoef)
 
void AllZeroFilter (float *In, float *Coef, int lengthInOut, int orderCoef, float *Out)
 
void DownSample (float *In, float *Coef, int lengthIn, float *state, float *Out)
 
void ZeroPoleFilter (float *In, float *ZeroCoef, float *PoleCoef, int lengthInOut, int orderCoef, float *Out)
 

Function Documentation

◆ AllPoleFilter()

void AllPoleFilter ( float *  InOut,
float *  Coef,
int  lengthInOut,
int  orderCoef 
)

Definition at line 19 of file filter.c.

32 {
33 int n,k;
34
35 for(n=0;n<lengthInOut;n++){
36 for(k=1;k<=orderCoef;k++){
37 *InOut -= Coef[k]*InOut[-k];
38
39
40
41
42
43 }
44 InOut++;
45 }
46 }

Referenced by AbsQuantW(), iCBSearch(), and ZeroPoleFilter().

◆ AllZeroFilter()

void AllZeroFilter ( float *  In,
float *  Coef,
int  lengthInOut,
int  orderCoef,
float *  Out 
)

Definition at line 52 of file filter.c.

63 {
64 int n,k;
65
66 for(n=0;n<lengthInOut;n++){
67 *Out = Coef[0]*In[0];
68 for(k=1;k<=orderCoef;k++){
69 *Out += Coef[k]*In[-k];
70 }
71 Out++;
72 In++;
73 }
74 }

Referenced by ZeroPoleFilter().

◆ DownSample()

void DownSample ( float *  In,
float *  Coef,
int  lengthIn,
float *  state,
float *  Out 
)

Definition at line 110 of file filter.c.

116 {
117 float o;
118 float *Out_ptr = Out;
119 float *Coef_ptr, *In_ptr;
120 float *state_ptr;
121 int i, j, stop;
122
123 /* LP filter and decimate at the same time */
124
125 for (i = DELAY_DS; i < lengthIn; i+=FACTOR_DS)
126 {
127 Coef_ptr = &Coef[0];
128 In_ptr = &In[i];
129 state_ptr = &state[FILTERORDER_DS-2];
130
131 o = (float)0.0;
132
133 stop = (i < FILTERORDER_DS) ? i + 1 : FILTERORDER_DS;
134
135 for (j = 0; j < stop; j++)
136 {
137 o += *Coef_ptr++ * (*In_ptr--);
138 }
139 for (j = i + 1; j < FILTERORDER_DS; j++)
140 {
141 o += *Coef_ptr++ * (*state_ptr--);
142 }
143
144
145
146
147
148
149 *Out_ptr++ = o;
150 }
151
152 /* Get the last part (use zeros as input for the future) */
153
154 for (i=(lengthIn+FACTOR_DS); i<(lengthIn+DELAY_DS);
155 i+=FACTOR_DS) {
156
157 o=(float)0.0;
158
159 if (i<lengthIn) {
160 Coef_ptr = &Coef[0];
161 In_ptr = &In[i];
162 for (j=0; j<FILTERORDER_DS; j++) {
163 o += *Coef_ptr++ * (*Out_ptr--);
164 }
165 } else {
166 Coef_ptr = &Coef[i-lengthIn];
167 In_ptr = &In[lengthIn-1];
168 for (j=0; j<FILTERORDER_DS-(i-lengthIn); j++) {
169 o += *Coef_ptr++ * (*In_ptr--);
170 }
171 }
172 *Out_ptr++ = o;
173 }
174 }
unsigned int stop
Definition: app_sla.c:336
#define FILTERORDER_DS
Definition: iLBC_define.h:89
#define DELAY_DS
Definition: iLBC_define.h:90
#define FACTOR_DS
Definition: iLBC_define.h:91

References DELAY_DS, FACTOR_DS, FILTERORDER_DS, and stop.

Referenced by enhancerInterface().

◆ ZeroPoleFilter()

void ZeroPoleFilter ( float *  In,
float *  ZeroCoef,
float *  PoleCoef,
int  lengthInOut,
int  orderCoef,
float *  Out 
)

Definition at line 80 of file filter.c.

101 {
102 AllZeroFilter(In,ZeroCoef,lengthInOut,orderCoef,Out);
103 AllPoleFilter(Out,PoleCoef,lengthInOut,orderCoef);
104 }
void AllZeroFilter(float *In, float *Coef, int lengthInOut, int orderCoef, float *Out)
Definition: filter.c:52
void AllPoleFilter(float *InOut, float *Coef, int lengthInOut, int orderCoef)
Definition: filter.c:19

References AllPoleFilter(), and AllZeroFilter().

Referenced by StateConstructW(), and StateSearchW().