pub struct AudioInputDevice {
pub id: String,
pub name: String,
pub is_default: bool,
}Expand description
Represents an audio input device (microphone).
Fields§
§id: StringThe unique device ID used with SCStreamConfiguration::with_microphone_capture_device_id
name: StringHuman-readable device name
is_default: boolWhether this is the system default audio input device
Implementations§
Source§impl AudioInputDevice
impl AudioInputDevice
Sourcepub fn list() -> Vec<Self>
pub fn list() -> Vec<Self>
List all available audio input devices.
The whole list is read from a single device-discovery pass, so a
microphone plugged in or unplugged during the call cannot produce a
half-updated result (a stale count paired with fresh names, or an entry
whose is_default disagrees with default_device).
§Caching
Not cached. Each call walks Apple’s audio device list and copies the
per-device strings across the FFI boundary. The cost is small in
absolute terms (microseconds) but is non-zero on every call. Code
that repeatedly needs the device list (e.g. inside a UI render loop or
per-frame decision) should cache the result and re-list only when the
user signals a possible device change (e.g. on a settings-pane open or
an AVAudioRouteChangeNotification).
§Example
use screencapturekit::audio_devices::AudioInputDevice;
let devices = AudioInputDevice::list();
for device in &devices {
println!("{}: {} {}", device.id, device.name,
if device.is_default { "(default)" } else { "" });
}Sourcepub fn default_device() -> Option<Self>
pub fn default_device() -> Option<Self>
Get the default audio input device, if any.
Reads from the same single-pass snapshot as list, so the
returned device is guaranteed to be one of the listed devices rather
than an entry that appeared or vanished between two queries.
§Example
use screencapturekit::audio_devices::AudioInputDevice;
if let Some(device) = AudioInputDevice::default_device() {
println!("Default microphone: {}", device.name);
}Sourcepub fn list_with_default() -> (Vec<Self>, Option<usize>)
pub fn list_with_default() -> (Vec<Self>, Option<usize>)
List all devices and identify the default one in a single pass.
Returns the device list plus the index of the default device within it.
Prefer this over calling list and
default_device separately: it halves the work
and rules out the two results disagreeing.
§Example
use screencapturekit::audio_devices::AudioInputDevice;
let (devices, default_index) = AudioInputDevice::list_with_default();
if let Some(default) = default_index.and_then(|i| devices.get(i)) {
println!("Default: {}", default.name);
}Trait Implementations§
Source§impl Clone for AudioInputDevice
impl Clone for AudioInputDevice
Source§fn clone(&self) -> AudioInputDevice
fn clone(&self) -> AudioInputDevice
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AudioInputDevice
impl Debug for AudioInputDevice
impl Eq for AudioInputDevice
Source§impl PartialEq for AudioInputDevice
impl PartialEq for AudioInputDevice
Source§fn eq(&self, other: &AudioInputDevice) -> bool
fn eq(&self, other: &AudioInputDevice) -> bool
self and other values to be equal, and is used by ==.