diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2016-07-22 09:13:00 -0400 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2016-07-22 15:57:01 -0400 |
commit | a0bd7d3b8420be9c96f4e65e6113e11a05a23717 (patch) | |
tree | 2340ab65493a3cf8c13cd3276de4b3ef97effdfc /celt/fixed_generic.h | |
parent | 184a4767aad0e813cffa4aa178e0c161a4d17253 (diff) | |
download | libopus-a0bd7d3b8420be9c96f4e65e6113e11a05a23717.tar.gz |
fixes overflows in celt_iir() by doing proper saturation
Diffstat (limited to 'celt/fixed_generic.h')
-rw-r--r-- | celt/fixed_generic.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/celt/fixed_generic.h b/celt/fixed_generic.h index 32e38ff0..3561b93c 100644 --- a/celt/fixed_generic.h +++ b/celt/fixed_generic.h @@ -104,6 +104,9 @@ /** Shift by a and round-to-neareast 32-bit value. Result is a 16-bit value */ #define ROUND16(x,a) (EXTRACT16(PSHR32((x),(a)))) +/** Shift by a and round-to-neareast 32-bit value. Result is a saturated 16-bit value */ +#define SROUND16(x,a) EXTRACT16(SATURATE(PSHR32(x,a), 32767)); + /** Divide by two */ #define HALF16(x) (SHR16(x,1)) #define HALF32(x) (SHR32(x,1)) |