我正在尝试创建“虚拟麦克风”,该麦克风应该在默认输入设备/麦克风的“前面”工作。因此,当用户选择“虚拟麦克风”作为输入(例如,在Audacity中)并开始录制声音时-Audacity将接收来自虚拟设备驱动程序的样本,该样本是由驱动程序从真实/默认麦克风获取的。因此“虚拟麦克风”是真实(默认/内置/等)代理服务器的一种。稍后需要即时处理麦克风输入。
到目前为止,我已经创建了虚拟HAL设备(基于Apple的NullAudio.c驱动程序示例),可以为Audacity生成程序声音,但是我仍然不知道从真实麦克风读取数据的方式(使用其deviceID)从内部驱动程序。
可以像在普通应用中一样通过AudioUnits / AURemoteIO / AUHAL使用普通录音吗?还是应该使用类似IOServices的东西?
文档指出
AudioServerPlugIn在有限的环境中运行。首先和 首先,AudioServerPlugIn可能不会对客户端进行任何调用 CoreAudio.framework中的HAL API。这将导致未定义 (但通常是不好的)行为。
但是就读取麦克风数据而言,尚不清楚什么是“客户端” API,什么不是。
虚拟设备驱动程序可以/应该使用哪种API来实时访问真实的麦克风数据?