ALSA snd_pcm_drop()未清除完整缓冲区

Lun*_*oms 9 c linux alsa

我正在使用ALSA API snd_pcm_drop()来清除缓冲区.但是当我稍后继续播放音频时snd_pcm_prepare(),我可以听到之前应该被清除的部分音频.当我的价值很高时会发生这种情况snd_pcm_sw_params_set_stop_threshold().如果我使用较低的值,则不会播放来自先前音频会话的部分音频.

这里发生了什么?如何完全清除缓冲区?

(我是ALSA的新手)

谢谢

小智 0

“可以听到之前应该被清除的部分音频。” 因为ALSA缓冲区中还剩下一些音频数据,数据不够大,无法播放。放入ALSA缓冲区时放大音频包可能会解决问题。