diff options
author | Dave Hooper <dave@beermex.com> | 2010-02-20 11:00:16 +0000 |
---|---|---|
committer | Dave Hooper <dave@beermex.com> | 2010-02-20 11:00:16 +0000 |
commit | 730a618fae0e04c536a1cb4d561887b450b7d068 (patch) | |
tree | 93f388a6cc8942037e55c2e68505a211f461b60a /apps | |
parent | 9f63f4f2fcb5400a2c043504799228e79c424cab (diff) |
Adding ICODE for imdct (and its constituent ifft bits) gives 0.5MHz boost on arm (ipod video) and about 5MHz boost on coldfire (H120)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24786 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/lib/fft-ffmpeg.c | 13 | ||||
-rw-r--r-- | apps/codecs/lib/mdct.c | 6 |
2 files changed, 16 insertions, 3 deletions
diff --git a/apps/codecs/lib/fft-ffmpeg.c b/apps/codecs/lib/fft-ffmpeg.c index 23cf8b8aed..203a82e7d4 100644 --- a/apps/codecs/lib/fft-ffmpeg.c +++ b/apps/codecs/lib/fft-ffmpeg.c @@ -57,6 +57,10 @@ /* asm-optimised functions and/or macros */ #include "fft-ffmpeg_arm.h" +#ifndef ICODE_ATTR_TREMOR_MDCT +#define ICODE_ATTR_TREMOR_MDCT ICODE_ATTR +#endif + #if 0 static int split_radix_permutation(int i, int n, int inverse) { @@ -268,7 +272,8 @@ static inline void TRANSFORM_ZERO(FFTComplex * z, unsigned int n) #endif /* z[0...8n-1], w[1...2n-1] */ -static void pass(FFTComplex *z_arg, unsigned int STEP_arg, unsigned int n_arg) +void pass(FFTComplex *z_arg, unsigned int STEP_arg, unsigned int n_arg) ICODE_ATTR_TREMOR_MDCT; +void pass(FFTComplex *z_arg, unsigned int STEP_arg, unsigned int n_arg) { register FFTComplex * z = z_arg; register unsigned int STEP = STEP_arg; @@ -314,7 +319,8 @@ static void pass(FFTComplex *z_arg, unsigned int STEP_arg, unsigned int n_arg) 8192/16 (from "ff_cos_16") is 512 bytes. i.e. for fft16, STEP = 8192/16 */ #define DECL_FFT(n,n2,n4)\ -static void fft##n(FFTComplex *z)\ +void fft##n(FFTComplex *z) ICODE_ATTR_TREMOR_MDCT;\ +void fft##n(FFTComplex *z)\ {\ fft##n2(z);\ fft##n4(z+n4*2);\ @@ -374,7 +380,8 @@ static void fft8_dispatch(FFTComplex *z) } #ifndef CONFIG_SMALL -static void fft16(FFTComplex *z) +void fft16(FFTComplex *z) ICODE_ATTR_TREMOR_MDCT; +void fft16(FFTComplex *z) { fft8(z); fft4(z+8); diff --git a/apps/codecs/lib/mdct.c b/apps/codecs/lib/mdct.c index 3c9fe41f20..aefd553f25 100644 --- a/apps/codecs/lib/mdct.c +++ b/apps/codecs/lib/mdct.c @@ -25,6 +25,10 @@ #include "codeclib_misc.h" #include "mdct_lookup.h" +#ifndef ICODE_ATTR_TREMOR_MDCT +#define ICODE_ATTR_TREMOR_MDCT ICODE_ATTR +#endif + /** * Compute the middle half of the inverse MDCT of size N = 2^nbits * thus excluding the parts that can be derived by symmetry @@ -34,6 +38,7 @@ * NOTE - CANNOT CURRENTLY OPERATE IN PLACE (input and output must * not overlap or intersect at all) */ +void ff_imdct_half(unsigned int nbits, fixed32 *output, const fixed32 *input) ICODE_ATTR_TREMOR_MDCT; void ff_imdct_half(unsigned int nbits, fixed32 *output, const fixed32 *input) { int n8, n4, n2, n, j; @@ -244,6 +249,7 @@ void ff_imdct_half(unsigned int nbits, fixed32 *output, const fixed32 *input) * <-----------output-----------> * */ +void ff_imdct_calc(unsigned int nbits, fixed32 *output, const fixed32 *input) ICODE_ATTR_TREMOR_MDCT; void ff_imdct_calc(unsigned int nbits, fixed32 *output, const fixed32 *input) { const int n = (1<<nbits); |