Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.xiph.org/xiph/opus.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2016-07-25 00:54:56 +0300
committerJean-Marc Valin <jmvalin@jmvalin.ca>2016-07-25 04:36:06 +0300
commit84043f7cf7e00351264ee97d85333fa9a3fc8f97 (patch)
treed219dab06354de9cddb0ef1c4ce52d19870aa5de
parent223657b51b0a74e8bc0b6e15841b61c08776ee5b (diff)
Fixes a shift<0 issue in transient_analysis()
Fixes a potential overflow in high-passed signal for transient detection and ensures that the shift can never go negative
-rw-r--r--celt/celt_encoder.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/celt/celt_encoder.c b/celt/celt_encoder.c
index 1f6d0ce9..4473b37b 100644
--- a/celt/celt_encoder.c
+++ b/celt/celt_encoder.c
@@ -272,7 +272,7 @@ static int transient_analysis(const opus_val32 * OPUS_RESTRICT in, int len, int
mem0 = mem1 + y - 2*x;
mem1 = x - .5f*y;
#endif
- tmp[i] = EXTRACT16(SHR32(y,2));
+ tmp[i] = SROUND16(y, 2);
/*printf("%f ", tmp[i]);*/
}
/*printf("\n");*/
@@ -283,7 +283,7 @@ static int transient_analysis(const opus_val32 * OPUS_RESTRICT in, int len, int
/* Normalize tmp to max range */
{
int shift=0;
- shift = 14-celt_ilog2(1+celt_maxabs16(tmp, len));
+ shift = 14-celt_ilog2(MAX16(1, celt_maxabs16(tmp, len)));
if (shift!=0)
{
for (i=0;i<len;i++)