您好,我正在使用 alsa 的 API 和 snd_pcm_writei 开发声音播放器。
在 CENTOS5 和 alsa 1.0.18RC3 中工作正常,但是在 Ubuntu 10.10 和 alsa 1.0.23 上,我的时间有问题。
我将缓冲区大小和周期大小设置为 40 毫秒。在 CENTOS5 中,snd_pcm_writei 阻止了我 40 毫秒,没关系,但在 Ubuntu 中,snd_pcm_writei 阻止了我 80 毫秒,然后在下一次呼叫中没有阻止我,然后是 80 毫秒,然后是 0....但是为什么呢?我每次调用我写 40 毫秒,就好像缓冲区大小是 80 毫秒,声卡需要另外 40 毫秒来填充缓冲区,然后等待 80 毫秒直到播放帧,但是我将缓冲区大小设置为 40 毫秒并检查它。
所以我的问题是,呼叫之间有 40 毫秒我能做什么?
非常感谢