diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2013-04-10 13:24:32 -0400 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2013-04-10 13:28:35 -0400 |
commit | f49e75053198cc24aff92e9045795e011fa25083 (patch) | |
tree | a6800dbd34679289a44f954ca92d6d36fff89978 | |
parent | f5b7134f59fa20685a51d56d3a323044a2c441cf (diff) |
Move fixedpoint.h to be accessible in /firmware.
Will need it soon enough.
Combine the contents of all the various fixedpoint.h files.
Not moving fixedpoint.c for now since I'm not sure where it
should be and it causes some dependency issues.
Change-Id: Ideacbca2ca78f9158c2b114b113c274f68e908d5
-rw-r--r-- | apps/plugins/lib/fixedpoint.h | 52 | ||||
-rw-r--r-- | firmware/include/fixedpoint.h (renamed from apps/fixedpoint.h) | 54 | ||||
-rw-r--r-- | lib/rbcodec/codecs/lib/fixedpoint.h | 29 |
3 files changed, 53 insertions, 82 deletions
diff --git a/apps/plugins/lib/fixedpoint.h b/apps/plugins/lib/fixedpoint.h index 1631f8d6d8..811a1d9b81 100644 --- a/apps/plugins/lib/fixedpoint.h +++ b/apps/plugins/lib/fixedpoint.h @@ -20,55 +20,7 @@ * KIND, either express or implied. * ****************************************************************************/ - -/** PLUGINS - FIXED POINT MATH ROUTINES - USAGE - * - * - x and y arguments are fixed point integers - * - fracbits is the number of fractional bits in the argument(s) - * - functions return long fixed point integers with the specified number - * of fractional bits unless otherwise specified - * - * Calculate sin and cos of an angle: - * fp_sincos(phase, *cos) - * where phase is a 32 bit unsigned integer with 0 representing 0 - * and 0xFFFFFFFF representing 2*pi, and *cos is the address to - * a long signed integer. Value returned is a long signed integer - * from -0x80000000 to 0x7fffffff, representing -1 to 1 respectively. - * That is, value is a fixed point integer with 31 fractional bits. - * - * Take square root of a fixed point number: - * fp_sqrt(x, fracbits) - * - * Calculate sin or cos of an angle (very fast, from a table): - * fp14_sin(angle) - * fp14_cos(angle) - * where angle is a non-fixed point integer in degrees. Value - * returned is a fixed point integer with 14 fractional bits. - * - * Calculate the natural log of a positive fixed point integer - * fp16_log(x) - * where x and the value returned are fixed point integers - * with 16 fractional bits. - */ - #ifndef _FIXEDPOINT_H_PLUGINS #define _FIXEDPOINT_H_PLUGINS - -long fp_sincos(unsigned long phase, long *cos); -long fp_sqrt(long a, unsigned int fracbits); -long fp14_cos(int val); -long fp14_sin(int val); -long fp16_log(int x); -long fp16_exp(int x); - -unsigned long isqrt(unsigned long x); - -/* fast unsigned multiplication (16x16bit->32bit or 32x32bit->32bit, - * whichever is faster for the architecture) */ -#ifdef CPU_ARM -#define FMULU(a, b) ((uint32_t) (((uint32_t) (a)) * ((uint32_t) (b)))) -#else /* SH1, coldfire */ -#define FMULU(a, b) ((uint32_t) (((uint16_t) (a)) * ((uint16_t) (b)))) -#endif - -#endif +#include "../../../firmware/include/fixedpoint.h" +#endif /* _FIXEDPOINT_H_PLUGINS */ diff --git a/apps/fixedpoint.h b/firmware/include/fixedpoint.h index 6670e597fb..3e14bdd68e 100644 --- a/apps/fixedpoint.h +++ b/firmware/include/fixedpoint.h @@ -21,7 +21,7 @@ * ****************************************************************************/ -/** APPS - FIXED POINT MATH ROUTINES - USAGE +/** FIXED POINT MATH ROUTINES - USAGE * * - x and y arguments are fixed point integers * - fracbits is the number of fractional bits in the argument(s) @@ -34,6 +34,36 @@ * Divide two fixed point numbers: * fp_div(x, y, fracbits) * + * Calculate sin and cos of an angle: + * fp_sincos(phase, *cos) + * where phase is a 32 bit unsigned integer with 0 representing 0 + * and 0xFFFFFFFF representing 2*pi, and *cos is the address to + * a long signed integer. Value returned is a long signed integer + * from -0x80000000 to 0x7fffffff, representing -1 to 1 respectively. + * That is, value is a fixed point integer with 31 fractional bits. + * + * Take square root of a fixed point number: + * fp_sqrt(x, fracbits) + * + * Take the square root of an integer: + * isqrt(x) + * + * Calculate sin or cos of an angle (very fast, from a table): + * fp14_sin(angle) + * fp14_cos(angle) + * where angle is a non-fixed point integer in degrees. Value + * returned is a fixed point integer with 14 fractional bits. + * + * Calculate the exponential of a fixed point integer + * fp16_exp(x) + * where x and the value returned are fixed point integers + * with 16 fractional bits. + * + * Calculate the natural log of a positive fixed point integer + * fp16_log(x) + * where x and the value returned are fixed point integers + * with 16 fractional bits. + * * Calculate decibel equivalent of a gain factor: * fp_decibels(factor, fracbits) * where fracbits is in the range 12 to 22 (higher is better), @@ -45,16 +75,28 @@ * and decibels is a fixed point integer. */ -#ifndef _FIXEDPOINT_H_APPS -#define _FIXEDPOINT_H_APPS +#ifndef FIXEDPOINT_H +#define FIXEDPOINT_H #define fp_mul(x, y, z) (long)((((long long)(x)) * ((long long)(y))) >> (z)) #define fp_div(x, y, z) (long)((((long long)(x)) << (z)) / ((long long)(y))) - -/** TAKEN FROM ORIGINAL fixedpoint.h */ long fp_sincos(unsigned long phase, long *cos); +long fp_sqrt(long a, unsigned int fracbits); +long fp14_cos(int val); +long fp14_sin(int val); +long fp16_log(int x); +long fp16_exp(int x); +unsigned long isqrt(unsigned long x); + +/* fast unsigned multiplication (16x16bit->32bit or 32x32bit->32bit, + * whichever is faster for the architecture) */ +#ifdef CPU_ARM +#define FMULU(a, b) ((uint32_t) (((uint32_t) (a)) * ((uint32_t) (b)))) +#else /* SH1, coldfire */ +#define FMULU(a, b) ((uint32_t) (((uint16_t) (a)) * ((uint16_t) (b)))) +#endif /** MODIFIED FROM replaygain.c */ #define FP_INF (0x7fffffff) @@ -66,4 +108,4 @@ long fp_sincos(unsigned long phase, long *cos); /* long fp_decibels(unsigned long factor, unsigned int fracbits); */ long fp_factor(long decibels, unsigned int fracbits); -#endif +#endif /* FIXEDPOINT_H */ diff --git a/lib/rbcodec/codecs/lib/fixedpoint.h b/lib/rbcodec/codecs/lib/fixedpoint.h index 1cbd1573bb..3d8e77cd89 100644 --- a/lib/rbcodec/codecs/lib/fixedpoint.h +++ b/lib/rbcodec/codecs/lib/fixedpoint.h @@ -9,7 +9,7 @@ * * Copyright (C) 2006 Jens Arnold * - * Fixed point library for plugins + * Fixed point library for codecs * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -20,30 +20,7 @@ * KIND, either express or implied. * ****************************************************************************/ - - /** CODECS - FIXED POINT MATH ROUTINES - USAGE - * - * - x and y arguments are fixed point integers - * - fracbits is the number of fractional bits in the argument(s) - * - functions return long fixed point integers with the specified number - * of fractional bits unless otherwise specified - * - * Calculate sin and cos of an angle: - * fp_sincos(phase, *cos) - * where phase is a 32 bit unsigned integer with 0 representing 0 - * and 0xFFFFFFFF representing 2*pi, and *cos is the address to - * a long signed integer. Value returned is a long signed integer - * from -0x80000000 to 0x7fffffff, representing -1 to 1 respectively. - * That is, value is a fixed point integer with 31 fractional bits. - * - * Take square root of a fixed point number: - * fp_sqrt(x, fracbits) - * - */ #ifndef _FIXEDPOINT_H_CODECS #define _FIXEDPOINT_H_CODECS - -long fp_sincos(unsigned long phase, long *cos); -long fp_sqrt(long a, unsigned int fracbits); - -#endif +#include "../../../../firmware/include/fixedpoint.h" +#endif /* _FIXEDPOINT_H_CODECS */ |