【发布时间】:2016-06-21 17:28:04
【问题描述】:
我正在尝试将 ffmpegs fft 实用程序用于名为 real fft(rdft) 的音频样本。
但我有 SIGSEGV 错误。代码很简单。
static void fft(float* data){
RDFTContext * ctx = av_rdft_init(Globals::WindowSizePower, DFT_R2C)
av_rdft_calc(ctx, data);
av_rdft_end(ctx);
av_free(ctx);
}
定义的常量是
static const int WindowSize = 1024;
static const int WindowSizePower = 10;
谁能告诉我我做错了什么?我试图在互联网上找到使用此 ffmpeg 实用程序的示例,但我没有找到任何示例。
编辑:
这是调用这个函数的函数
void fftInit(float* correction){
m_fft_data = new float[Globals::WindowSize]();
memcpy(m_fft_data, correction, sizeof(float)*Globals::WindowSize);
for(int i = 0; i < Globals::WindowSize; ++i){
m_fft_data[i] *= m_data[i];
}
FFMPEGFFT::fft(m_fft_data);
}
输入数据已正确分配。在进入这部分之前,我测试了提取的数据。
【问题讨论】: