Other Parts Discussed in Thread: FFTLIB
我参考使用FFTLIB 库, D:\ti\fftlib_k2hx_2_0_0_2\packages\ti\fftlib\src\fft_sp_1d_r2c\fft_sp_1d_r2c_d.c文件中的fft_sp_plan_1d_r2c进行修改做4096点1D FFT变换(因据说这个fft会比较快 ),我看了不少了该函数的手册,但是还是没有搞懂fft_memory_request 的传入参数FFTmemBuffer_t结构体中的base是什么意思,看头文件中解释说是应用缓存的头指针位置,但是为什么会出现10个缓存??
1.ptr_x_i
2.ptr_y_i
3.ptr_w_i
4.ptr_x_i_work
5.ptr_y_i_work
6.ptr_w_i_work
7.ptr_y_i_temp
8.ptr_Bn_i
9.ptr_Bn_i_work
10.ptr_work
问题:
ptr_x_i,ptr_y_i,ptr_w_i 我的理解是输入,输出,和旋转因子,那么后面的带有_work的内存段是什么意思呢??
void fft_memory_request (int nbufs, FFTmemBuffer_t *bufs)
{
int i;
printf ("FFT memory buffers:\n");
printf (" Buffer Size(bytes) Alignment\n");
for (i = 0; i < nbufs; i++) {
printf (" %3d %7d %4d \n", i, (int)bufs[i].size, (int)bufs[i].log2align);
}
bufs[0].base = ptr_x_i;
bufs[1].base = ptr_y_i;
bufs[2].base = ptr_w_i;
bufs[4].base = ptr_x_i_work;
bufs[5].base = ptr_y_i_work;
bufs[6].base = ptr_w_i_work;
bufs[9].base = ptr_y_i_temp;
if (bufs[3].size != 0)
{
bufs[3].base = ptr_Bn_i;
bufs[7].base = ptr_Bn_i_work;
}
else
{
bufs[3].base = NULL;
bufs[7].base = NULL;
}
if (bufs[8].size != 0)
bufs[8].base = ptr_work;
else
bufs[8].base = NULL;
} /* fft_memory_request */