annotate libaf/filter.h @ 35429:3a9048421524

Create new header file gui.h. This is for declarations and definitions used throughout the GUI which are internal ones and thus shall not appear in interface.h.
author ib
date Fri, 30 Nov 2012 11:14:30 +0000
parents 0dfbb22d68c8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28229
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
1 /*
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
2 * Copyright (C) 2001 Anders Johansson ajh@atri.curtin.edu.au
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
3 *
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
4 * This file is part of MPlayer.
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
5 *
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
6 * MPlayer is free software; you can redistribute it and/or modify
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
7 * it under the terms of the GNU General Public License as published by
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
9 * (at your option) any later version.
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
10 *
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
11 * MPlayer is distributed in the hope that it will be useful,
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
14 * GNU General Public License for more details.
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
15 *
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
16 * You should have received a copy of the GNU General Public License along
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
17 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 28051
diff changeset
19 */
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
20
26029
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25535
diff changeset
21 #ifndef MPLAYER_FILTER_H
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25535
diff changeset
22 #define MPLAYER_FILTER_H
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
23
32078
0dfbb22d68c8 Get rid of MPLAYER_DSP_H hack and #include dsp.h instead.
diego
parents: 29263
diff changeset
24 #include "dsp.h"
0dfbb22d68c8 Get rid of MPLAYER_DSP_H hack and #include dsp.h instead.
diego
parents: 29263
diff changeset
25
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
26
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28229
diff changeset
27 // Design and implementation of different types of digital filters
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
28
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
29
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
30 // Flags used for filter design
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
31
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
32 // Filter characteristics
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
33 #define LP 0x00010000 // Low pass
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
34 #define HP 0x00020000 // High pass
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
35 #define BP 0x00040000 // Band pass
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
36 #define BS 0x00080000 // Band stop
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
37 #define TYPE_MASK 0x000F0000
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
38
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
39 // Window types
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
40 #define BOXCAR 0x00000001
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
41 #define TRIANG 0x00000002
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
42 #define HAMMING 0x00000004
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
43 #define HANNING 0x00000008
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
44 #define BLACKMAN 0x00000010
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
45 #define FLATTOP 0x00000011
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
46 #define KAISER 0x00000012
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
47 #define WINDOW_MASK 0x0000001F
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
48
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
49 // Parallel filter design
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
50 #define FWD 0x00000001 // Forward indexing of polyphase filter
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
51 #define REW 0x00000002 // Reverse indexing of polyphase filter
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
52 #define ODD 0x00000010 // Make filter HP
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
53
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
54 // Exported functions
28051
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
55 FLOAT_TYPE af_filter_fir(unsigned int n, const FLOAT_TYPE* w, const FLOAT_TYPE* x);
8832
a1578b329cc0 Adding sub-woofer filter, use this filter to add a sub channel to the audio stream
anders
parents: 7568
diff changeset
56
28051
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
57 FLOAT_TYPE* af_filter_pfir(unsigned int n, unsigned int k,
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
58 unsigned int xi, const FLOAT_TYPE** w,
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
59 const FLOAT_TYPE** x, FLOAT_TYPE* y,
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
60 unsigned int s);
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
61
28051
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
62 //int af_filter_updateq(unsigned int n, unsigned int xi,
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
63 // FLOAT_TYPE* xq, FLOAT_TYPE* in);
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
64 int af_filter_updatepq(unsigned int n, unsigned int k, unsigned int xi,
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
65 FLOAT_TYPE** xq, const FLOAT_TYPE* in, unsigned int s);
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
66
28051
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
67 int af_filter_design_fir(unsigned int n, FLOAT_TYPE* w, const FLOAT_TYPE* fc,
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
68 unsigned int flags, FLOAT_TYPE opt);
8832
a1578b329cc0 Adding sub-woofer filter, use this filter to add a sub channel to the audio stream
anders
parents: 7568
diff changeset
69
28051
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
70 int af_filter_design_pfir(unsigned int n, unsigned int k, const FLOAT_TYPE* w,
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
71 FLOAT_TYPE** pw, FLOAT_TYPE g, unsigned int flags);
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
72
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
73 int af_filter_szxform(const FLOAT_TYPE* a, const FLOAT_TYPE* b, FLOAT_TYPE Q,
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
74 FLOAT_TYPE fc, FLOAT_TYPE fs, FLOAT_TYPE *k,
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27258
diff changeset
75 FLOAT_TYPE *coef);
8832
a1578b329cc0 Adding sub-woofer filter, use this filter to add a sub channel to the audio stream
anders
parents: 7568
diff changeset
76
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
77 /* Add new data to circular queue designed to be used with a FIR
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
78 filter. xq is the circular queue, in pointing at the new sample, xi
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
79 current index for xq and n the length of the filter. xq must be n*2
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28229
diff changeset
80 long.
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
81 */
14275
de13fd557440 less namespace pollution #2 (prefixed globals in filter.c with af_filter_)
alex
parents: 13602
diff changeset
82 #define af_filter_updateq(n,xi,xq,in)\
8957
36a5cdca733b bunkus: Encapsulated arguments to #define in ( ... ) so that the #defines can be safely used like functions: mydef(flag ? val1 : val2)
mosu
parents: 8832
diff changeset
83 xq[xi]=(xq)[(xi)+(n)]=*(in);\
36a5cdca733b bunkus: Encapsulated arguments to #define in ( ... ) so that the #defines can be safely used like functions: mydef(flag ? val1 : val2)
mosu
parents: 8832
diff changeset
84 xi=(++(xi))&((n)-1);
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
85
26029
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25535
diff changeset
86 #endif /* MPLAYER_FILTER_H */