From fd780ea8d66a84e2d9b8c0de8d64280e73d2fb2b Mon Sep 17 00:00:00 2001 From: "Hikaru Terazono (3c1u)" <3c1u@vulpesgames.tokyo> Date: Mon, 14 Dec 2020 01:30:33 +0900 Subject: [PATCH] Add num_audio_capture_devices and audio_capture_device_name --- src/sdl2/audio.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/sdl2/audio.rs b/src/sdl2/audio.rs index 5f622bef..73113bbe 100644 --- a/src/sdl2/audio.rs +++ b/src/sdl2/audio.rs @@ -144,6 +144,17 @@ impl AudioSubsystem { } } + #[doc(alias = "SDL_GetNumAudioDevices")] + pub fn num_audio_capture_devices(&self) -> Option { + let result = unsafe { sys::SDL_GetNumAudioDevices(1) }; + if result < 0 { + // SDL cannot retrieve a list of audio devices. This is not necessarily an error (see the SDL2 docs). + None + } else { + Some(result as u32) + } + } + #[doc(alias = "SDL_GetAudioDeviceName")] pub fn audio_playback_device_name(&self, index: u32) -> Result { unsafe { @@ -156,6 +167,19 @@ impl AudioSubsystem { } } } + + #[doc(alias = "SDL_GetAudioDeviceName")] + pub fn audio_capture_device_name(&self, index: u32) -> Result { + unsafe { + let dev_name = sys::SDL_GetAudioDeviceName(index as c_int, 1); + if dev_name.is_null() { + Err(get_error()) + } else { + let cstr = CStr::from_ptr(dev_name as *const _); + Ok(cstr.to_str().unwrap().to_owned()) + } + } + } } #[repr(i32)]