#[repr(C)]
pub struct Spec { pub format: Format, pub rate: u32, pub channels: u8, }
Expand description

A sample format and attribute specification.

Fields§

§format: Format

The sample format.

§rate: u32

The sample rate. (e.g. 44100).

§channels: u8

Audio channels. (1 for mono, 2 for stereo, …).

Implementations§

source§

impl Spec

source

pub const CHANNELS_MAX: u8 = 32u8

Maximum number of allowed channels.

source

pub const RATE_MAX: u32 = 384_000u32

Maximum allowed sample rate.

source

pub fn init(&mut self)

Initializes the specified sample spec.

The sample spec will have a defined state but is_valid() will fail for it.

source

pub fn is_valid(&self) -> bool

Checks if the whole sample type specification is valid.

source

pub fn format_is_valid(&self) -> bool

Checks only if the format attribute is valid.

Or in other words that the client library running on the end user system accepts it.

source

pub fn rate_is_valid(&self) -> bool

Checks only if the rate is within the supported range.

source

pub fn channels_are_valid(&self) -> bool

Checks only if the channel count is within the supported range.

source

pub fn bytes_per_second(&self) -> usize

Gets the amount of bytes that constitute playback of one second of audio, with the specified sample type.

source

pub fn frame_size(&self) -> usize

Gets the size of a frame.

source

pub fn sample_size(&self) -> usize

Gets the size of a sample.

source

pub fn bytes_to_usec(&self, length: u64) -> MicroSeconds

Calculates the time it would take to play a buffer of the specified size.

The return value will always be rounded down for non-integral return values.

Note, the underlying calculation may overflow for very large values.

source

pub fn usec_to_bytes(&self, t: MicroSeconds) -> usize

Calculates the size of a buffer required, for playback duration of the time specified.

The return value will always be rounded down for non-integral return values.

Note, the underlying calculation may overflow for very large values.

source

pub fn print(&self) -> String

Pretty prints a sample type specification to a string.

Trait Implementations§

source§

impl AsMut<pa_sample_spec> for Spec

source§

fn as_mut(&mut self) -> &mut pa_sample_spec

Converts this type into a mutable reference of the (usually inferred) input type.
source§

impl AsRef<Spec> for pa_sample_spec

source§

fn as_ref(&self) -> &Spec

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl AsRef<pa_sample_spec> for Spec

source§

fn as_ref(&self) -> &pa_sample_spec

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Clone for Spec

source§

fn clone(&self) -> Spec

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for Spec

source§

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

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

impl From<pa_sample_spec> for Spec

source§

fn from(s: pa_sample_spec) -> Self

Converts to this type from the input type.
source§

impl PartialEq<Spec> for Spec

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for Spec

source§

impl Eq for Spec

source§

impl StructuralEq for Spec

Auto Trait Implementations§

§

impl RefUnwindSafe for Spec

§

impl Send for Spec

§

impl Sync for Spec

§

impl Unpin for Spec

§

impl UnwindSafe for Spec

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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, U> Into<U> for Twhere 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 Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.