No longer filling the stereo side with noise.
authorJean-Marc Valin <jean-marc.valin@octasic.com>
Wed, 13 Oct 2010 15:48:17 +0000 (11:48 -0400)
committerJean-Marc Valin <jean-marc.valin@octasic.com>
Wed, 13 Oct 2010 15:48:17 +0000 (11:48 -0400)
libcelt/bands.c
libcelt/vq.c

index 4032aa5..085cfa0 100644 (file)
@@ -909,7 +909,6 @@ void quant_all_bands(int encode, const CELTMode *m, int start, int end, celt_nor
       int curr_balance;
       celt_norm * restrict X, * restrict Y;
       int tf_change=0;
-      celt_norm *effective_lowband;
       
       X = _X+M*eBands[i];
       if (_Y!=NULL)
@@ -953,12 +952,8 @@ void quant_all_bands(int encode, const CELTMode *m, int start, int end, celt_nor
             Y = norm;
       }
 
-      if (tf_change==0 && !shortBlocks && fold==2)
-         effective_lowband = NULL;
-      else
-         effective_lowband = lowband;
       quant_band(encode, m, i, X, Y, N, b, fold, B, tf_change,
-            effective_lowband, resynth, ec, &remaining_bits, LM,
+            lowband, resynth, ec, &remaining_bits, LM,
             norm+M*eBands[i], bandE, 0, &seed, Q15ONE, lowband_scratch);
 
       balance += pulses[i] + tell;
index 7b8e2df..b429ad0 100644 (file)
@@ -183,17 +183,23 @@ void alg_quant(celt_norm *X, int N, int K, int spread, int B, celt_norm *lowband
    {
       if (lowband != NULL && resynth)
       {
-         for (j=0;j<N;j++)
-            X[j] = lowband[j];
+         if (spread==2 && B<=1)
+         {
+            for (j=0;j<N;j++)
+            {
+               *seed = lcg_rand(*seed);
+               X[j] = (int)(*seed)>>20;
+            }
+         } else {
+            for (j=0;j<N;j++)
+               X[j] = lowband[j];
+         }
+         renormalise_vector(X, N, gain);
       } else {
          /* This is important for encoding the side in stereo mode */
          for (j=0;j<N;j++)
-         {
-            *seed = lcg_rand(*seed);
-            X[j] = (int)(*seed)>>20;
-         }
+            X[j] = 0;
       }
-      renormalise_vector(X, N, gain);
       return;
    }
    K = get_pulses(K);
@@ -361,17 +367,23 @@ void alg_unquant(celt_norm *X, int N, int K, int spread, int B,
    {
       if (lowband != NULL)
       {
-         for (i=0;i<N;i++)
-            X[i] = lowband[i];
+         if (spread==2 && B<=1)
+         {
+            for (i=0;i<N;i++)
+            {
+               *seed = lcg_rand(*seed);
+               X[i] = (int)(*seed)>>20;
+            }
+         } else {
+            for (i=0;i<N;i++)
+               X[i] = lowband[i];
+         }
+         renormalise_vector(X, N, gain);
       } else {
          /* This is important for encoding the side in stereo mode */
          for (i=0;i<N;i++)
-         {
-            *seed = lcg_rand(*seed);
-            X[i] = (int)(*seed)>>20;
-         }
+            X[i] = 0;
       }
-      renormalise_vector(X, N, gain);
       return;
    }
    K = get_pulses(K);