shithub: opus

Download patch

ref: 4a8c1f11b106f448df174a8232817c238675d367
parent: 2794b63083124b236ef8159485d65a3173269c8e
author: Jean-Marc Valin <[email protected]>
date: Wed Oct 13 14:03:50 EDT 2010

Making it possible to have two transients in a row for longer frames

--- a/libcelt/celt.c
+++ b/libcelt/celt.c
@@ -224,8 +224,8 @@
       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 @@
    
    *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;
 }