summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2016-08-21 15:53:35 -0400
committerJean-Marc Valin <jmvalin@jmvalin.ca>2016-08-21 15:53:35 -0400
commit096b2207baa7da051f3805300bfe43e20256c572 (patch)
tree0f566fadf0e53034e274fabfd8ed58b1f49ab94f
parent8ab3e80ec46e8f811c5f880890488029261dea70 (diff)
downloadopus-096b2207baa7da051f3805300bfe43e20256c572.tar.gz
Make the DC rejection filter Q14 instead of Q15
This avoids an overflow on extreme signals
-rw-r--r--src/opus_encoder.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/opus_encoder.c b/src/opus_encoder.c
index 55003150..d51576c0 100644
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -388,14 +388,14 @@ static void dc_reject(const opus_val16 *in, opus_int32 cutoff_Hz, opus_val16 *ou
for (i=0;i<len;i++)
{
opus_val32 x, tmp, y;
- x = SHL32(EXTEND32(in[channels*i+c]), 15);
+ x = SHL32(EXTEND32(in[channels*i+c]), 14);
/* First stage */
tmp = x-hp_mem[2*c];
hp_mem[2*c] = hp_mem[2*c] + PSHR32(x - hp_mem[2*c], shift);
/* Second stage */
y = tmp - hp_mem[2*c+1];
hp_mem[2*c+1] = hp_mem[2*c+1] + PSHR32(tmp - hp_mem[2*c+1], shift);
- out[channels*i+c] = EXTRACT16(SATURATE(PSHR32(y, 15), 32767));
+ out[channels*i+c] = EXTRACT16(SATURATE(PSHR32(y, 14), 32767));
}
}
}