Skip to content

Commit 282308d

Browse files
committed
macos: fix coreaudio mic default device
1 parent 9728e59 commit 282308d

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

audio/drivers/coreaudio_mic_macos.m

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -405,8 +405,25 @@ static void coreaudio_macos_microphone_device_list_free(const void *data, struct
405405
else
406406
{
407407
mic->device_name = strdup("default");
408-
mic->selected_device_id = kAudioObjectUnknown; /* System default */
409-
RARCH_LOG("[CoreAudio macOS Mic]: Requested default device, selected AudioDeviceID: %u (system default)\n", (unsigned int)mic->selected_device_id);
408+
409+
/* Get the actual system default input device instead of using kAudioObjectUnknown */
410+
AudioObjectPropertyAddress prop_addr = {
411+
kAudioHardwarePropertyDefaultInputDevice,
412+
kAudioObjectPropertyScopeGlobal,
413+
kAudioObjectPropertyElementMaster
414+
};
415+
UInt32 prop_size = sizeof(AudioDeviceID);
416+
OSStatus default_status = AudioObjectGetPropertyData(kAudioObjectSystemObject, &prop_addr, 0, NULL, &prop_size, &mic->selected_device_id);
417+
418+
if (default_status == noErr && mic->selected_device_id != kAudioObjectUnknown)
419+
{
420+
RARCH_LOG("[CoreAudio macOS Mic]: Requested default device, found actual default input device ID: %u\n", (unsigned int)mic->selected_device_id);
421+
}
422+
else
423+
{
424+
RARCH_ERR("[CoreAudio macOS Mic]: Failed to get default input device (status: %d), falling back to kAudioObjectUnknown\n", (int)default_status);
425+
mic->selected_device_id = kAudioObjectUnknown;
426+
}
410427
}
411428

412429
OSStatus status = noErr;

0 commit comments

Comments
 (0)