diff --git a/nx/include/switch/services/auddev.h b/nx/include/switch/services/auddev.h index 015b1862..b8afd3ea 100644 --- a/nx/include/switch/services/auddev.h +++ b/nx/include/switch/services/auddev.h @@ -22,4 +22,4 @@ Service* auddevGetServiceSession(void); Result auddevListAudioDeviceName(AudioDeviceName *DeviceNames, s32 max_names, s32 *total_names); Result auddevSetAudioDeviceOutputVolume(const AudioDeviceName *DeviceName, float volume); Result auddevGetAudioDeviceOutputVolume(const AudioDeviceName *DeviceName, float *volume); - +Result auddevGetActiveAudioDeviceName(AudioDeviceName *DeviceName); diff --git a/nx/source/services/auddev.c b/nx/source/services/auddev.c index a900b6a1..689c4870 100644 --- a/nx/source/services/auddev.c +++ b/nx/source/services/auddev.c @@ -62,3 +62,11 @@ Result auddevGetAudioDeviceOutputVolume(const AudioDeviceName *DeviceName, float .buffers = { { DeviceName, sizeof(AudioDeviceName) } }, ); } + +Result auddevGetActiveAudioDeviceName(AudioDeviceName *DeviceName) { + bool new_cmd = hosversionAtLeast(3,0,0); + return serviceDispatch(&g_auddevIAudioDevice, new_cmd==0 ? 3 : 10, + .buffer_attrs = { (new_cmd==0 ? SfBufferAttr_HipcMapAlias : SfBufferAttr_HipcAutoSelect) | SfBufferAttr_Out }, + .buffers = { { DeviceName, sizeof(AudioDeviceName) } }, + ); +}