#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub struct SampleRate(pub u32);
impl SampleRate {
pub const TELEPHONE: Self = Self::new(8_000);
pub const HALF: Self = Self::new(Self::CD.0 / 2);
pub const CD: Self = Self::new(44_100);
pub const FILM: Self = Self::new(48_000);
#[must_use]
pub const fn new(value: u32) -> Self {
Self(value)
}
}
impl Default for SampleRate {
fn default() -> Self {
Self::CD
}
}
impl From<SampleRate> for f64 {
fn from(value: SampleRate) -> Self {
f64::from(value.0)
}
}
impl std::ops::Mul<u32> for SampleRate {
type Output = Self;
fn mul(self, rhs: u32) -> Self {
Self(self.0 * rhs)
}
}