summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThom Johansen <thomj@rockbox.org>2006-03-21 01:09:53 +0000
committerThom Johansen <thomj@rockbox.org>2006-03-21 01:09:53 +0000
commitc00ec115989529c72f1153871524c66253c5fb12 (patch)
treecd9dc17c2882a460116c6663c443d57d811778aa
parent5405753096fe8058c27e7a8ef808b9b89805c536 (diff)
downloadrockbox-c00ec115989529c72f1153871524c66253c5fb12.tar.gz
rockbox-c00ec115989529c72f1153871524c66253c5fb12.zip
Further 64 bit related fixes. EQ should now work in AMD64 sim.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9142 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/eq.c18
-rw-r--r--apps/eq.h6
2 files changed, 12 insertions, 12 deletions
diff --git a/apps/eq.c b/apps/eq.c
index cb7086a7e3..192f198944 100644
--- a/apps/eq.c
+++ b/apps/eq.c
@@ -138,13 +138,13 @@ static long dbtoA(long db)
db is s15.16 fixed point and describes gain/attenuation at peak freq.
c is a pointer where the coefs will be stored.
*/
-void eq_pk_coefs(unsigned long cutoff, unsigned long Q, long db, long *c)
+void eq_pk_coefs(unsigned long cutoff, unsigned long Q, long db, int32_t *c)
{
const long one = 1 << 28; /* s3.28 */
const long A = dbtoA(db);
const long alpha = DIV64(fsin(cutoff), 2*Q, 15); /* s1.30 */
- long a0, a1, a2; /* these are all s3.28 format */
- long b0, b1, b2;
+ int32_t a0, a1, a2; /* these are all s3.28 format */
+ int32_t b0, b1, b2;
/* possible numerical ranges listed after each coef */
b0 = one + FRACMUL(alpha, A); /* [1.25..5] */
@@ -161,7 +161,7 @@ void eq_pk_coefs(unsigned long cutoff, unsigned long Q, long db, long *c)
}
/* Calculate coefficients for lowshelf filter */
-void eq_ls_coefs(unsigned long cutoff, unsigned long Q, long db, long *c)
+void eq_ls_coefs(unsigned long cutoff, unsigned long Q, long db, int32_t *c)
{
const long one = 1 << 24; /* s7.24 */
const long A = dbtoA(db);
@@ -169,8 +169,8 @@ void eq_ls_coefs(unsigned long cutoff, unsigned long Q, long db, long *c)
const long ap1 = (A >> 5) + one;
const long am1 = (A >> 5) - one;
const long twosqrtalpha = 2*(FRACMUL(fsqrt(A >> 5, 24), alpha) << 1);
- long a0, a1, a2; /* these are all s7.24 format */
- long b0, b1, b2;
+ int32_t a0, a1, a2; /* these are all s7.24 format */
+ int32_t b0, b1, b2;
long cs = fcos(cutoff);
b0 = FRACMUL(A, ap1 - FRACMUL(am1, cs) + twosqrtalpha) << 2;
@@ -188,7 +188,7 @@ void eq_ls_coefs(unsigned long cutoff, unsigned long Q, long db, long *c)
}
/* Calculate coefficients for highshelf filter */
-void eq_hs_coefs(unsigned long cutoff, unsigned long Q, long db, long *c)
+void eq_hs_coefs(unsigned long cutoff, unsigned long Q, long db, int32_t *c)
{
const long one = 1 << 24; /* s7.24 */
const long A = dbtoA(db);
@@ -196,8 +196,8 @@ void eq_hs_coefs(unsigned long cutoff, unsigned long Q, long db, long *c)
const long ap1 = (A >> 5) + one;
const long am1 = (A >> 5) - one;
const long twosqrtalpha = 2*(FRACMUL(fsqrt(A >> 5, 24), alpha) << 1);
- long a0, a1, a2; /* these are all s7.24 format */
- long b0, b1, b2;
+ int32_t a0, a1, a2; /* these are all s7.24 format */
+ int32_t b0, b1, b2;
long cs = fcos(cutoff);
b0 = FRACMUL(A, ap1 + FRACMUL(am1, cs) + twosqrtalpha) << 2;
diff --git a/apps/eq.h b/apps/eq.h
index 9228658eca..5e86a45e84 100644
--- a/apps/eq.h
+++ b/apps/eq.h
@@ -33,9 +33,9 @@ struct eqfilter {
int32_t history[2][4];
};
-void eq_pk_coefs(unsigned long cutoff, unsigned long Q, long db, long *c);
-void eq_ls_coefs(unsigned long cutoff, unsigned long Q, long db, long *c);
-void eq_hs_coefs(unsigned long cutoff, unsigned long Q, long db, long *c);
+void eq_pk_coefs(unsigned long cutoff, unsigned long Q, long db, int32_t *c);
+void eq_ls_coefs(unsigned long cutoff, unsigned long Q, long db, int32_t *c);
+void eq_hs_coefs(unsigned long cutoff, unsigned long Q, long db, int32_t *c);
void eq_filter(int32_t **x, struct eqfilter *f, unsigned num,
unsigned channels, unsigned shift);