From 4a8c1f11b106f448df174a8232817c238675d367 Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jean-marc.valin@octasic.com>
Date: Wed, 13 Oct 2010 18:03:50 -0400
Subject: [PATCH] Making it possible to have two transients in a row for longer
 frames

---
 libcelt/celt.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/libcelt/celt.c b/libcelt/celt.c
index 58bfeb5a6..2e002f1dc 100644
--- a/libcelt/celt.c
+++ b/libcelt/celt.c
@@ -224,8 +224,8 @@ static int transient_analysis(const celt_word32 * restrict in, int len, int C,
       tmp[i] = 0;
 
    begin[0] = 0;
-      for (i=0;i<len;i++)
-         begin[i+1] = MAX32(begin[i], ABS32(tmp[i]));
+   for (i=0;i<len;i++)
+      begin[i+1] = MAX32(begin[i], ABS32(tmp[i]));
 
    n = -1;
 
@@ -256,7 +256,13 @@ static int transient_analysis(const celt_word32 * restrict in, int len, int C,
    
    *transient_time = n;
    *frame_max = begin[len-overlap];
-
+   /* Only consider the last 7.5 ms for the next transient */
+   if (len>360+overlap)
+   {
+      *frame_max = 0;
+      for (i=len-360-overlap;i<len;i++)
+         *frame_max = MAX32(*frame_max, ABS32(tmp[i]));
+   }
    RESTORE_STACK;
    return ratio > 0;
 }
-- 
GitLab