首页 > 解决方案 > Linux/ALSA:帧写入声卡时的回调

问题描述

我是声音编程和 ALSA 的新手。我想创建一个小应用程序,例如,当一帧数据使用snd_pcm_writei(...). 这可能吗?如果可以,怎么做?目前我正在考虑向 ALSA 注册回调,以便在应用程序调用snd_pcm_writei(...)回调时执行。但我不确定它是如何工作的。

标签: c++linuxalsa

解决方案


您可以使用

  • 阻塞模式(默认),snd_pcm_write*()仅当所有数据都写入环形缓冲区(或发生错误时)才返回,或
  • 非阻塞模式(打开SND_PCM_NONBLOCK时启用,或snd_pcm_nonblock()),您可以在其中使用poll()/epoll()等来获取通知。

使用 ALSA 异步处理程序仅适用于某些设备,并且具有信号处理程序的所有缺点;它已被弃用。


推荐阅读