CoreAudio调用AudioObjectGetPropertyDataSize返回错误的大小

时间:2018-06-12 21:39:46

标签: swift4 core-audio

我在CoreAudio中调用 AudioObjectGetPropertyDataSize 时出现问题。 Github处的OBJ-C项目尝试获取输入设备的数量,并且在第一次调用AudioObjectGetPropertyDataSize时,返回的大小= 24除以4的元素大小,结果只有6个设备,我有11个。 / p>

我在一个简单的Swift项目中重写了有问题的代码,它返回了正确的44大小,这导致了我拥有的11个设备。

然后我为AudioHandle创建了一个新的Swift文件,并将OBJ-C设置为Swift桥接,仅发现被调用的新Swift代码返回相同的错误大小24.

我创建了两个独立的项目,并将它们传递给了一些朋友进行测试。

OBJC

SWIFT4

他们报告说他们无法复制我的问题。

我目前的代码如下:

func getNumberOfDevices() -> UInt32 {
    var propertySize: UInt32 = 0

    var propertyAddress = AudioObjectPropertyAddress(
        mSelector: AudioObjectPropertySelector(kAudioHardwarePropertyDevices),
        mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal),
        mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster))

    _ = AudioObjectGetPropertyDataSize(AudioObjectID(kAudioObjectSystemObject), &propertyAddress, 0, nil, &propertySize)

    return propertySize / UInt32(MemoryLayout<AudioDeviceID>.size)
}

返回值为24的值而不是正确的值44。

任何有关正在发生的事情的想法或想法都会受到赞赏。

目前正在运行MacOS 10.13.4,Xcode 10和Xcode 9.3都有相同的结果。

0 个答案:

没有答案