22 bool begin(
int len)
override {
24 int alloc_size = len * 2;
25 fft_data.resize(alloc_size);
26 table_buffer.resize(CONFIG_DSP_MAX_FFT_SIZE);
27 assert(table_buffer.data() !=
nullptr);
28 assert(fft_data.data() !=
nullptr);
29 ret = dsps_fft2r_init_fc32(table_buffer.data(), CONFIG_DSP_MAX_FFT_SIZE);
31 LOGE(
"dsps_fft2r_init_fc32 %d", ret);
33 return fft_data.data()!=
nullptr && ret == ESP_OK;
37 dsps_fft2r_deinit_fc32();
39 table_buffer.resize(0);
44 fft_data[idx*2] = value;
45 fft_data[idx*2 + 1] = 0.0f;
49 float getValue(
int idx)
override {
return fft_data[idx * 2]; }
52 ret = dsps_fft2r_fc32(fft_data.data(), len);
54 LOGE(
"dsps_fft2r_fc32 %d", ret);
57 ret = dsps_bit_rev_fc32(fft_data.data(), len);
59 LOGE(
"dsps_bit_rev_fc32 %d", ret);
62 ret = dsps_cplx2reC_fc32(fft_data.data(), len);
64 LOGE(
"dsps_cplx2reC_fc32 %d", ret);
70 ret = dsps_fft2r_fc32(fft_data.data(), len);
72 LOGE(
"dsps_fft2r_fc32 %d", ret);
76 ret = dsps_bit_rev_fc32(fft_data.data(), len);
78 LOGE(
"dsps_bit_rev_fc32 %d", ret);
81 ret = dsps_cplx2reC_fc32(fft_data.data(), len);
83 LOGE(
"dsps_cplx2reC_fc32 %d", ret);
89 for (
int j=0;j<len;j++){
102 return (fft_data[idx*2] * fft_data[idx*2] + fft_data[idx*2+1] * fft_data[idx*2+1]);
104 bool setBin(
int pos,
float real,
float img)
override {
105 if (pos>=len)
return false;
106 fft_data[pos*2] = real;
107 fft_data[pos*2+1] = img;
104 bool setBin(
int pos,
float real,
float img)
override {
…}
114 if (pos>=len)
return false;
115 bin.real = fft_data[pos*2];
116 bin.img = fft_data[pos*2+1];
122 bool isValid()
override{
return fft_data.data()!=
nullptr && ret==ESP_OK; }
125 Vector<float> fft_data{0};
126 Vector<float> table_buffer{0};
142 return driverEx()->fft_data.data();