问题:
我似乎无法在具有ARM v7l处理器的32位Ubuntu系统上同时实现正常的音频输入和输出,而且我也不明白为什么。
摘要:
我编写了PortAudio代码,该代码成功地初始化,记录,处理和回放在主要平台和体系结构(Windows,Linux,OS X,x32和x64)上运行的几种不同硬件设备上的实时音频。
出于某种原因,在ARM v7l平台上,我最需要工作(NVIDIA Jetson),音频回调会在短暂的正常运行后停止。它总是在任意数量的帧之后,在运行和不同的Jetson(具有不同的OS)之间保持恒定。
我发现只有在为输入和输出初始化PortAudio流时才会发生这种情况,但是如果我为nullptr
传递outputParams
,则一切正常。
我尝试了什么:
grep
'ing显示了很多可能的地方,但绝对没有穷尽此功能选项)。 诊断:
这似乎是PortAudio中的错误,我发现bug reports记录了类似的行为。我正在遵循非常简单的文档化过程,以识别要使用的硬件设备,提取相关属性并相应地准备我的流。同样,它几乎可以在任何地方使用。
是否有人需要更多信息来解决这个问题,或者是否有说明,实验或临时解决方法?
最佳答案
经过一周的试验并最终在此处发布,我自然在发布后的几分钟内解决了此问题。
我在参数中传递了LowLatency
,但是硬件跟不上。乘以一个常数可以立即解决该问题。
尽管由于神秘原因它仍然定期挂起,但它不再是永远挂起的情况。我猜想延迟将使我更接近永久解决方案。
解决方案:
调整输入/输出延迟。
关于c++ - 读/写同一设备时,Portaudio挂起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40159912/