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);