CodeKnight & Bitrate
Привет, я пытаюсь впихнуть FFT в реальном времени в 1 миллисекунду на буфер – какие-нибудь хитрости, чтобы сохранить низкую задержку, но при этом справляться с высокими частотами дискретизации?
Да, миллисекунда – это, конечно, очень жестко, но ты справишься, если применишь несколько хитростей. Во-первых, используй минимальный размер FFT, который все равно даст тебе нужную детализацию – нет смысла использовать 4096 точек, если 1024 будет достаточно. Во-вторых, не перевыделяй буферы каждый кадр, выдели их заранее и просто меняй указатели. В-третьих, используй быструю библиотеку FFT, оптимизированную для твоего процессора – например, FFTW или KissFFT с SIMD. Если у тебя DSP, поищи инструкции аппаратного FFT. В-четвертых, избавься от блокировок в реальном времени, запусти FFT в отдельном потоке и ставь результаты в очередь. И не забудь убрать накладные расходы от каких-то сложных окон или заполнения – просто используй скользящее окно Хэмминга, если уж совсем необходимо. Будь лаконичной, подтяни все, и ты останешься в этом идеальном миллисекундном диапазоне.
Thanks for the checklist, I’ll try those optimizations first and see how the timing looks. If the FFT thread still lags, I might need to tweak the kernel or the windowing. Appreciate the help!