Mercurial > mplayer.hg
annotate libaf/filter.h @ 31169:ac84149bbdaf
Retry reading even if we hit eof before.
This allows playing growing files even with a large cache.
author | reimar |
---|---|
date | Wed, 26 May 2010 18:23:43 +0000 |
parents | 0f1b5b68af32 |
children | 0dfbb22d68c8 |
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 #if !defined MPLAYER_DSP_H |
26343
1b73f5aa1796
Remove some useless quotes from #error preprocessor directives.
diego
parents:
26342
diff
changeset
|
22 # error Never use filter.h directly; include dsp.h instead. |
7568 | 23 #endif |
24 | |
26029 | 25 #ifndef MPLAYER_FILTER_H |
26 #define MPLAYER_FILTER_H | |
7568 | 27 |
28 | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28229
diff
changeset
|
29 // Design and implementation of different types of digital filters |
7568 | 30 |
31 | |
32 // Flags used for filter design | |
33 | |
34 // Filter characteristics | |
35 #define LP 0x00010000 // Low pass | |
36 #define HP 0x00020000 // High pass | |
37 #define BP 0x00040000 // Band pass | |
38 #define BS 0x00080000 // Band stop | |
39 #define TYPE_MASK 0x000F0000 | |
40 | |
41 // Window types | |
42 #define BOXCAR 0x00000001 | |
43 #define TRIANG 0x00000002 | |
44 #define HAMMING 0x00000004 | |
45 #define HANNING 0x00000008 | |
46 #define BLACKMAN 0x00000010 | |
47 #define FLATTOP 0x00000011 | |
48 #define KAISER 0x00000012 | |
49 #define WINDOW_MASK 0x0000001F | |
50 | |
51 // Parallel filter design | |
52 #define FWD 0x00000001 // Forward indexing of polyphase filter | |
53 #define REW 0x00000002 // Reverse indexing of polyphase filter | |
54 #define ODD 0x00000010 // Make filter HP | |
55 | |
56 // Exported functions | |
28051 | 57 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
|
58 |
28051 | 59 FLOAT_TYPE* af_filter_pfir(unsigned int n, unsigned int k, |
60 unsigned int xi, const FLOAT_TYPE** w, | |
61 const FLOAT_TYPE** x, FLOAT_TYPE* y, | |
62 unsigned int s); | |
7568 | 63 |
28051 | 64 //int af_filter_updateq(unsigned int n, unsigned int xi, |
65 // FLOAT_TYPE* xq, FLOAT_TYPE* in); | |
66 int af_filter_updatepq(unsigned int n, unsigned int k, unsigned int xi, | |
67 FLOAT_TYPE** xq, const FLOAT_TYPE* in, unsigned int s); | |
7568 | 68 |
28051 | 69 int af_filter_design_fir(unsigned int n, FLOAT_TYPE* w, const FLOAT_TYPE* fc, |
70 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
|
71 |
28051 | 72 int af_filter_design_pfir(unsigned int n, unsigned int k, const FLOAT_TYPE* w, |
73 FLOAT_TYPE** pw, FLOAT_TYPE g, unsigned int flags); | |
74 | |
75 int af_filter_szxform(const FLOAT_TYPE* a, const FLOAT_TYPE* b, FLOAT_TYPE Q, | |
76 FLOAT_TYPE fc, FLOAT_TYPE fs, FLOAT_TYPE *k, | |
77 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
|
78 |
7568 | 79 /* Add new data to circular queue designed to be used with a FIR |
80 filter. xq is the circular queue, in pointing at the new sample, xi | |
81 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
|
82 long. |
7568 | 83 */ |
14275
de13fd557440
less namespace pollution #2 (prefixed globals in filter.c with af_filter_)
alex
parents:
13602
diff
changeset
|
84 #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
|
85 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
|
86 xi=(++(xi))&((n)-1); |
7568 | 87 |
26029 | 88 #endif /* MPLAYER_FILTER_H */ |