summaryrefslogtreecommitdiff
path: root/apps/codecs/libatrac/atrac3.h
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2010-02-15 22:38:01 +0000
committerAndree Buschmann <AndreeBuschmann@t-online.de>2010-02-15 22:38:01 +0000
commit800e3d9a978b246c3a49bd51e65b4de94fa668e4 (patch)
tree6727bee5239af68e68123abf27a39a681b958f67 /apps/codecs/libatrac/atrac3.h
parent86fc47c33a63b1797219610aa55846adb2f0c19b (diff)
downloadrockbox-800e3d9a978b246c3a49bd51e65b4de94fa668e4.tar.gz
rockbox-800e3d9a978b246c3a49bd51e65b4de94fa668e4.zip
Major optimization of atrac3 codec for Coldfire targets. Moving several number cruncher arrays to IRAM. Decoder is sped up by +50% on h300, decoder now finally is realtime on Coldfire targets as well.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24677 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libatrac/atrac3.h')
-rw-r--r--apps/codecs/libatrac/atrac3.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/apps/codecs/libatrac/atrac3.h b/apps/codecs/libatrac/atrac3.h
index a817db2b55..5bed9c60bf 100644
--- a/apps/codecs/libatrac/atrac3.h
+++ b/apps/codecs/libatrac/atrac3.h
@@ -3,10 +3,12 @@
3 3
4#if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == MCF5250) 4#if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == MCF5250)
5/* PP5022/24 and MCF5250 have larger IRAM */ 5/* PP5022/24 and MCF5250 have larger IRAM */
6#define IBSS_ATTR_LARGE_IRAM IBSS_ATTR 6#define IBSS_ATTR_LARGE_IRAM IBSS_ATTR
7#define ICODE_ATTR_LARGE_IRAM ICODE_ATTR
7#else 8#else
8/* other CPUs IRAM is not large enough */ 9/* other CPUs IRAM is not large enough */
9#define IBSS_ATTR_LARGE_IRAM 10#define IBSS_ATTR_LARGE_IRAM
11#define ICODE_ATTR_LARGE_IRAM
10#endif 12#endif
11 13
12/* These structures are needed to store the parsed gain control data. */ 14/* These structures are needed to store the parsed gain control data. */
@@ -30,12 +32,12 @@ typedef struct {
30 int bandsCoded; 32 int bandsCoded;
31 int numComponents; 33 int numComponents;
32 tonal_component components[64]; 34 tonal_component components[64];
33 int32_t prevFrame[1024]; 35 int32_t *prevFrame;
34 int gcBlkSwitch; 36 int gcBlkSwitch;
35 gain_block gainBlock[2]; 37 gain_block gainBlock[2];
36 38
37 int32_t spectrum[1024] __attribute__((aligned(16))); 39 int32_t *spectrum;
38 int32_t IMDCT_buf[1024] __attribute__((aligned(16))); 40 int32_t *IMDCT_buf;
39 41
40 int32_t delayBuf1[46]; ///<qmf delay buffers 42 int32_t delayBuf1[46]; ///<qmf delay buffers
41 int32_t delayBuf2[46]; 43 int32_t delayBuf2[46];