summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/libopus/celt/fixed_generic.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/codecs/libopus/celt/fixed_generic.h')
-rw-r--r--lib/rbcodec/codecs/libopus/celt/fixed_generic.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/rbcodec/codecs/libopus/celt/fixed_generic.h b/lib/rbcodec/codecs/libopus/celt/fixed_generic.h
index ecf018a244..ac67d37ce8 100644
--- a/lib/rbcodec/codecs/libopus/celt/fixed_generic.h
+++ b/lib/rbcodec/codecs/libopus/celt/fixed_generic.h
@@ -113,7 +113,11 @@
113/** 16x32 multiply, followed by a 15-bit shift right and 32-bit add. 113/** 16x32 multiply, followed by a 15-bit shift right and 32-bit add.
114 b must fit in 31 bits. 114 b must fit in 31 bits.
115 Result fits in 32 bits. */ 115 Result fits in 32 bits. */
116#define MAC16_32_Q15(c,a,b) ADD32(c,ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15))) 116#define MAC16_32_Q15(c,a,b) ADD32((c),ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15)))
117
118/** 16x32 multiplication, followed by a 16-bit shift right and 32-bit add.
119 Results fits in 32 bits */
120#define MAC16_32_Q16(c,a,b) ADD32((c),ADD32(MULT16_16((a),SHR((b),16)), SHR(MULT16_16SU((a),((b)&0x0000ffff)),16)))
117 121
118#define MULT16_16_Q11_32(a,b) (SHR(MULT16_16((a),(b)),11)) 122#define MULT16_16_Q11_32(a,b) (SHR(MULT16_16((a),(b)),11))
119#define MULT16_16_Q11(a,b) (SHR(MULT16_16((a),(b)),11)) 123#define MULT16_16_Q11(a,b) (SHR(MULT16_16((a),(b)),11))
@@ -131,4 +135,17 @@
131/** Divide a 32-bit value by a 32-bit value. Result fits in 32 bits */ 135/** Divide a 32-bit value by a 32-bit value. Result fits in 32 bits */
132#define DIV32(a,b) (((opus_val32)(a))/((opus_val32)(b))) 136#define DIV32(a,b) (((opus_val32)(a))/((opus_val32)(b)))
133 137
138#if defined(MIPSr1_ASM)
139#include "mips/fixed_generic_mipsr1.h"
140#endif
141
142static OPUS_INLINE opus_val16 SIG2WORD16_generic(celt_sig x)
143{
144 x = PSHR32(x, SIG_SHIFT);
145 x = MAX32(x, -32768);
146 x = MIN32(x, 32767);
147 return EXTRACT16(x);
148}
149#define SIG2WORD16(x) (SIG2WORD16_generic(x))
150
134#endif 151#endif