Вызов CoreAudio AudioObjectGetPropertyDataSize возвращает неправильный размер - PullRequest
0 голосов
/ 13 июня 2018

У меня проблемы с вызовом 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 имеют одинаковый результат.

...