Невозможно прочитать идентификатор устройства захвата в macOS с помощью AudioObjectGetPropertyData - PullRequest
0 голосов
/ 06 ноября 2019

Я настраиваю автономные функции воспроизведения и записи звука в macOS, используя одну и ту же гарнитуру для воспроизведения и записи. Чтобы получить идентификатор активного устройства и идентификатор устройства по умолчанию для воспроизведения и записи, я использую базовую звуковую инфраструктуру fn AudioObjectGetPropertyData, которая правильно определяет идентификатор устройства воспроизведения, но выдает ошибки "HALC_ShellDriverPlugIn :: Open: Не удается получитьуказатель на подпрограмму Open »и« AudioObjectGetPropertyData: нет объекта с заданным идентификатором »для идентификатора устройства записи

AudioObjectPropertyAddress   prAddress;
AudioObjectID def_input_id;

        prAddress.mSelector = kAudioHardwarePropertyDefaultInputDevice;
         prAddress.mScope    = kAudioObjectPropertyScopeGlobal;
         prAddress.mElement  = kAudioObjectPropertyElementMaster;
         size_l = sizeof(AudioObjectID);

/*To get the def_input_id*/
         err = AudioObjectGetPropertyData(kAudioObjectSystemObject,
                                          &prAddress,
                                          0,
                                          NULL,
                                          &size_l,
                                          &def_input_id);

         printf("Final value of def_put_id = %d\n", def_output_id);

/*to detect the device name from def_input_id*/
         prAddress.mSelector = kAudioDevicePropertyDeviceName;
         prAddress.mScope = kAudioObjectPropertyScopeGlobal;
         prAddress.mElement = kAudioObjectPropertyElementMaster;
         size_l = sizeof(aud_dev_info.cap_dev_to_use);


         err = AudioObjectGetPropertyData(def_input_id,
                                          &prAddress,
                                          0,
                                          NULL,
                                          &size_l,
                                          aud_dev_info.cap_dev_to_use);

/* For play ID, I replace kAudioHardwarePropertyDefaultInputDevice with kAudioHardwarePropertyDefaultOutputDevice and 'def_input_id' to 'def_output_id'

Ожидается: окончательное значение def_input_id = 40 (некоторое ненулевое значение)

Получено: HALC_ShellDriverPlugIn :: Open: Не удается получить указатель на процедуру Open. Окончательное значение def_input_id = 0

      play_rec_mac_app[39589:3393106]  AudioObjectGetPropertyData: no object with given ID 0
...