summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2015-12-03 14:12:01 -0500
committerJean-Marc Valin <jmvalin@jmvalin.ca>2015-12-03 14:23:32 -0500
commit0ed9cab9825d66b0a41166c0ed0bfcc71272b4e5 (patch)
tree2534e01547a3cf0aaa3ca7723b391d2423493d63
parent358183812176c252988c79bf84a34f5d3f2ef82d (diff)
downloadopus-0ed9cab9825d66b0a41166c0ed0bfcc71272b4e5.tar.gz
Fixes the transient detector on silence
Previously silence would cause the divide approximation on 0/0 to return a very large value, which would be interpreted as a transient
-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 4e688bf4..ea60524e 100644
--- a/celt/celt_encoder.c
+++ b/celt/celt_encoder.c
@@ -343,9 +343,9 @@ static int transient_analysis(const opus_val32 * OPUS_RESTRICT in, int len, int
{
int id;
#ifdef FIXED_POINT
- id = IMAX(0,IMIN(127,MULT16_32_Q15(tmp[i],norm))); /* Do not round to nearest */
+ id = MAX32(0,MIN32(127,MULT16_32_Q15(tmp[i]+EPSILON,norm))); /* Do not round to nearest */
#else
- id = IMAX(0,IMIN(127,(int)floor(64*norm*tmp[i]))); /* Do not round to nearest */
+ id = (int)MAX32(0,MIN32(127,floor(64*norm*(tmp[i]+EPSILON)))); /* Do not round to nearest */
#endif
unmask += inv_table[id];
}