Skip to main content

AudioService

Struct AudioService 

Source
pub struct AudioService {
    pub output_devices: Property<Vec<Arc<OutputDevice>>>,
    pub input_devices: Property<Vec<Arc<InputDevice>>>,
    pub default_output: Property<Option<Arc<OutputDevice>>>,
    pub default_input: Property<Option<Arc<InputDevice>>>,
    pub playback_streams: Property<Vec<Arc<AudioStream>>>,
    pub recording_streams: Property<Vec<Arc<AudioStream>>>,
    /* private fields */
}
Expand description

Pipewire Audio management service. See crate-level docs for usage patterns.

Fields§

§output_devices: Property<Vec<Arc<OutputDevice>>>

All PulseAudio sinks: speakers, headphones, Bluetooth outputs, virtual sinks.

§input_devices: Property<Vec<Arc<InputDevice>>>

All PulseAudio sources: microphones, monitor sources, virtual inputs.

§default_output: Property<Option<Arc<OutputDevice>>>

Current default sink, or None if unset.

§default_input: Property<Option<Arc<InputDevice>>>

Current default source, or None if unset.

§playback_streams: Property<Vec<Arc<AudioStream>>>

Applications currently playing audio.

§recording_streams: Property<Vec<Arc<AudioStream>>>

Applications currently recording audio.

Implementations§

Source§

impl AudioService

Source

pub async fn new() -> Result<Arc<Self>, Error>

Creates a new audio service instance with default configuration.

Initializes PulseAudio connection and discovers available devices and streams.

§Errors

Returns error if PulseAudio connection fails or service initialization fails.

Source

pub fn builder() -> AudioServiceBuilder

Creates a builder for configuring an AudioService.

Source

pub async fn output_device(&self, key: DeviceKey) -> Result<OutputDevice, Error>

Returns a snapshot of the output device’s current state.

The returned OutputDevice properties will not update after this call. For live updates, see output_device_monitored.

§Errors

Returns Error::DeviceNotFound if no sink exists with this key.

Source

pub async fn output_device_monitored( &self, key: DeviceKey, ) -> Result<Arc<OutputDevice>, Error>

Returns a live-updating output device instance.

The returned OutputDevice properties update automatically when PulseAudio state changes. Monitoring stops when the Arc is dropped.

§Errors

Returns Error::DeviceNotFound if no sink exists with this key.

Source

pub async fn input_device(&self, key: DeviceKey) -> Result<InputDevice, Error>

Returns a snapshot of the input device’s current state.

§Errors

Returns Error::DeviceNotFound if no source exists with this key.

Source

pub async fn input_device_monitored( &self, key: DeviceKey, ) -> Result<Arc<InputDevice>, Error>

Returns a live-updating input device instance.

§Errors

Returns Error::DeviceNotFound if no source exists with this key.

Source

pub async fn audio_stream(&self, key: StreamKey) -> Result<AudioStream, Error>

Returns a snapshot of the audio stream’s current state.

§Errors

Returns Error::StreamNotFound if no stream exists with this key.

Source

pub async fn audio_stream_monitored( &self, key: StreamKey, ) -> Result<Arc<AudioStream>, Error>

Returns a live-updating audio stream instance.

§Errors

Returns Error::StreamNotFound if no stream exists with this key.

Trait Implementations§

Source§

impl Debug for AudioService

Source§

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

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

impl Drop for AudioService

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl ServiceMonitoring for AudioService

Source§

type Error = Error

Error type for monitoring operations.
Source§

async fn start_monitoring(&self) -> Result<(), Self::Error>

Starts monitoring for state changes. Read more

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more