From eda57aa3868c6606eacb3580e0cf75fe48e2a26d Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jmvalin@jmvalin.ca>
Date: Thu, 3 Dec 2015 14:12:01 -0500
Subject: [PATCH] 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
---
 celt/celt_encoder.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/celt/celt_encoder.c b/celt/celt_encoder.c
index 1c9dbcb22..1bb468008 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];
       }
-- 
GitLab