我使用ASLA音频API在我的嵌入式linux应用程序中播放声音。我在观察snd_pcm_writei
API返回–EPIPE
错误的时候,当这个错误发生时,我调用snd_pcm_prepare
(这基本上为–EPIPE
的重用做了准备)。
if ((err = snd_pcm_writei (playback_handle, buf, nframes)) < 0)
{
if ((err = snd_pcm_prepare (playback_handle)) < 0)
return err;
}
我发现了一些建议,在这种情况下,使用snd_pcm_recover
代替snd_pcm_recover
应该是正确的方法。在尝试修复之前,我只想知道是否有人可以帮助我理解如何将PCM设备设置为从编写过程中可能发生的运行不足或其他错误中恢复。
发布于 2015-06-10 12:52:25
snd_pcm_recover()
函数处理更多的错误代码,因此您应该使用它。但是它最终还是调用了snd_pcm_prepare()
(参见源代码)。
snd_pcm_prepare()
没有什么特别之处;它只是重新初始化流的最简单方法。
https://stackoverflow.com/questions/30755387
复制相似问题