0

这个发病检测程序中有几行代码使用了难以合并到 iOS中的FFTW3 库。我想使用Accelerate 框架替换它。

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 的了解非常有限。任何让我朝着正确方向前进的指示都非常感谢。

4

0 回答 0