diff options
| author | Peter D'Hoye <peter.dhoye@gmail.com> | 2009-05-22 21:58:48 +0000 |
|---|---|---|
| committer | Peter D'Hoye <peter.dhoye@gmail.com> | 2009-05-22 21:58:48 +0000 |
| commit | 513389b4c1bc8afe4b2dc9947c534bfeb105e3da (patch) | |
| tree | 10e673b35651ac567fed2eda0c679c7ade64cbc6 /apps/plugins/pdbox/PDa/src/m_fixed.h | |
| parent | 95fa7f6a2ef466444fbe3fe87efc6d5db6b77b36 (diff) | |
| download | rockbox-513389b4c1bc8afe4b2dc9947c534bfeb105e3da.zip rockbox-513389b4c1bc8afe4b2dc9947c534bfeb105e3da.tar.gz rockbox-513389b4c1bc8afe4b2dc9947c534bfeb105e3da.tar.bz2 rockbox-513389b4c1bc8afe4b2dc9947c534bfeb105e3da.tar.xz | |
Add FS #10214. Initial commit of the original PDa code for the GSoC Pure Data plugin project of Wincent Balin. Stripped some non-sourcefiles and added a rockbox readme that needs a bit more info from Wincent. Is added to CATEGORIES and viewers, but not yet to SUBDIRS (ie doesn't build yet)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21044 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/pdbox/PDa/src/m_fixed.h')
| -rw-r--r-- | apps/plugins/pdbox/PDa/src/m_fixed.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/apps/plugins/pdbox/PDa/src/m_fixed.h b/apps/plugins/pdbox/PDa/src/m_fixed.h new file mode 100644 index 0000000..4ccc121 --- /dev/null +++ b/apps/plugins/pdbox/PDa/src/m_fixed.h @@ -0,0 +1,110 @@ +#ifndef __M_FIXED_H__ +#define __M_FIXED_H__ + +typedef int t_sample; + +#define t_fixed int +#define fix1 18 /* (18) number of bits after comma */ + + +#define fixfac ((float)(1<<fix1)) /* float factor (for scaling ftofix ..) */ + + +/* fixed point multiplication and division */ + +#define mult(a,b) (long long)(((long long) (a) * (long long) (b))>>fix1) +#define idiv(a,b) ((((long long) (a) )<<fix1)/(long long) (b) ) + +/* conversion macros */ + +#define itofix(a) ((a) << fix1) +#define ftofix(a) ((t_fixed)( (a) *(double)fixfac + 0.5)) + +#define fixtof(a) ((double) (a) * 1./(fixfac-0.5)) +#define fixtoi(a) ((a) >>fix1) + + +/* Not working !! */ + +#define fnum(a) ( (a) >>(fix1-16)) +#define ffrac(a) (0) + + +/* mapping of fft functions */ + +#ifdef FIXEDPOINT +#define mayer_realifft imayer_realifft +#define mayer_realfft imayer_realfft +#define mayer_fft imayer_fft +#define mayer_ifft imayer_ifft +#endif + +#ifdef FIXEDPOINT +#define SCALE16(x) (x>>(fix1-15)) +#define SCALE32(x) (x<<(32-fix1)) +#define INVSCALE16(x) (x<<8) +#else +#define SCALE16(x) (32767.*x) +#define SCALE32(x) (2147483648.*x) +#define INVSCALE16(x) ((float)3.051850e-05*x) +#endif + + +#endif + + +#ifndef __M_FIXED_H__ +#define __M_FIXED_H__ + +typedef int t_sample; + +#define t_fixed int +#define fix1 18 /* (18) number of bits after comma */ + + +#define fixfac ((float)(1<<fix1)) /* float factor (for scaling ftofix ..) */ + + +/* fixed point multiplication and division */ + +#define mult(a,b) (long long)(((long long) (a) * (long long) (b))>>fix1) +#define idiv(a,b) ((((long long) (a) )<<fix1)/(long long) (b) ) + +/* conversion macros */ + +#define itofix(a) ((a) << fix1) +#define ftofix(a) ((t_fixed)( (a) *(double)fixfac + 0.5)) + +#define fixtof(a) ((double) (a) * 1./(fixfac-0.5)) +#define fixtoi(a) ((a) >>fix1) + + +/* Not working !! */ + +#define fnum(a) ( (a) >>(fix1-16)) +#define ffrac(a) (0) + + +/* mapping of fft functions */ + +#ifdef FIXEDPOINT +#define mayer_realifft imayer_realifft +#define mayer_realfft imayer_realfft +#define mayer_fft imayer_fft +#define mayer_ifft imayer_ifft +#endif + +#ifdef FIXEDPOINT +#define SCALE16(x) (x>>(fix1-15)) +#define SCALE32(x) (x<<(32-fix1)) +#define INVSCALE16(x) (x<<8) +#else +#define SCALE16(x) (32767.*x) +#define SCALE32(x) (2147483648.*x) +#define INVSCALE16(x) ((float)3.051850e-05*x) +#endif + + +#endif + + |