Fixes OPUS_SET_GAIN (was a bug in MULT16_32_P16())
authorJean-Marc Valin <jmvalin@jmvalin.ca>
Fri, 29 Nov 2013 17:21:34 +0000 (12:21 -0500)
committerJean-Marc Valin <jmvalin@jmvalin.ca>
Fri, 29 Nov 2013 17:21:34 +0000 (12:21 -0500)
celt/fixed_generic.h

index 657e67c..ecf018a 100644 (file)
@@ -40,7 +40,7 @@
 #define MULT16_32_Q16(a,b) ADD32(MULT16_16((a),SHR((b),16)), SHR(MULT16_16SU((a),((b)&0x0000ffff)),16))
 
 /** 16x32 multiplication, followed by a 16-bit shift right (round-to-nearest). Results fits in 32 bits */
-#define MULT16_32_P16(a,b) ADD32(MULT16_16((a),SHR((b),16)), PSHR(MULT16_16((a),((b)&0x0000ffff)),16))
+#define MULT16_32_P16(a,b) ADD32(MULT16_16((a),SHR((b),16)), PSHR(MULT16_16SU((a),((b)&0x0000ffff)),16))
 
 /** 16x32 multiplication, followed by a 15-bit shift right. Results fits in 32 bits */
 #define MULT16_32_Q15(a,b) ADD32(SHL(MULT16_16((a),SHR((b),16)),1), SHR(MULT16_16SU((a),((b)&0x0000ffff)),15))