New VQ search is now enabled by default after fixing the last remaining issues:
[opus.git] / tests / mdct-test.c
index 69da0c8..cd6acae 100644 (file)
@@ -4,6 +4,11 @@
 
 #include <stdio.h>
 #include "mdct.h"
+#include "stack_alloc.h"
+
+#ifndef M_PI
+#define M_PI 3.141592653
+#endif
 
 int ret = 0;
 void check(kiss_fft_scalar  * in,kiss_fft_scalar  * out,int nfft,int isinverse)
@@ -19,7 +24,7 @@ void check(kiss_fft_scalar  * in,kiss_fft_scalar  * out,int nfft,int isinverse)
            double phase = 2*M_PI*(k+.5+.25*nfft)*(bin+.5)/nfft;
            double re = cos(phase);
             
-           re /= nfft/2;
+           re /= nfft/4;
 
            ansr += in[k] * re;
         }
@@ -74,13 +79,17 @@ void test1d(int nfft,int isinverse)
 
     kiss_fft_scalar  * in = (kiss_fft_scalar*)malloc(buflen);
     kiss_fft_scalar  * out= (kiss_fft_scalar*)malloc(buflen);
+    celt_word16_t  * window= (celt_word16_t*)malloc(sizeof(celt_word16_t)*nfft/2);
     int k;
 
     mdct_init(&cfg, nfft);
     for (k=0;k<nfft;++k) {
-        in[k] = (rand() % 65536) - 32768;
+        in[k] = (rand() % 32768) - 16384;
     }
 
+    for (k=0;k<nfft/2;++k) {
+       window[k] = Q15ONE;
+    }
 #ifdef DOUBLE_PRECISION
     for (k=0;k<nfft;++k) {
        in[k] *= 32768;
@@ -98,10 +107,12 @@ void test1d(int nfft,int isinverse)
        
     if (isinverse)
     {
-       mdct_backward(&cfg,in,out);
+       for (k=0;k<nfft;++k)
+          out[k] = 0;
+       mdct_backward(&cfg,in,out, window, nfft/2);
        check_inv(in,out,nfft,isinverse);
     } else {
-       mdct_forward(&cfg,in,out);
+       mdct_forward(&cfg,in,out,window, nfft/2);
        check(in,out,nfft,isinverse);
     }
     /*for (k=0;k<nfft;++k) printf("%d %d ", out[k].r, out[k].i);printf("\n");*/
@@ -114,6 +125,7 @@ void test1d(int nfft,int isinverse)
 
 int main(int argc,char ** argv)
 {
+    ALLOC_STACK;
     if (argc>1) {
         int k;
         for (k=1;k<argc;++k) {
@@ -123,6 +135,11 @@ int main(int argc,char ** argv)
     }else{
         test1d(32,0);
         test1d(32,1);
+        test1d(256,0);
+        test1d(256,1);
+        test1d(512,0);
+        test1d(512,1);
+#ifndef RADIX_TWO_ONLY
         test1d(40,0);
         test1d(40,1);
         test1d(56,0);
@@ -131,12 +148,9 @@ int main(int argc,char ** argv)
         test1d(120,1);
         test1d(240,0);
         test1d(240,1);
-        test1d(256,0);
-        test1d(256,1);
         test1d(480,0);
         test1d(480,1);
-        test1d(512,0);
-        test1d(512,1);
+#endif
     }
     return ret;
 }