pub struct ResamplingChannelConfig {
pub latency_seconds: f64,
pub capacity_seconds: f64,
pub overflow_autocorrect_percent_threshold: Option<f64>,
pub underflow_autocorrect_percent_threshold: Option<f64>,
pub quality: ResampleQuality,
pub subtract_resampler_delay: bool,
}Expand description
Additional options for a resampling channel.
Fields§
§latency_seconds: f64The amount of latency added in seconds between the input stream and the output stream. If this value is too small, then underflows may occur.
The default value is 0.15 (150 ms).
capacity_seconds: f64The capacity of the channel in seconds. If this is too small, then
overflows may occur. This should be at least twice as large as
latency_seconds.
Note, the actual capacity may be slightly smaller due to how the internal sampler processes in chunks.
The default value is 0.4 (400 ms).
overflow_autocorrect_percent_threshold: Option<f64>If the number of occupied samples in the channel is greater than or equal to
(latency_seconds + percent * (capacity_seconds - latency_seconds)), then discard the
number of samples needed to bring the number of occupied seconds back down to
ResamplingChannelConfig::latency_seconds. This is used to avoid excessive
overflows and reduce the percieved audio glitchiness.
The percentage is a value in the range [0.0, 100.0].
Set to None to disable this autocorrecting behavior. If the producer end is being
used in a non-realtime context, then this should be set to None.
By default this is set to Some(75.0).
underflow_autocorrect_percent_threshold: Option<f64>If the number of occupied samples in the channel is below or equal to the given
percentage of ResamplingChannelConfig::latency_seconds, then insert the number of
zero frames needed to bring the number of occupied samples back up to
ResamplingChannelConfig::latency_seconds. This is used to avoid excessive underflows
and reduce the percieved audio glitchiness.
The percentage is a value in the range [0.0, 100.0].
Set to None to disable this autocorrecting behavior. If the consumer end is being
used in a non-realtime context, then this should be set to None.
By default this is set to Some(25.0).
quality: ResampleQualityThe quality of the resampling alrgorithm to use if needed.
The default value is ResampleQuality::Normal.
subtract_resampler_delay: boolIf true, then the delay of the internal resampler (if used) will be
subtracted from the latency_seconds value to keep the perceived
latency consistent.
The default value is true.
Trait Implementations§
Source§impl Clone for ResamplingChannelConfig
impl Clone for ResamplingChannelConfig
Source§fn clone(&self) -> ResamplingChannelConfig
fn clone(&self) -> ResamplingChannelConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ResamplingChannelConfig
impl Debug for ResamplingChannelConfig
Source§impl Default for ResamplingChannelConfig
impl Default for ResamplingChannelConfig
Source§fn default() -> ResamplingChannelConfig
fn default() -> ResamplingChannelConfig
Source§impl PartialEq for ResamplingChannelConfig
impl PartialEq for ResamplingChannelConfig
impl Copy for ResamplingChannelConfig
impl StructuralPartialEq for ResamplingChannelConfig
Auto Trait Implementations§
impl Freeze for ResamplingChannelConfig
impl RefUnwindSafe for ResamplingChannelConfig
impl Send for ResamplingChannelConfig
impl Sync for ResamplingChannelConfig
impl Unpin for ResamplingChannelConfig
impl UnwindSafe for ResamplingChannelConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self using default().