如何检查音频设备是否为聚合

时间:2012-04-23 07:31:51

标签: macos audio core-audio

我正在努力解决一个简短的问题: 有没有办法检查我的AudioDeviceID是否是一个聚合设备? 我不知道如何检查这个,因为我没有找到一个可以与AudioObjectGetPropertyDataSize一起使用的相应选择器。 提前谢谢!

2 个答案:

答案 0 :(得分:2)

所以我自己想出了一个解决方案: 获取属性kAudioAggregateDevicePropertyActiveSubDeviceList

获取子设备列表

如果没有子设备,则会将OSStatus设置为noErr以外的其他设置。如果是这种情况,您可以假设您手上有一个聚合设备。

答案 1 :(得分:1)

这是我在搜索Coreaudio-api邮件列表档案时遇到的另一个选项(其中有一些非常有用的东西,尽管可能需要一些搜索)。

集合设备具有独特的类ID kAudioAggregateDeviceClassID,因此检查起来会更加直接。

此片段似乎可以解决问题:

                AudioObjectPropertyAddress classAddress = {
                    kAudioObjectPropertyClass,
                    kAudioObjectPropertyScopeGlobal,
                    kAudioObjectPropertyElementMaster
                };

                AudioClassID classId;
                size = sizeof(AudioClassID);
                err = AudioObjectGetPropertyData(ioDeviceId, &classAddress, 0, NULL, &size, &classId);

对于聚合设备,classId将是kAudioAggregateDeviceClassID'aagg'),而不是kAudioDeviceClassID或其他类别ID之一。

原始来源: https://lists.apple.com/archives/Coreaudio-api//2009/Oct/msg00182.html