我正在使用相同的耳机在macOS中设置离线音频播放和录制功能,以进行播放和录制。为了获取活动设备ID以及播放和录制的默认设备ID,我使用了核心音频框架fn AudioObjectGetPropertyData,它可以正确检测播放deviceID,但会抛出错误“ HALC_ShellDriverPlugIn :: Open:无法获取记录设备ID的指向Open例程的指针”和“ AudioObjectGetPropertyData:没有具有给定ID的对象”
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,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,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