我想通过AudioUnitAddRenderNotify
将输出渲染回调添加到当前活动的RemoteIO设备上,该设备将音频输出到扬声器。我无法访问实际的RemoteIO实例变量,但我想在应用程序中获取列表音频单元,并以此方式找到RemoteIO单元。这甚至可能吗?
答案 0 :(得分:1)
如果您可以访问AUGraph
,那么这是可能的。根据{{3}},有几种方法可以帮助你。
AUGraphGetNodeCount
- 获取图表中的节点数量
AUGraphGetIndNode
- 获取索引节点
AUGraphNodeInfo
- 获取有关节点的信息
获得正确的节点后,您可以获取remoteIO设备并添加回调。获得对AUGraph
的访问权限实际上是真正的问题。
答案 1 :(得分:0)
只有一个RemoteIO。我从来没有尝试过指向它而不是“创造”它的指针。为什么不尝试这样的东西,它应该为你指向RemoteIO:
OSStatus status;
AudioComponentInstance audioUnit;
// Describe audio component
AudioComponentDescription desc;
desc.componentType = kAudioUnitType_Output;
desc.componentSubType = kAudioUnitSubType_RemoteIO;
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
desc.componentManufacturer = kAudioUnitManufacturer_Apple;
// Get component
AudioComponent outputComponent = AudioComponentFindNext(NULL, &desc);
// Get audio units
status = AudioComponentInstanceNew(outputComponent, &audioUnit);
checkStatus(status);