Skip to content

Commit 6619025

Browse files
committed
vfx: fix fft overflow error
1 parent 8b4e51d commit 6619025

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

main/src/user/vfx.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ static void vfx_task_handle(void *pvParameter)
204204
uint16_t color_tmp = 0;
205205
uint16_t color_idx = 0;
206206
uint16_t color_ctr = vfx_ctr;
207-
uint16_t fft_amp[64] = {0};
207+
float fft_amp[64] = {0};
208208
GDisplay *g = gdispGetDisplay(0);
209209

210210
fft_config_t *fft_plan = fft_init(128, FFT_COMPLEX, FFT_FORWARD, NULL, NULL);
@@ -229,7 +229,7 @@ static void vfx_task_handle(void *pvParameter)
229229
color_tmp = color_idx;
230230
#if defined(CONFIG_VFX_OUTPUT_ST7735)
231231
for (uint16_t i=0; i<52; i++) {
232-
uint8_t temp = fft_amp[i] / 819;
232+
uint16_t temp = fft_amp[i] / 819.2;
233233
uint32_t pixel_color = read_color_from_table(color_idx, color_ctr);
234234

235235
if (temp > 80) {
@@ -249,7 +249,7 @@ static void vfx_task_handle(void *pvParameter)
249249
uint16_t fill_cy = temp;
250250
#else
251251
for (uint16_t i=0; i<60; i++) {
252-
uint8_t temp = fft_amp[i] / 485;
252+
uint16_t temp = fft_amp[i] / 485.5;
253253
uint32_t pixel_color = read_color_from_table(color_idx, color_ctr);
254254

255255
if (temp > 135) {
@@ -763,7 +763,7 @@ static void vfx_task_handle(void *pvParameter)
763763
uint8_t y = 0;
764764
uint16_t color_idx = 0;
765765
uint16_t color_ctr = vfx_ctr;
766-
uint16_t fft_amp[64] = {0};
766+
float fft_amp[64] = {0};
767767
fft_config_t *fft_plan = fft_init(128, FFT_COMPLEX, FFT_FORWARD, NULL, NULL);
768768
while (1) {
769769
if (xEventGroupGetBits(user_event_group) & VFX_RELOAD_BIT) {
@@ -785,7 +785,7 @@ static void vfx_task_handle(void *pvParameter)
785785

786786
color_idx = 63;
787787
for (uint16_t i=0; i<64; i++) {
788-
uint8_t temp = fft_amp[i] / 8192;
788+
uint16_t temp = fft_amp[i] / 8192;
789789
if (temp != 0) {
790790
fill_cube(x, 7-y, 0, x, 7-y, 7-temp, 0, 511);
791791
fill_cube(x, 7-y, 7-temp, x, 7-y, 7, color_idx, color_ctr);
@@ -819,7 +819,7 @@ static void vfx_task_handle(void *pvParameter)
819819
uint16_t color_tmp = 0;
820820
uint16_t color_idx = 0;
821821
uint16_t color_ctr = vfx_ctr;
822-
uint16_t fft_amp[64] = {0};
822+
float fft_amp[64] = {0};
823823
fft_config_t *fft_plan = fft_init(128, FFT_COMPLEX, FFT_FORWARD, NULL, NULL);
824824
while (1) {
825825
if (xEventGroupGetBits(user_event_group) & VFX_RELOAD_BIT) {
@@ -841,7 +841,7 @@ static void vfx_task_handle(void *pvParameter)
841841

842842
color_idx = color_tmp;
843843
for (uint16_t i=0; i<64; i++) {
844-
uint8_t temp = fft_amp[i] / 8192;
844+
uint16_t temp = fft_amp[i] / 8192;
845845
if (temp != 0) {
846846
fill_cube(x, 7-y, 0, x, 7-y, 7-temp, 0, 511);
847847
fill_cube(x, 7-y, 7-temp, x, 7-y, 7, color_idx, color_ctr);
@@ -882,7 +882,7 @@ static void vfx_task_handle(void *pvParameter)
882882
uint8_t color_cnt = 0;
883883
uint16_t color_idx[64] = {0};
884884
uint16_t color_ctr[64] = {vfx_ctr};
885-
uint16_t fft_amp[64] = {0};
885+
float fft_amp[64] = {0};
886886
const uint8_t led_idx_table[][64] = {
887887
{
888888
3, 4, 4, 3, 2, 2, 2, 3, 4, 5, 5, 5, 5, 4, 3, 2,
@@ -924,7 +924,7 @@ static void vfx_task_handle(void *pvParameter)
924924
x = led_idx_table[0][i];
925925
y = led_idx_table[1][i];
926926

927-
uint8_t temp = fft_amp[i] / 8192;
927+
uint16_t temp = fft_amp[i] / 8192;
928928
if (temp != 0) {
929929
fill_cube(x, 7-y, 0, x, 7-y, 7-temp, 0, 511);
930930
fill_cube(x, 7-y, 7-temp, x, 7-y, 7, color_idx[i], color_ctr[i]);

0 commit comments

Comments
 (0)