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
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 */