diff options
author | Nils Wallménius <nils@rockbox.org> | 2012-09-24 23:14:58 +0200 |
---|---|---|
committer | Nils Wallménius <nils@rockbox.org> | 2012-09-25 11:40:59 +0200 |
commit | afc6b3f0215037821382c957d975dfc8f727b2a9 (patch) | |
tree | c6f5a46eecf88ca3ee2965ba425fafac156fd955 /lib/rbcodec/codecs/opus.c | |
parent | 06fc6fdd0a6e0758043fd7aebb98f5098a8344e4 (diff) | |
download | rockbox-afc6b3f0215037821382c957d975dfc8f727b2a9.tar.gz rockbox-afc6b3f0215037821382c957d975dfc8f727b2a9.zip |
opus: asm MULT16_32_Q15 for arm and cf
Speeds up decoding of a 64kbps opus test file by 34MHz on h300 (cf),
24MHz on c200 (pp) and 13MHz on fuzev1 (amsv1)
Change-Id: I0dce6b3bfe6c81d0a722dfebb13891b9a428c6ba
Diffstat (limited to 'lib/rbcodec/codecs/opus.c')
-rw-r--r-- | lib/rbcodec/codecs/opus.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/opus.c b/lib/rbcodec/codecs/opus.c index 19bdb8daae..cf2d69738f 100644 --- a/lib/rbcodec/codecs/opus.c +++ b/lib/rbcodec/codecs/opus.c | |||
@@ -332,6 +332,12 @@ enum codec_status codec_run(void) | |||
332 | } | 332 | } |
333 | global_stack = 0; | 333 | global_stack = 0; |
334 | 334 | ||
335 | #if defined(CPU_COLDFIRE) | ||
336 | /* EMAC rounding is disabled because of MULT16_32_Q15, which will be | ||
337 | inaccurate with rounding in its current incarnation */ | ||
338 | coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE); | ||
339 | #endif | ||
340 | |||
335 | /* pre-init the ogg_sync_state buffer, so it won't need many reallocs */ | 341 | /* pre-init the ogg_sync_state buffer, so it won't need many reallocs */ |
336 | ogg_sync_init(&oy); | 342 | ogg_sync_init(&oy); |
337 | oy.storage = 64*1024; | 343 | oy.storage = 64*1024; |