shithub: opus

Download patch

ref: a5ce03fe8ae871e14396fe0a152fcd3bf7d752ce
parent: a18c75e55a55e29c58675e9f1b3fbe42540b117a
author: Jean-Marc Valin <[email protected]>
date: Mon Sep 13 11:06:35 EDT 2010

More quant_band() reorganisation.

--- a/libcelt/bands.c
+++ b/libcelt/bands.c
@@ -534,44 +534,37 @@
 
    if (!stereo && level == 0)
    {
+      int k;
+      if (tf_change>0)
+         recombine = tf_change;
       /* Band recombining to increase frequency resolution */
-      if (!stereo && B > 1 && level == 0 && tf_change>0)
+      for (k=0;k<recombine;k++)
       {
-         while (B>1 && tf_change>0)
-         {
-            B>>=1;
-            N_B<<=1;
-            if (encode)
-               haar1(X, N_B, B);
-            if (lowband)
-               haar1(lowband, N_B, B);
-            recombine++;
-            tf_change--;
-         }
-         B0=B;
-         N_B0 = N_B;
+         B>>=1;
+         N_B<<=1;
+         if (encode)
+            haar1(X, N_B, B);
+         if (lowband)
+            haar1(lowband, N_B, B);
       }
 
       /* Increasing the time resolution */
-      if (!stereo && level==0)
+      while ((N_B&1) == 0 && tf_change<0)
       {
-         while ((N_B&1) == 0 && tf_change<0 && B <= (1<<LM))
-         {
-            if (encode)
-               haar1(X, N_B, B);
-            if (lowband)
-               haar1(lowband, N_B, B);
-            B <<= 1;
-            N_B >>= 1;
-            time_divide++;
-            tf_change++;
-         }
-         B0 = B;
-         N_B0 = N_B;
+         if (encode)
+            haar1(X, N_B, B);
+         if (lowband)
+            haar1(lowband, N_B, B);
+         B <<= 1;
+         N_B >>= 1;
+         time_divide++;
+         tf_change++;
       }
+      B0=B;
+      N_B0 = N_B;
 
       /* Reorganize the samples in time order instead of frequency order */
-      if (!stereo && B0>1 && level==0)
+      if (B0>1)
       {
          if (encode)
             deinterleave_vector(X, N_B, B0);