Trait audiostream::Sample
[-]
[+]
[src]
pub trait Sample: Add<Self> + Mul<Self> + Div<Self> + NumCast + FromPrimitive + Debug + Copy + Send { fn max() -> Self; fn min() -> Self; fn clips_hard() -> bool; fn clip(&self) -> Self; fn to_float<F: Float + Sample>(x: Self) -> F { ... } fn from_float<F: Float + Sample>(x: F) -> Self { ... } fn convert<X: Sample>(a: Self) -> X { ... } }
Type bound for sample formats.
Required Methods
fn max() -> Self
Maximum value of a valid sample.
fn min() -> Self
Minimum value of a valid sample.
fn clips_hard() -> bool
True if this type has a hard limit on values in range [min, max].
If false, values outside this range are representable and may be used but may incur loss of precision.
fn clip(&self) -> Self
Clip a value to be in range min, max.
Provided Methods
fn to_float<F: Float + Sample>(x: Self) -> F
Get a floating-point representation of a sample.
Full-scale output is in the range -1 to 1. Soft-clipped types may yield values outside this range.
fn from_float<F: Float + Sample>(x: F) -> Self
Convert a floating-point sample to any other format.
Values outside the normal sample range in soft-clipped formats will not be clipped. When converting to a hard-clipped format, clipping may occur.
fn convert<X: Sample>(a: Self) -> X
Convert from Self
to an arbitrary other sample format.
Does not currently clip values. This should be added.
The default intermediate format here is f64
, capable of losslessly
converting all formats shorter than 52 bits.