我想使用alsa实现全双工通信。我首先写了捕获和回放程序,我正在使用UDP通信将数据从捕获的进程传输到回放进程。当我运行两个正在捕获而另一个正在播放的进程(这被认为是从A到B的半双工)时它运行正常,当我尝试实现另一个半双工(从B到A的半双工)时出现问题然后我得到断管错误 在阅读Mic的数据时。怎么解决这个?任何帮助,提前谢谢。
注意:我在不同的系统上运行两个进程
答案 0 :(得分:2)
当应用程序必须等待PCM设备时,它会进入休眠状态并在下一个周期边界处被唤醒。因此,读/写的最佳大小是一个周期(或其倍数)。
一旦有些帧可用,您应该立即读取/写入样本数据。
要减少过度/欠载的可能性,请增加缓冲区大小。 (在捕获设备上,增加缓冲区大小不会增加延迟。)