summaryrefslogtreecommitdiff
path: root/drivers/opus/celt/fixed_generic.h
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2016-05-03 19:14:24 +0200
committerRémi Verschelde <remi@verschelde.fr>2016-05-03 19:14:24 +0200
commitc90bc695447b5d74227ed7c0d0bc19b7141dc835 (patch)
tree808af09d82e51698b9b7ba18795ba3a210a1d8f0 /drivers/opus/celt/fixed_generic.h
parent4e23ba5f37e21021c47e3aecf544afc9485e311b (diff)
parent7c59d819a7ebb936d51ca032e66a2489e4080d08 (diff)
Merge pull request #4532 from vnen/pr-update-opus-1.1.2
Update Opus driver to 1.1.2
Diffstat (limited to 'drivers/opus/celt/fixed_generic.h')
-rw-r--r--drivers/opus/celt/fixed_generic.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/opus/celt/fixed_generic.h b/drivers/opus/celt/fixed_generic.h
index ecf018a244..71ab048e4a 100644
--- a/drivers/opus/celt/fixed_generic.h
+++ b/drivers/opus/celt/fixed_generic.h
@@ -113,7 +113,11 @@
/** 16x32 multiply, followed by a 15-bit shift right and 32-bit add.
b must fit in 31 bits.
Result fits in 32 bits. */
-#define MAC16_32_Q15(c,a,b) ADD32(c,ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15)))
+#define MAC16_32_Q15(c,a,b) ADD32((c),ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15)))
+
+/** 16x32 multiplication, followed by a 16-bit shift right and 32-bit add.
+ Results fits in 32 bits */
+#define MAC16_32_Q16(c,a,b) ADD32((c),ADD32(MULT16_16((a),SHR((b),16)), SHR(MULT16_16SU((a),((b)&0x0000ffff)),16)))
#define MULT16_16_Q11_32(a,b) (SHR(MULT16_16((a),(b)),11))
#define MULT16_16_Q11(a,b) (SHR(MULT16_16((a),(b)),11))
@@ -131,4 +135,17 @@
/** Divide a 32-bit value by a 32-bit value. Result fits in 32 bits */
#define DIV32(a,b) (((opus_val32)(a))/((opus_val32)(b)))
+#if defined(MIPSr1_ASM)
+#include "opus/celt/mips/fixed_generic_mipsr1.h"
+#endif
+
+static OPUS_INLINE opus_val16 SIG2WORD16_generic(celt_sig x)
+{
+ x = PSHR32(x, SIG_SHIFT);
+ x = MAX32(x, -32768);
+ x = MIN32(x, 32767);
+ return EXTRACT16(x);
+}
+#define SIG2WORD16(x) (SIG2WORD16_generic(x))
+
#endif