Mercurial > audlegacy
annotate src/audacious/iir.h @ 3899:2c768d923bcf
Add an event listener for volume changes.
author | William Pitcock <nenolod@atheme.org> |
---|---|
date | Tue, 06 Nov 2007 11:52:01 -0600 |
parents | 154f21dcd61e |
children |
rev | line source |
---|---|
2313 | 1 /* |
2 * PCM time-domain equalizer | |
3 * | |
4 * Copyright (C) 2002-2005 Felipe Rivera <liebremx at users.sourceforge.net> | |
5 * | |
6 * This program is free software; you can redistribute it and/or modify | |
7 * it under the terms of the GNU General Public License as published by | |
3121
3b6d316f8b09
GPL3 relicensing.
William Pitcock <nenolod@atheme-project.org>
parents:
2313
diff
changeset
|
8 * the Free Software Foundation; either version 3 of the License, or |
2313 | 9 * (at your option) any later version. |
10 * | |
11 * This program is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 * GNU General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU General Public License | |
3121
3b6d316f8b09
GPL3 relicensing.
William Pitcock <nenolod@atheme-project.org>
parents:
2313
diff
changeset
|
17 * along with this program. If not, see <http://www.gnu.org/licenses>. |
2313 | 18 * |
19 * $Id: iir.h,v 1.12 2005/10/17 01:57:59 liebremx Exp $ | |
20 */ | |
21 #ifndef IIR_H | |
22 #define IIR_H | |
23 | |
24 #include <glib.h> | |
25 #include "main.h" | |
3560
154f21dcd61e
equalizer -> flow API
William Pitcock <nenolod@atheme.org>
parents:
3121
diff
changeset
|
26 #include "flow.h" |
2313 | 27 #include "iir_cfs.h" |
28 | |
29 /* | |
30 * Flush-to-zero to avoid flooding the CPU with underflow exceptions | |
31 */ | |
32 #ifdef SSE_MATH | |
33 #define FTZ 0x8000 | |
34 #define FTZ_ON { \ | |
35 unsigned int mxcsr; \ | |
36 __asm__ __volatile__ ("stmxcsr %0" : "=m" (*&mxcsr)); \ | |
37 mxcsr |= FTZ; \ | |
38 __asm__ __volatile__ ("ldmxcsr %0" : : "m" (*&mxcsr)); \ | |
39 } | |
40 #define FTZ_OFF { \ | |
41 unsigned int mxcsr; \ | |
42 __asm__ __volatile__ ("stmxcsr %0" : "=m" (*&mxcsr)); \ | |
43 mxcsr &= ~FTZ; \ | |
44 __asm__ __volatile__ ("ldmxcsr %0" : : "m" (*&mxcsr)); \ | |
45 } | |
46 #else | |
47 #define FTZ_ON | |
48 #define FTZ_OFF | |
49 #endif | |
50 | |
51 /* | |
52 * Function prototypes | |
53 */ | |
54 extern void init_iir(); | |
55 extern void clean_history(); | |
56 extern void set_gain(gint index, gint chn, float val); | |
57 extern void set_preamp(gint chn, float val); | |
58 | |
59 | |
60 extern int iir(gpointer * d, gint length, gint nch); | |
61 | |
62 #ifdef ARCH_X86 | |
63 extern int round_trick(float floatvalue_to_round); | |
64 #endif | |
65 #ifdef ARCH_PPC | |
66 extern int round_ppc(float x); | |
67 #endif | |
68 | |
69 #define EQ_CHANNELS 2 | |
70 #define EQ_MAX_BANDS 10 | |
71 | |
72 extern float preamp[EQ_CHANNELS]; | |
73 extern sIIRCoefficients *iir_cf; | |
74 extern gint rate; | |
75 extern gint band_count; | |
76 | |
77 #ifdef BENCHMARK | |
78 extern double timex; | |
79 extern int count; | |
80 extern unsigned int blength; | |
81 #endif | |
82 | |
3560
154f21dcd61e
equalizer -> flow API
William Pitcock <nenolod@atheme.org>
parents:
3121
diff
changeset
|
83 void iir_flow(FlowContext *context); |
154f21dcd61e
equalizer -> flow API
William Pitcock <nenolod@atheme.org>
parents:
3121
diff
changeset
|
84 |
2313 | 85 #endif /* #define IIR_H */ |
86 |