我有一个执行以下操作的程序:
- 使用snd_pcm_open()函数打开默认 PCM
- 发送样本以播放声音
- 使用snd_pcm_close()函数关闭 PCM
该程序将定期播放它收到的任何声音请求,但偶尔打开会失败并返回“设备或资源繁忙”错误。这通常发生在有大量声音文件时。但是,关闭电话总是成功的。我假设如果关闭成功,那么 PCM 将立即可供其他任何人使用。我还应该补充一点,系统上没有其他使用声音的东西。
ALSA 是否有可能在收盘后仍需要清理一些资源?PCM接口不是设计成经常打开和关闭的吗?Internet 上的大多数示例在启动时打开 PCM 流并在关闭时关闭它。