From afc6b3f0215037821382c957d975dfc8f727b2a9 Mon Sep 17 00:00:00 2001 From: Nils Wallménius Date: Mon, 24 Sep 2012 23:14:58 +0200 Subject: 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 --- lib/rbcodec/codecs/opus.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/rbcodec/codecs/opus.c') 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) } global_stack = 0; +#if defined(CPU_COLDFIRE) + /* EMAC rounding is disabled because of MULT16_32_Q15, which will be + inaccurate with rounding in its current incarnation */ + coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE); +#endif + /* pre-init the ogg_sync_state buffer, so it won't need many reallocs */ ogg_sync_init(&oy); oy.storage = 64*1024; -- cgit v1.2.3