Defining merge_stereo() when S==-M or S==M
authorJean-Marc Valin <jean-marc.valin@octasic.com>
Fri, 21 Jan 2011 23:41:48 +0000 (18:41 -0500)
committerJean-Marc Valin <jean-marc.valin@octasic.com>
Fri, 21 Jan 2011 23:41:48 +0000 (18:41 -0500)
libcelt/bands.c

index cb4dc5b..45680fd 100644 (file)
@@ -346,10 +346,12 @@ static void stereo_merge(celt_norm *X, celt_norm *Y, celt_word16 mid, int N)
    mid2 = SHR32(mid, 1);
    El = MULT16_16(mid2, mid2) + side - 2*xp;
    Er = MULT16_16(mid2, mid2) + side + 2*xp;
-   if (Er < EPSILON)
-      Er = EPSILON;
-   if (El < EPSILON)
-      El = EPSILON;
+   if (Er < QCONST32(6e-4f, 28) || El < QCONST32(6e-4f, 28))
+   {
+      for (j=0;j<N;j++)
+         Y[j] = X[j];
+      return;
+   }
 
 #ifdef FIXED_POINT
    kl = celt_ilog2(El)>>1;