Linux/ALSA: 帧写入声卡回调

Linux/ALSA: Callback when frame is written to sound card

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

您可以使用

  • blocking mode(默认),其中snd_pcm_write*() returns只有当所有的数据都写入ring buffer时(或者当一个发生错误),或
  • non-blocking模式(打开时用SND_PCM_NONBLOCK启用,或snd_pcm_nonblock()),其中可以使用poll() /epoll() 等以获取通知。

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