Mercurial > mplayer.hg
annotate libaf/filter.h @ 35110:006375b8c072
Make sure av_restrict is defined for FFmpeg.
author | reimar |
---|---|
date | Wed, 19 Sep 2012 19:34:08 +0000 |
parents | 0dfbb22d68c8 |
children |
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 | 20 |
26029 | 21 #ifndef MPLAYER_FILTER_H |
22 #define MPLAYER_FILTER_H | |
7568 | 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 | 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 | 28 |
29 | |
30 // Flags used for filter design | |
31 | |
32 // Filter characteristics | |
33 #define LP 0x00010000 // Low pass | |
34 #define HP 0x00020000 // High pass | |
35 #define BP 0x00040000 // Band pass | |
36 #define BS 0x00080000 // Band stop | |
37 #define TYPE_MASK 0x000F0000 | |
38 | |
39 // Window types | |
40 #define BOXCAR 0x00000001 | |
41 #define TRIANG 0x00000002 | |
42 #define HAMMING 0x00000004 | |
43 #define HANNING 0x00000008 | |
44 #define BLACKMAN 0x00000010 | |
45 #define FLATTOP 0x00000011 | |
46 #define KAISER 0x00000012 | |
47 #define WINDOW_MASK 0x0000001F | |
48 | |
49 // Parallel filter design | |
50 #define FWD 0x00000001 // Forward indexing of polyphase filter | |
51 #define REW 0x00000002 // Reverse indexing of polyphase filter | |
52 #define ODD 0x00000010 // Make filter HP | |
53 | |
54 // Exported functions | |
28051 | 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 | 57 FLOAT_TYPE* af_filter_pfir(unsigned int n, unsigned int k, |
58 unsigned int xi, const FLOAT_TYPE** w, | |
59 const FLOAT_TYPE** x, FLOAT_TYPE* y, | |
60 unsigned int s); | |
7568 | 61 |
28051 | 62 //int af_filter_updateq(unsigned int n, unsigned int xi, |
63 // FLOAT_TYPE* xq, FLOAT_TYPE* in); | |
64 int af_filter_updatepq(unsigned int n, unsigned int k, unsigned int xi, | |
65 FLOAT_TYPE** xq, const FLOAT_TYPE* in, unsigned int s); | |
7568 | 66 |
28051 | 67 int af_filter_design_fir(unsigned int n, FLOAT_TYPE* w, const FLOAT_TYPE* fc, |
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 | 70 int af_filter_design_pfir(unsigned int n, unsigned int k, const FLOAT_TYPE* w, |
71 FLOAT_TYPE** pw, FLOAT_TYPE g, unsigned int flags); | |
72 | |
73 int af_filter_szxform(const FLOAT_TYPE* a, const FLOAT_TYPE* b, FLOAT_TYPE Q, | |
74 FLOAT_TYPE fc, FLOAT_TYPE fs, FLOAT_TYPE *k, | |
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 | 77 /* Add new data to circular queue designed to be used with a FIR |
78 filter. xq is the circular queue, in pointing at the new sample, xi | |
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 | 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 | 85 |
26029 | 86 #endif /* MPLAYER_FILTER_H */ |