Краткая версия: я разрабатываю приложение для синтезатора и использую Opensl с низкой задержкой. Я выполнял все аудио расчеты в функции обратного вызова Opensl (я знаю, что не должен, но я все равно это сделал). Теперь вычисления занимают около 75% процессорного времени на моем Nexus 4, поэтому следующим шагом будет выполнение всех вычислений в нескольких потоках.
Проблема, с которой я столкнулся, заключалась в том, что звук начал заикаться, поскольку поток обратного вызова, очевидно, работает с высоким приоритетом, а мой новый поток - нет. Если я использую больше/больше буферов, проблема исчезает, но и в реальном времени тоже. Установка более высокого приоритета для нового потока, похоже, не работает. Итак, возможно ли вообще сделать потоковое аудио с малой задержкой или мне нужно сделать все в обратном вызове, чтобы он работал?
У меня есть буфер из 256 выборок, и это около 5 мс, и это должно быть возрастом для планировщика потоков, чтобы запустить мой поток вычислений.