comparison src/audacious/iir.h @ 2313:3149d4b1a9a9 trunk

[svn] - objective-make autodepend fixes - move all sourcecode into src/ and adjust Makefiles accordingly
author nenolod
date Fri, 12 Jan 2007 11:43:40 -0800
parents
children 3b6d316f8b09
comparison
equal deleted inserted replaced
2312:e1a5a66fb9cc 2313:3149d4b1a9a9
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
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 *
20 * $Id: iir.h,v 1.12 2005/10/17 01:57:59 liebremx Exp $
21 */
22 #ifndef IIR_H
23 #define IIR_H
24
25 #include <glib.h>
26 #include "main.h"
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
83 #endif /* #define IIR_H */
84