【发布时间】:2013-03-27 09:49:58
【问题描述】:
我正在使用 ALSA API snd_pcm_drop() 来清除缓冲区。但是当我稍后使用snd_pcm_prepare() 继续音频时,我可以听到之前应该清除的部分音频。
当我的 snd_pcm_sw_params_set_stop_threshold() 值很高时,就会发生这种情况。如果我使用较低的值,则不会播放上一个音频会话的部分音频。
这里发生了什么?如何彻底清除缓冲区?
(我是 ALSA 新手)
谢谢
【问题讨论】:
-
是否可以选择使用 snd_pcm_drain() 而不是 snd_pcm_drop()?
-
听起来像是驱动程序错误,但如果没有更多信息,这很难说。
-
@Multimedia Mike,根据文档, snd_pcm_drain() 不会立即删除缓冲区。所以对我没用。反正我试过snd_pcm_drain(),但观察结果是一样的。
-
你有想过这个吗?我在 Raspberry Pi 上看到了同样的情况。