summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Giacomelli <giac2000@hotmail.com>2011-05-26 21:22:29 +0000
committerMichael Giacomelli <giac2000@hotmail.com>2011-05-26 21:22:29 +0000
commit0497adffcf18e700215ce47f86eca0307a60bffc (patch)
treee757bd83373786f61addfdd5f4000a0e2d447ab4
parent79dd27de82f5620b3052eeed11cb874c3e82c94c (diff)
downloadrockbox-0497adffcf18e700215ce47f86eca0307a60bffc.tar.gz
rockbox-0497adffcf18e700215ce47f86eca0307a60bffc.zip
Commit FS#12130 - Fix ADX decoding on 64-bit systems by Sean Bartell. Fixes an incorrect assumption in the ADX decoder that sizeof(int) == 32 when performing fixed point math. Update comments in the fixed point library to correct this.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29927 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/codecs/adx.c2
-rw-r--r--apps/codecs/lib/fixedpoint.h2
-rw-r--r--apps/plugins/lib/fixedpoint.h2
3 files changed, 3 insertions, 3 deletions
diff --git a/apps/codecs/adx.c b/apps/codecs/adx.c
index a1b57fce58..e75e7dca1e 100644
--- a/apps/codecs/adx.c
+++ b/apps/codecs/adx.c
@@ -129,7 +129,7 @@ enum codec_status codec_run(void)
129 129
130 fp_sincos((unsigned long)phasemultiple,&z); 130 fp_sincos((unsigned long)phasemultiple,&z);
131 131
132 a = (M_SQRT2*big28)-(z*big28/LONG_MAX); 132 a = (M_SQRT2*big28) - (z >> 3);
133 133
134 /** 134 /**
135 * In the long passed to fsqrt there are only 4 nonfractional bits, 135 * In the long passed to fsqrt there are only 4 nonfractional bits,
diff --git a/apps/codecs/lib/fixedpoint.h b/apps/codecs/lib/fixedpoint.h
index b912cbe66b..1cbd1573bb 100644
--- a/apps/codecs/lib/fixedpoint.h
+++ b/apps/codecs/lib/fixedpoint.h
@@ -33,7 +33,7 @@
33 * where phase is a 32 bit unsigned integer with 0 representing 0 33 * where phase is a 32 bit unsigned integer with 0 representing 0
34 * and 0xFFFFFFFF representing 2*pi, and *cos is the address to 34 * and 0xFFFFFFFF representing 2*pi, and *cos is the address to
35 * a long signed integer. Value returned is a long signed integer 35 * a long signed integer. Value returned is a long signed integer
36 * from LONG_MIN to LONG_MAX, representing -1 to 1 respectively. 36 * from -0x80000000 to 0x7fffffff, representing -1 to 1 respectively.
37 * That is, value is a fixed point integer with 31 fractional bits. 37 * That is, value is a fixed point integer with 31 fractional bits.
38 * 38 *
39 * Take square root of a fixed point number: 39 * Take square root of a fixed point number:
diff --git a/apps/plugins/lib/fixedpoint.h b/apps/plugins/lib/fixedpoint.h
index 7cb0098129..1631f8d6d8 100644
--- a/apps/plugins/lib/fixedpoint.h
+++ b/apps/plugins/lib/fixedpoint.h
@@ -33,7 +33,7 @@
33 * where phase is a 32 bit unsigned integer with 0 representing 0 33 * where phase is a 32 bit unsigned integer with 0 representing 0
34 * and 0xFFFFFFFF representing 2*pi, and *cos is the address to 34 * and 0xFFFFFFFF representing 2*pi, and *cos is the address to
35 * a long signed integer. Value returned is a long signed integer 35 * a long signed integer. Value returned is a long signed integer
36 * from LONG_MIN to LONG_MAX, representing -1 to 1 respectively. 36 * from -0x80000000 to 0x7fffffff, representing -1 to 1 respectively.
37 * That is, value is a fixed point integer with 31 fractional bits. 37 * That is, value is a fixed point integer with 31 fractional bits.
38 * 38 *
39 * Take square root of a fixed point number: 39 * Take square root of a fixed point number: