Mercurial > audlegacy
annotate audacious/iir.h @ 1938:1d9c1026d9f8 trunk
[svn] - DoubleSize support.
This has bugs, the most notable one being that DoubleSize only works
right if you restart the player.
The second bug is rather obvious too. No osmosis skinengine. No
TinyPlayer. Classic-esque skinengine only. This is because the
doublesize algorithm hates you and wants you to go die in a fire.
author | nenolod |
---|---|
date | Sun, 05 Nov 2006 04:43:16 -0800 |
parents | 802c9f8461e0 |
children |
rev | line source |
---|---|
0 | 1 /* |
2 * PCM time-domain equalizer | |
3 * | |
430
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
4 * Copyright (C) 2002-2005 Felipe Rivera <liebremx at users.sourceforge.net> |
0 | 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 | |
8 * the Free Software Foundation; either version 2 of the License, or | |
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 | |
17 * along with this program; if not, write to the Free Software | |
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
19 * | |
430
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
20 * $Id: iir.h,v 1.12 2005/10/17 01:57:59 liebremx Exp $ |
0 | 21 */ |
22 #ifndef IIR_H | |
23 #define IIR_H | |
24 | |
430
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
25 #include <glib.h> |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
26 #include "main.h" |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
27 #include "iir_cfs.h" |
0 | 28 |
430
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
29 /* |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
30 * Flush-to-zero to avoid flooding the CPU with underflow exceptions |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
31 */ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
32 #ifdef SSE_MATH |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
33 #define FTZ 0x8000 |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
34 #define FTZ_ON { \ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
35 unsigned int mxcsr; \ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
36 __asm__ __volatile__ ("stmxcsr %0" : "=m" (*&mxcsr)); \ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
37 mxcsr |= FTZ; \ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
38 __asm__ __volatile__ ("ldmxcsr %0" : : "m" (*&mxcsr)); \ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
39 } |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
40 #define FTZ_OFF { \ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
41 unsigned int mxcsr; \ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
42 __asm__ __volatile__ ("stmxcsr %0" : "=m" (*&mxcsr)); \ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
43 mxcsr &= ~FTZ; \ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
44 __asm__ __volatile__ ("ldmxcsr %0" : : "m" (*&mxcsr)); \ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
45 } |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
46 #else |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
47 #define FTZ_ON |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
48 #define FTZ_OFF |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
49 #endif |
0 | 50 |
430
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
51 /* |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
52 * Function prototypes |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
53 */ |
1888
802c9f8461e0
[svn] - enforce extern status here. we do not provide an inlined iir(), so that shouldn't be declared inline.
nenolod
parents:
430
diff
changeset
|
54 extern void init_iir(); |
802c9f8461e0
[svn] - enforce extern status here. we do not provide an inlined iir(), so that shouldn't be declared inline.
nenolod
parents:
430
diff
changeset
|
55 extern void clean_history(); |
802c9f8461e0
[svn] - enforce extern status here. we do not provide an inlined iir(), so that shouldn't be declared inline.
nenolod
parents:
430
diff
changeset
|
56 extern void set_gain(gint index, gint chn, float val); |
802c9f8461e0
[svn] - enforce extern status here. we do not provide an inlined iir(), so that shouldn't be declared inline.
nenolod
parents:
430
diff
changeset
|
57 extern void set_preamp(gint chn, float val); |
0 | 58 |
59 | |
1888
802c9f8461e0
[svn] - enforce extern status here. we do not provide an inlined iir(), so that shouldn't be declared inline.
nenolod
parents:
430
diff
changeset
|
60 extern int iir(gpointer * d, gint length, gint nch); |
430
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
61 |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
62 #ifdef ARCH_X86 |
1888
802c9f8461e0
[svn] - enforce extern status here. we do not provide an inlined iir(), so that shouldn't be declared inline.
nenolod
parents:
430
diff
changeset
|
63 extern int round_trick(float floatvalue_to_round); |
430
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
64 #endif |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
65 #ifdef ARCH_PPC |
1888
802c9f8461e0
[svn] - enforce extern status here. we do not provide an inlined iir(), so that shouldn't be declared inline.
nenolod
parents:
430
diff
changeset
|
66 extern int round_ppc(float x); |
430
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
67 #endif |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
68 |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
69 #define EQ_CHANNELS 2 |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
70 #define EQ_MAX_BANDS 10 |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
71 |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
72 extern float preamp[EQ_CHANNELS]; |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
73 extern sIIRCoefficients *iir_cf; |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
74 extern gint rate; |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
75 extern gint band_count; |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
76 |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
77 #ifdef BENCHMARK |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
78 extern double timex; |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
79 extern int count; |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
80 extern unsigned int blength; |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
81 #endif |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
82 |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
83 #endif /* #define IIR_H */ |
67cd014f35a2
[svn] This commit rips out the old equalization engine with a dynamic engine
nenolod
parents:
0
diff
changeset
|
84 |