summaryrefslogtreecommitdiff
path: root/apps/codecs/demac/libdemac/decoder.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2007-10-18 22:37:33 +0000
committerJens Arnold <amiconn@rockbox.org>2007-10-18 22:37:33 +0000
commit2640bdb262d07bf910a6ff614834d73713bdf4a4 (patch)
treeb42bb69edb6410f91f2e30a2f29d838b17b56e57 /apps/codecs/demac/libdemac/decoder.c
parent4a19ce39f8205f025b38dbc4297d591d033c8c2a (diff)
downloadrockbox-2640bdb262d07bf910a6ff614834d73713bdf4a4.zip
rockbox-2640bdb262d07bf910a6ff614834d73713bdf4a4.tar.gz
rockbox-2640bdb262d07bf910a6ff614834d73713bdf4a4.tar.bz2
rockbox-2640bdb262d07bf910a6ff614834d73713bdf4a4.tar.xz
APE codec: Assembler optimised vector math routines for coldfire. -c2000 is now usable at 130% realtime (was 107%), -c3000 is near realtime (93%, was 64%). -c1000 doesn't change.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15194 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/demac/libdemac/decoder.c')
-rw-r--r--apps/codecs/demac/libdemac/decoder.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/apps/codecs/demac/libdemac/decoder.c b/apps/codecs/demac/libdemac/decoder.c
index 4f4a583..326e893 100644
--- a/apps/codecs/demac/libdemac/decoder.c
+++ b/apps/codecs/demac/libdemac/decoder.c
@@ -32,12 +32,15 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
/* Statically allocate the filter buffers */
-static int16_t filterbuf32[(32*3 + HISTORY_SIZE) * 2] IBSS_ATTR; /* 4480 bytes */
-static int16_t filterbuf256[(256*3 + HISTORY_SIZE) * 2] IBSS_ATTR; /* 5120 bytes */
+static int16_t filterbuf32[(32*3 + HISTORY_SIZE) * 2] /* 4480 bytes */
+ IBSS_ATTR __attribute__((aligned(16)));
+static int16_t filterbuf256[(256*3 + HISTORY_SIZE) * 2] /* 5120 bytes */
+ IBSS_ATTR __attribute__((aligned(16)));
/* This is only needed for "insane" files, and no Rockbox targets can
hope to decode them in realtime anyway. */
-static int16_t filterbuf1280[(1280*3 + HISTORY_SIZE) * 2]; /* 17408 bytes */
+static int16_t filterbuf1280[(1280*3 + HISTORY_SIZE) * 2] /* 17408 bytes */
+ __attribute__((aligned(16)));
void init_frame_decoder(struct ape_ctx_t* ape_ctx,
unsigned char* inbuffer, int* firstbyte,
@@ -163,7 +166,7 @@ int decode_chunk(struct ape_ctx_t* ape_ctx,
}
/* Now apply the predictor decoding */
- predictor_decode_stereo(&ape_ctx->predictor,decoded0,decoded1,count);
+ predictor_decode_stereo(&ape_ctx->predictor,decoded0,decoded1,count);
if (ape_ctx->bps == 8) {
/* TODO: Handle 8-bit streams */