void test1d(int nfft,int isinverse,int arch) { mdct_lookup cfg; size_t buflen = sizeof(kiss_fft_scalar)*nfft; kiss_fft_scalar * in = (kiss_fft_scalar*)malloc(buflen); kiss_fft_scalar * in_copy = (kiss_fft_scalar*)malloc(buflen); kiss_fft_scalar * out= (kiss_fft_scalar*)malloc(buflen); opus_val16 * window= (opus_val16*)malloc(sizeof(opus_val16)*nfft/2); int k; clt_mdct_init(&cfg, nfft, 0, arch); for (k=0;k<nfft;++k) { in[k] = (rand() % 32768) - 16384; } for (k=0;k<nfft/2;++k) { window[k] = Q15ONE; } for (k=0;k<nfft;++k) { in[k] *= 32768; } if (isinverse) { for (k=0;k<nfft;++k) { in[k] /= nfft; } } for (k=0;k<nfft;++k) in_copy[k] = in[k]; /*for (k=0;k<nfft;++k) printf("%d %d ", in[k].r, in[k].i);printf("\n");*/ if (isinverse) { for (k=0;k<nfft;++k) out[k] = 0; clt_mdct_backward(&cfg,in,out, window, nfft/2, 0, 1, arch); /* apply TDAC because clt_mdct_backward() no longer does that */ for (k=0;k<nfft/4;++k) out[nfft-k-1] = out[nfft/2+k]; check_inv(in,out,nfft,isinverse); } else { clt_mdct_forward(&cfg,in,out,window, nfft/2, 0, 1, arch); check(in_copy,out,nfft,isinverse); } /*for (k=0;k<nfft;++k) printf("%d %d ", out[k].r, out[k].i);printf("\n");*/ free(in); free(in_copy); free(out); free(window); clt_mdct_clear(&cfg, arch); }
void test1d(int nfft,int isinverse) { mdct_lookup cfg; size_t buflen = sizeof(kiss_fft_scalar)*nfft; kiss_fft_scalar * in = (kiss_fft_scalar*)malloc(buflen); kiss_fft_scalar * out= (kiss_fft_scalar*)malloc(buflen); celt_word16 * window= (celt_word16*)malloc(sizeof(celt_word16)*nfft/2); int k; clt_mdct_init(&cfg, nfft); for (k=0;k<nfft;++k) { 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; } #endif if (isinverse) { for (k=0;k<nfft;++k) { in[k] /= nfft; } } /*for (k=0;k<nfft;++k) printf("%d %d ", in[k].r, in[k].i);printf("\n");*/ if (isinverse) { for (k=0;k<nfft;++k) out[k] = 0; clt_mdct_backward(&cfg,in,out, window, nfft/2); check_inv(in,out,nfft,isinverse); } else { clt_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");*/ free(in); free(out); clt_mdct_clear(&cfg); }