У меня проблемы с вызовом AudioObjectGetPropertyDataSize в CoreAudio.Проект OBJ-C на Github пытается получить количество устройств ввода, и при первом вызове AudioObjectGetPropertyDataSize возвращаемый размер = 24, который делится на размер элемента 4, дает только 6 устройств, и у меня 11.
Я переписал код ошибки в простом проекте Swift, и он вернул правильный размер 44, в результате чего у меня есть 11 устройств.
Затем я создал новый файл Swift для AudioHandleи настроил OBJ-C на Swift bridging только для того, чтобы обнаружить новый вызываемый код 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 имеют одинаковый результат.