我对声音编程和ALSA很陌生。我想创建一个小应用程序,例如,当一帧数据用snd_pcm_writei(...)
写入ALSA时,它会输出到控制台。有可能吗?如果有,怎么办?
目前我正在考虑将回调注册到ALSA,因此当应用程序调用snd_pcm_writei(...)
时,回调将被执行。但我不确定这是怎么回事。
最佳答案
你可以使用
阻塞模式(默认),其中snd_pcm_write*()
仅在所有数据都写入环缓冲区(或发生错误时)时返回,或
非阻塞模式(打开时启用SND_PCM_NONBLOCK
,或snd_pcm_nonblock()
),在该模式下,您可以使用poll()
/epoll()
等获取通知。
使用ALSA异步处理程序只适用于某些设备,并且具有信号处理程序的所有缺点;它已被弃用。
关于c++ - Linux/ALSA:将帧写入声卡时进行回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56756344/