Skip to main content

Config

Struct Config 

Source
#[non_exhaustive]
pub struct Config { pub input: Input, pub codec: Codec, pub sample_rate: Option<u32>, pub channels: Option<u32>, pub bitrate: Option<u32>, pub fec: bool, pub dtx: bool, pub frame_duration: Duration, }
Expand description

Encoder configuration: the input PCM layout plus the codec knobs.

The bring-your-own-PCM counterpart to Options, which publish_capture uses when the layout comes from the capture source instead of the caller.

#[non_exhaustive]: build via Config::new and set the optional fields, so future knobs don’t break callers.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§input: Input

The PCM layout fed to the encoder.

§codec: Codec

Output codec. Defaults to Codec::Opus.

§sample_rate: Option<u32>

Sample rate the codec runs at. None snaps Input::sample_rate up to the nearest rate the codec supports, resampling if that moved it.

§channels: Option<u32>

Channel count the codec runs at. None matches Input::channels; anything else is rejected, since remapping isn’t implemented.

§bitrate: Option<u32>

Bitrate in bits per second. None lets Opus pick. PCM requires None because its bitrate is fixed by the sample rate and channel count.

Rates too low for Opus to code anything at the chosen frame_duration are rejected: below its floor libopus emits empty frames whatever the input, which carry no audio and are indistinguishable from silence. The floor is 1200 bps at the default 20 ms, rises for shorter frames (9600 bps at 2.5 ms), and is 2400 bps for frames of 10 ms and longer.

§fec: bool

Enable Opus in-band forward error correction.

§dtx: bool

Enable Opus discontinuous transmission during silence.

§frame_duration: Duration

Encoded frame duration. Opus accepts 2.5 / 5 / 10 / 20 / 40 / 60 ms. PCM accepts any duration containing a whole number of samples.

Implementations§

Source§

impl Config

Source

pub fn new(input: Input) -> Self

A config encoding input with the default codec settings.

Trait Implementations§

Source§

impl Clone for Config

Source§

fn clone(&self) -> Config

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 Config

Source§

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

Formats the value using the given formatter. 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> 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> 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<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> MaybeSend for T
where T: Send,

Source§

impl<T> MaybeSend for T
where T: Send,

Source§

impl<T> MaybeSend for T
where T: Send + ?Sized,

Source§

impl<T> MaybeSync for T
where T: Sync,

Source§

impl<T> MaybeSync for T
where T: Sync,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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