我正在尝试使用 PortAudio 制作音频应用程序。我的回调函数一直很慢,它一直在造成不断的欠载。我一一删除了回调中的所有内容,直到找到问题:for 循环。我删除了所有内容,以便回调函数中唯一发生的事情是 for 循环,它仍然导致欠载。我知道这是 for 循环,因为当我减少迭代次数时,欠载就会消失。
static int patestCallback(const void *inputBuffer, void *outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo *timeInfo,
PaStreamCallbackFlags statusFlags, void *userData)
{
int x = 0;
for (int jj = 0; jj < 10000; jj++)
{
x++; // for testing, not actually used
};
return paContinue;
}
Run Code Online (Sandbox Code Playgroud)
这是我用于测试的完整代码: https //gist.github.com/johnroper100/b87641f5609dbb49bc3c1121b1f4daf1
这个问题并不是真正必要的,但我在 python 等价物 (sounddevice) 中做了相同的回调并且没有问题。