annotate ext/openal-soft/OpenAL32/Include/bs2b.h @ 75:43beb3d2fda9

Enlarged and rotated the feathers on the skull_pole, this should be good, I hope.
author kaelisebonrai@33b003aa-7bff-0310-803a-e67f0ece8222
date Fri, 18 Jul 2008 06:17:40 +0000
parents 73a9f7addd33
children
rev   line source
56
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
1 /*-
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
2 * Copyright (c) 2005 Boris Mikhaylov
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
3 *
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
4 * Permission is hereby granted, free of charge, to any person obtaining
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
5 * a copy of this software and associated documentation files (the
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
6 * "Software"), to deal in the Software without restriction, including
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
7 * without limitation the rights to use, copy, modify, merge, publish,
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
8 * distribute, sublicense, and/or sell copies of the Software, and to
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
9 * permit persons to whom the Software is furnished to do so, subject to
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
10 * the following conditions:
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
11 *
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
12 * The above copyright notice and this permission notice shall be
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
13 * included in all copies or substantial portions of the Software.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
14 *
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
18 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
19 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
20 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
21 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
22 */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
23
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
24 #ifndef BS2B_H
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
25 #define BS2B_H
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
26
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
27 /* Number of crossfeed levels */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
28 #define BS2B_CLEVELS 3
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
29
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
30 /* Normal crossfeed levels */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
31 #define BS2B_HIGH_CLEVEL 3
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
32 #define BS2B_MIDDLE_CLEVEL 2
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
33 #define BS2B_LOW_CLEVEL 1
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
34
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
35 /* Easy crossfeed levels */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
36 #define BS2B_HIGH_ECLEVEL BS2B_HIGH_CLEVEL + BS2B_CLEVELS
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
37 #define BS2B_MIDDLE_ECLEVEL BS2B_MIDDLE_CLEVEL + BS2B_CLEVELS
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
38 #define BS2B_LOW_ECLEVEL BS2B_LOW_CLEVEL + BS2B_CLEVELS
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
39
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
40 /* Default crossfeed levels */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
41 #define BS2B_DEFAULT_CLEVEL BS2B_HIGH_ECLEVEL
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
42 /* Default sample rate (Hz) */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
43 #define BS2B_DEFAULT_SRATE 44100
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
44
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
45 #ifdef __cplusplus
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
46 extern "C" {
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
47 #endif /* __cplusplus */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
48
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
49 struct bs2b {
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
50 int level; /* Crossfeed level */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
51 int srate; /* Sample rate (Hz) */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
52
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
53 /* Lowpass IIR filter coefficients */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
54 double a0_lo;
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
55 double b1_lo;
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
56
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
57 /* Highboost IIR filter coefficients */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
58 double a0_hi;
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
59 double a1_hi;
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
60 double b1_hi;
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
61
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
62 /* Global gain against overloading */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
63 double gain;
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
64
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
65 /* Buffer of last filtered sample.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
66 * [0] - first channel, [1] - second channel
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
67 */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
68 struct t_last_sample {
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
69 double asis[2];
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
70 double lo[2];
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
71 double hi[2];
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
72 } last_sample;
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
73 };
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
74
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
75 /* Clear buffers and set new coefficients with new crossfeed level value.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
76 * level - crossfeed level of *LEVEL values.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
77 */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
78 void bs2b_set_level(struct bs2b *bs2b, int level);
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
79
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
80 /* Return current crossfeed level value */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
81 int bs2b_get_level(struct bs2b *bs2b);
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
82
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
83 /* Clear buffers and set new coefficients with new sample rate value.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
84 * srate - sample rate by Hz.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
85 */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
86 void bs2b_set_srate(struct bs2b *bs2b, int srate);
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
87
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
88 /* Return current sample rate value */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
89 int bs2b_get_srate(struct bs2b *bs2b);
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
90
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
91 /* Clear buffer */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
92 void bs2b_clear(struct bs2b *bs2b);
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
93
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
94 /* Return 1 if buffer is clear */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
95 int bs2b_is_clear(struct bs2b *bs2b);
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
96
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
97 /* Crossfeeds one stereo sample that are pointed by sample.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
98 * [0] - first channel, [1] - second channel.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
99 * Returns crossfided samle by sample pointer.
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
100 */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
101
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
102 /* sample poits to floats */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
103 void bs2b_cross_feed(struct bs2b *bs2b, float *sample);
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
104
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
105 #ifdef __cplusplus
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
106 } /* extern "C" */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
107 #endif /* __cplusplus */
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
108
73a9f7addd33 * Eol-style fixes
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
109 #endif /* BS2B_H */