Switched to mdct mask computation
authorJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Mon, 7 Jan 2008 12:04:43 +0000 (23:04 +1100)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Mon, 7 Jan 2008 12:04:43 +0000 (23:04 +1100)
libcelt/celt.c

index e850a18..941ac7d 100644 (file)
@@ -265,12 +265,15 @@ int celt_encode(CELTEncoder *st, short *pcm)
    //for (i=0;i<(B+1)*C*N;i++) printf ("%f(%d) ", in[i], i); printf ("\n");
    /* Compute MDCTs */
    compute_mdcts(&st->mdct_lookup, st->window, in, X, N, B, C);
-   
-   compute_masking(X, mask, B*C*N, st->Fs);
-   /* Invert and stretch the mask to length of X */
-   for (i=B*C*N-1;i>=0;i--)
-      mask[i] = 1/(1+mask[i>>1]);
-   
+
+   compute_mdct_masking(X, mask, B*C*N, st->Fs);
+
+   /* Invert and stretch the mask to length of X 
+      For some reason, I get better results by using the sqrt instead,
+      although there's no valid reason to. Must investigate further */
+   for (i=0;i<B*C*N;i++)
+      mask[i] = 1/(.1+mask[i]);
+
    /* Pitch analysis */
    for (c=0;c<C;c++)
    {