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