gpt4 book ai didi

c - ALSA:打开和关闭 PCM On-The-Fly

转载 作者:太空狗 更新时间:2023-10-29 12:21:41 26 4
gpt4 key购买 nike

我有一个程序执行以下操作:

  1. 使用snd_pcm_open()函数打开默认PCM
  2. 发送样本以播放声音
  3. 使用snd_pcm_close()函数关闭PCM

该程序将定期播放它收到的任何声音请求,但有时打开会失败并返回“设备或资源繁忙”错误。当有很多声音文件时,通常会发生这种情况。然而,千钧一发总是成功的。我假设如果关闭成功,PCM 将立即可供其他任何人使用。我还应该补充一点,系统上没有其他使用声音的东西。

莫非ALSA关闭后还需要清理一些资源? PCM接口(interface)不是设计成经常打开和关闭的吗? Internet 上的大多数示例在启动时打开 PCM 流,并在关闭时关闭它。

最佳答案

不要经常关闭和打开它。你可以使用

snd_pcm_open()snd_pcm_close() 仅一次(应用程序的开始和结束)并在您想要重置流时使用它:

snd_pcm_drop()

snd_pcm_prepare()

通常这根本不是问题,因为 dmix 可以处理多个流。但是,如果您使用直接 hw:0 访问,则 close() 步骤在某种程度上可能是异步的,即刻的 open() 可能效果不佳。

关于c - ALSA:打开和关闭 PCM On-The-Fly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4474858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com