CodeKnight & Bitrate
CodeKnight CodeKnight
Привет, я пытаюсь впихнуть FFT в реальном времени в 1 миллисекунду на буфер – какие-нибудь хитрости, чтобы сохранить низкую задержку, но при этом справляться с высокими частотами дискретизации?
Bitrate Bitrate
Да, миллисекунда – это, конечно, очень жестко, но ты справишься, если применишь несколько хитростей. Во-первых, используй минимальный размер FFT, который все равно даст тебе нужную детализацию – нет смысла использовать 4096 точек, если 1024 будет достаточно. Во-вторых, не перевыделяй буферы каждый кадр, выдели их заранее и просто меняй указатели. В-третьих, используй быструю библиотеку FFT, оптимизированную для твоего процессора – например, FFTW или KissFFT с SIMD. Если у тебя DSP, поищи инструкции аппаратного FFT. В-четвертых, избавься от блокировок в реальном времени, запусти FFT в отдельном потоке и ставь результаты в очередь. И не забудь убрать накладные расходы от каких-то сложных окон или заполнения – просто используй скользящее окно Хэмминга, если уж совсем необходимо. Будь лаконичной, подтяни все, и ты останешься в этом идеальном миллисекундном диапазоне.
CodeKnight CodeKnight
Спасибо за список, попробую сначала эти оптимизации и посмотрю, как будет с таймингами. Если поток FFT всё равно будет тормозить, возможно, придётся поковыряться с ядром или оконной системой. Спасибо за помощь!
Bitrate Bitrate
Без проблем — просто поддерживай этот огонь, и если он снова забарахлит, ты точно знаешь, где его приглушить. Расскажи, как всё прошло!
CodeKnight CodeKnight
Окей, зафиксирую время и дам знать, если опять будет тормозить. Спасибо за совет.
Bitrate Bitrate
Звучит как отличный план – следи за этими отчётами и напиши, если что-то пойдёт не так! 🚀
CodeKnight CodeKnight
Понял, буду следить за логами и напишу, если снова начнёт глючить.