/src/pjsip/third_party/ilbc/hpInput.c
Line | Count | Source |
1 | | |
2 | | /****************************************************************** |
3 | | |
4 | | iLBC Speech Coder ANSI-C Source Code |
5 | | |
6 | | |
7 | | |
8 | | |
9 | | |
10 | | hpInput.c |
11 | | |
12 | | Copyright (C) The Internet Society (2004). |
13 | | All Rights Reserved. |
14 | | |
15 | | ******************************************************************/ |
16 | | |
17 | | #include "constants.h" |
18 | | |
19 | | /*----------------------------------------------------------------* |
20 | | * Input high-pass filter |
21 | | *---------------------------------------------------------------*/ |
22 | | |
23 | | void hpInput( |
24 | | float *In, /* (i) vector to filter */ |
25 | | int len, /* (i) length of vector to filter */ |
26 | | float *Out, /* (o) the resulting filtered vector */ |
27 | | float *mem /* (i/o) the filter state */ |
28 | 0 | ){ |
29 | 0 | int i; |
30 | 0 | float *pi, *po; |
31 | | |
32 | | /* all-zero section*/ |
33 | |
|
34 | 0 | pi = &In[0]; |
35 | 0 | po = &Out[0]; |
36 | 0 | for (i=0; i<len; i++) { |
37 | 0 | *po = hpi_zero_coefsTbl[0] * (*pi); |
38 | 0 | *po += hpi_zero_coefsTbl[1] * mem[0]; |
39 | 0 | *po += hpi_zero_coefsTbl[2] * mem[1]; |
40 | |
|
41 | 0 | mem[1] = mem[0]; |
42 | 0 | mem[0] = *pi; |
43 | 0 | po++; |
44 | 0 | pi++; |
45 | |
|
46 | 0 | } |
47 | | |
48 | | /* all-pole section*/ |
49 | |
|
50 | 0 | po = &Out[0]; |
51 | 0 | for (i=0; i<len; i++) { |
52 | 0 | *po -= hpi_pole_coefsTbl[1] * mem[2]; |
53 | 0 | *po -= hpi_pole_coefsTbl[2] * mem[3]; |
54 | |
|
55 | 0 | mem[3] = mem[2]; |
56 | 0 | mem[2] = *po; |
57 | 0 | po++; |
58 | | |
59 | | |
60 | | |
61 | | |
62 | |
|
63 | 0 | } |
64 | 0 | } |
65 | | |