简短版本:我正在开发一个合成器应用程序并使用低延迟的 Opensl。我在 Opensl 回调函数中进行所有音频计算(我知道我不应该,但我还是做了)。现在计算在我的 nexus 4 上花费了大约 75% 的 cpu 时间,所以下一步是在多个线程中进行所有计算。
我遇到的问题是音频开始结巴,因为回调线程显然以高优先级运行,而我的新线程却没有。如果我使用更多/更大的缓冲区,问题就会消失,但实时也是如此。在新线程上设置更高的优先级似乎不起作用。那么,甚至有可能做线程化的低延迟音频,还是我必须在回调中做所有事情才能让它工作?
我有一个包含 256 个样本的缓冲区,大约需要 5 毫秒,这应该是线程调度程序运行我的计算线程的时间。