Skip to main content

AudioInputDevice

Struct AudioInputDevice 

Source
pub struct AudioInputDevice {
    pub id: String,
    pub name: String,
    pub is_default: bool,
}
Expand description

Represents an audio input device (microphone).

Fields§

§id: String

The unique device ID used with SCStreamConfiguration::with_microphone_capture_device_id

§name: String

Human-readable device name

§is_default: bool

Whether this is the system default audio input device

Implementations§

Source§

impl AudioInputDevice

Source

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 { "" });
}
Source

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);
}
Source

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

Source§

fn clone(&self) -> AudioInputDevice

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AudioInputDevice

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for AudioInputDevice

Source§

impl PartialEq for AudioInputDevice

Source§

fn eq(&self, other: &AudioInputDevice) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for AudioInputDevice

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.