diff options
author | Juan Linietsky <reduzio@gmail.com> | 2016-05-03 22:32:38 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2016-05-03 22:32:38 -0300 |
commit | dd69aeceac3d1798d0869d8adfb44af883b5fb93 (patch) | |
tree | 717e9b909ada0661940f6f3d2bd5349c6424bbf1 /drivers/opus/celt/fixed_generic.h | |
parent | 567cb691ec49844101247bb9dc34bc2722f6af4f (diff) | |
parent | b81d9e6d614a67fd58e2256e90055589205bfa30 (diff) |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'drivers/opus/celt/fixed_generic.h')
-rw-r--r-- | drivers/opus/celt/fixed_generic.h | 19 |
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 |