diff options
Diffstat (limited to 'lib/rbcodec/codecs/libopus/celt/fixed_generic.h')
-rw-r--r-- | lib/rbcodec/codecs/libopus/celt/fixed_generic.h | 19 |
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 | |||
142 | static 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 |