Adding sub-band CELP (SB-CELP) -like encoding. Still incomplete.
[speexdsp.git] / libspeex / filters.h
1 /* Copyright (C) 2002 Jean-Marc Valin 
2    File: filters.h
3    Various analysis/synthesis filters
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9    
10    This library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14    
15    You should have received a copy of the GNU Lesser General Public
16    License along with this library; if not, write to the Free Software
17    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18 */
19
20 #ifndef FILTERS_H
21 #define FILTERS_H
22
23 /* Apply bandwidth expansion on LPC coef */
24 void bw_lpc(float gamma, float *lpc_in, float *lpc_out, int order);
25
26 /* Synthesis filter using the past of y[n] (negative indices) as memory */
27 void syn_filt(float *x, float *a, float *y, int N, int ord);
28
29 /* Synthesis filter using zero memory */
30 void syn_filt_zero(float *x, float *a, float *y, int N, int ord);
31
32 /* Synthesis filter using memory */
33 void syn_filt_mem(float *x, float *a, float *y, int N, int ord, float *mem);
34
35 /* Analysis (FIR) filter using the past of x[n] (negative indices) as memory */
36 void residue(float *x, float *a, float *y, int N, int ord);
37
38 /* Analysis (FIR) filter using zero memory */
39 void residue_zero(float *x, float *a, float *y, int N, int ord);
40
41 /* Analysis (FIR) filter using memory */
42 void residue_mem(float *x, float *a, float *y, int N, int ord, float *mem);
43
44 /* Cross correlation */
45 float xcorr(float *x, float *y, int len);
46
47 /* FIR filter */
48 void fir_mem(float *x, float *a, float *y, int N, int M, float *mem);
49
50 #endif