c++ - Linux/ALSA:帧写入声卡时的回调
问题描述
我是声音编程和 ALSA 的新手。我想创建一个小应用程序,例如,当一帧数据使用snd_pcm_writei(...)
. 这可能吗?如果可以,怎么做?目前我正在考虑向 ALSA 注册回调,以便在应用程序调用snd_pcm_writei(...)
回调时执行。但我不确定它是如何工作的。
解决方案
您可以使用
- 阻塞模式(默认),
snd_pcm_write*()
仅当所有数据都写入环形缓冲区(或发生错误时)才返回,或 - 非阻塞模式(打开
SND_PCM_NONBLOCK
时启用,或snd_pcm_nonblock()
),您可以在其中使用poll()
/epoll()
等来获取通知。
使用 ALSA 异步处理程序仅适用于某些设备,并且具有信号处理程序的所有缺点;它已被弃用。
推荐阅读
- java - 删除在数据库中具有外键的 Hibernate 实体
- wordpress - 在 WooCommerce 中隐藏自定义字段
- java - 为没有 pg_dump 的 Postgres db 中的所有表创建表脚本
- java - Firebase 中的过滤查询
- javascript - Javascript如何合并数组以使两个数组中原始元素的索引保持不变
- json - 如何使用节点 js 从 json 数据构建动态 html 表?
- arrays - 如何在 VB.net 中基于逗号运算符拆分字符串
- html - Bootstrap 汉堡导航栏图标丢失
- reactjs - react-native 如何在react-redux中从另一个包装connect()的类中调用函数?
- node.js - res.send() 给出 HTML 代码而不是渲染它