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, I: Float + Sample = f64>(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, I: Float + Sample = f64>(a: Self) -> X

Convert from Self to an arbitrary other sample format.

The default intermediate format here is f64, capable of losslessly converting all formats shorter than 52 bits. For shorter input formats (such as i16), f32 is sufficient for lossless conversion.

Implementors