summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/opus.c
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2012-09-24 23:14:58 +0200
committerNils Wallménius <nils@rockbox.org>2012-09-25 11:40:59 +0200
commitafc6b3f0215037821382c957d975dfc8f727b2a9 (patch)
treec6f5a46eecf88ca3ee2965ba425fafac156fd955 /lib/rbcodec/codecs/opus.c
parent06fc6fdd0a6e0758043fd7aebb98f5098a8344e4 (diff)
downloadrockbox-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.c6
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;