gpt4 book ai didi

objective-c - 带USB音频设备的AUHAL

转载 作者:行者123 更新时间:2023-12-03 00:42:24 26 4
gpt4 key购买 nike

我有一个USB音频设备(PreSonus audiobox),希望能够在该USB设备和默认输出设备(内部扬声器)之间切换程序的音频输出。苹果文档告诉我我必须使用AUHAL:

If you need to connect to [..] a hardware device other than the default output device, you need to use the AUHAL.



Source

通常,我会做一个设备描述,然后查看它是否存在。我编写了一个函数对此进行测试:
-(OSStatus) showAUHALDevices
{
//Show all available AUHAL devices
// Create description
AudioComponentDescription test_desc;
test_desc.componentType = kAudioUnitType_Output;
test_desc.componentSubType = kAudioUnitSubType_HALOutput;
test_desc.componentManufacturer = kAudioUnitManufacturer_Apple;
test_desc.componentFlags = 0;
test_desc.componentFlagsMask = 0;

// Determine number of available components
UInt32 count = AudioComponentCount(&test_desc);

// Print result
OSStatus err = noErr;
CFStringRef compName;
AudioComponent test_comp;

for (UInt32 i = 0; i < count; i++)
{
test_comp = AudioComponentFindNext(nil, &test_desc);
err = AudioComponentCopyName(test_comp, &compName);
NSLog(@"Audio component number %u/%u: %@", (i+1), count, compName);
}

return err;
}

这里的问题是我无法将 test_desc.componentManufacturer = kAudioUnitManufacturer_Apple;设置为Apple以外的其他制造商,因此USB设备显然不会出现在日志中打印的列表中。

我想念什么?据我所知,这不是驱动程序问题。

提前致谢。

编辑

我将所有属性设置为零,但在98个不同的组件之间,USB设备仍然没有显示。我可以通过 [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]找到它,所以我可以将其设置为输入,但不能设置为输出。

最佳答案

可以将componentManufacture设置为零以将其视为通配符(componentTypecomponentSubType也可以)。

//Show all available AUHAL devices
// Create description
AudioComponentDescription test_desc;
test_desc.componentType = kAudioUnitType_Output;
test_desc.componentSubType = kAudioUnitSubType_HALOutput;
test_desc.componentManufacturer = 0;
test_desc.componentFlags = 0;
test_desc.componentFlagsMask = 0;

此外,在对第一个参数传递 AudioComponentFindNext的方式中,您对 nil的用法是错误的。第一个参数应该是您希望从中开始搜索的组件。您将第一次传递nil,然后第二次传递第一次调用的结果,依此类推。
AudioComponent test_comp = nullptr;

for (UInt32 i = 0; i < count; i++)
{
test_comp = AudioComponentFindNext(test_comp, &test_desc);
...
}

关于objective-c - 带USB音频设备的AUHAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com