Я настраиваю автономные функции воспроизведения и записи звука в 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