void srslte_dft_load() { #ifdef FFTW_WISDOM_FILE fftwf_import_wisdom_from_filename(FFTW_WISDOM_FILE); #else printf("Warning: FFTW Wisdom file not defined\n"); #endif }
PSSinthesis::PSSinthesis(PSAnalysis *obj, const char* wisdomFile) //Construtor { Qcolumn = obj->Qcolumn; hopa = obj->hopa; N = obj->N; omega_true_sobre_fs = &obj->omega_true_sobre_fs; Xa_abs = &obj->Xa_abs; w = &obj->w; first = true; hops = new int[Qcolumn]; fill_n(hops,Qcolumn,hopa); ysaida = new double[2*N + 4*(Qcolumn-1)*hopa]; fill_n(ysaida,2*N + 4*(Qcolumn-1)*hopa,0); yshift = new double[hopa]; fill_n(yshift,hopa,0); q = fftwf_alloc_real(N); fXs = fftwf_alloc_complex(N/2 + 1); Xs.zeros(N/2 + 1); Phi.zeros(N/2 + 1); PhiPrevious.zeros(N/2 + 1); if (fftwf_import_wisdom_from_filename(wisdomFile) != 0) { p2 = fftwf_plan_dft_c2r_1d(N, fXs, q, FFTW_WISDOM_ONLY); } else { p2 = NULL; printf("PSSinthesis: failed to import wisdom file '%s'\n", wisdomFile); } }
PSAnalysis::PSAnalysis(uint32_t n_samples, int nBuffers, const char* wisdomFile) //Construtor { Qcolumn = nBuffers; hopa = n_samples; N = nBuffers*n_samples; frames = new double[N]; fill_n(frames,N,0); b = new double*[hopa]; for (int i=0 ; i< nBuffers; i++) b[i] = &frames[i*hopa]; frames2 = fftwf_alloc_real(N); fXa = fftwf_alloc_complex(N/2 + 1); Xa.zeros(N/2 + 1); XaPrevious.zeros(N/2 + 1); Xa_arg.zeros(N/2 + 1); XaPrevious_arg.zeros(N/2 + 1); d_phi.zeros(N/2 + 1); d_phi_prime.zeros(N/2 + 1); d_phi_wrapped.zeros(N/2 + 1); omega_true_sobre_fs.zeros(N/2 + 1); AUX.zeros(N/2 + 1); Xa_abs.zeros(N/2 + 1); w.zeros(N); hann(N,&w); I.zeros(N/2 + 1); I = linspace(0, N/2, N/2 + 1); if (fftwf_import_wisdom_from_filename(wisdomFile) != 0) { p = fftwf_plan_dft_r2c_1d(N, frames2, fXa, FFTW_WISDOM_ONLY); } else { p = NULL; printf("PSAnalysis: failed to import wisdom file '%s'\n", wisdomFile); } }
PitchDetection::PitchDetection(uint32_t n_samples, int nBuffers, double SampleRate, const char* wisdomFile) //Constructor { hopa = n_samples; N = nBuffers*n_samples; fs = SampleRate; frames = fftwf_alloc_real(2*N); memset(frames, 0, 2*N ); b = new float*[hopa]; for (int i=0 ; i< nBuffers; i++) { b[i] = &frames[i*hopa]; } q = fftwf_alloc_real(2*N); fXa = fftwf_alloc_complex(N + 1); fXs = fftwf_alloc_complex(N + 1); Xa.zeros(N + 1); Xs.zeros(N + 1); R.zeros(N); NORM.zeros(N); F.zeros(N); AUTO.zeros(N); if (fftwf_import_wisdom_from_filename(wisdomFile) != 0) { p = fftwf_plan_dft_r2c_1d(2*N, frames, fXa, FFTW_WISDOM_ONLY); p2 = fftwf_plan_dft_c2r_1d(2*N, fXs, q, FFTW_WISDOM_ONLY); } else { p = fftwf_plan_dft_r2c_1d(2*N, frames, fXa, FFTW_ESTIMATE); p2 = fftwf_plan_dft_c2r_1d(2*N, fXs, q, FFTW_ESTIMATE); printf("PitchDetection: failed to import wisdom file '%s', using estimate instead\n", wisdomFile); } }