- m_planForward = fftw_create_plan (m_nFilterPoints, FFTW_FORWARD, FFTW_ESTIMATE);
- m_planBackward = fftw_create_plan (m_nFilterPoints, FFTW_BACKWARD, FFTW_ESTIMATE);
- m_vecFftInput = new fftw_complex [ m_nFilterPoints ];
- for (int i = 0; i < m_nFilterPoints; i++)
- m_vecFftInput[i].re = m_vecFftInput[i].im = 0;
+ if (m_idFilterMethod == FILTER_METHOD_RFFTW) {
+ m_complexPlanForward = m_complexPlanBackward = NULL;
+ m_realPlanForward = rfftw_create_plan (m_nFilterPoints, FFTW_REAL_TO_COMPLEX, FFTW_ESTIMATE);
+ m_realPlanBackward = rfftw_create_plan (m_nFilterPoints, FFTW_COMPLEX_TO_REAL, FFTW_ESTIMATE);
+ m_vecRealFftInput = new fftw_real [ m_nFilterPoints ];
+ for (int i = 0; i < m_nFilterPoints; i++)
+ m_vecRealFftInput[i] = 0;
+ } else if (m_idFilterMethod == FILTER_METHOD_FFTW) {
+ m_realPlanForward = m_realPlanBackward = NULL;
+ m_complexPlanForward = fftw_create_plan (m_nFilterPoints, FFTW_FORWARD, FFTW_ESTIMATE);
+ m_complexPlanBackward = fftw_create_plan (m_nFilterPoints, FFTW_BACKWARD, FFTW_ESTIMATE);
+ m_vecComplexFftInput = new fftw_complex [ m_nFilterPoints ];
+ for (int i = 0; i < m_nFilterPoints; i++)
+ m_vecComplexFftInput[i].re = m_vecComplexFftInput[i].im = 0;