使用Accelerate框架执行FFT

时间:2012-06-04 15:36:18

标签: c

this onset detection program中有几行代码使用了很难融入iOS的FFTW3 library。我想用Accelerate framework替换它。

onsetdshelpers.h中有一个成员变量:

fftwf_plan fftplan;

然后在onsetdshelpers.c中有几个malloc方法:

odsbuf->windoweddata = (float*) fftwf_malloc(framesizebytes);  
odsbuf->fftbuf       = (float*) fftwf_malloc(framesizebytes);

实例化fftplan

的方法
odsbuf->fftplan = fftwf_plan_r2r_1d(ods->fftsize, odsbuf->windoweddata, odsbuf->fftbuf, FFTW_R2HC, FFTW_ESTIMATE);

释放记忆的方法:

void onsetsds_destroy_audiodata(OnsetsDSAudioBuf *odsbuf){
    // take down the FFTW stuff
    fftwf_destroy_plan(odsbuf->fftplan);
    // free mem
    free(odsbuf->data);
    free(odsbuf->window);
    fftwf_free(odsbuf->windoweddata);
    fftwf_free(odsbuf->fftbuf);
}

最后实际执行FFT的方法:

fftwf_execute(odsbuf->fftplan);

我对C和FFT的了解非常有限。任何指示让我走向正确的方向,非常感谢。

0 个答案:

没有答案