#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Quality {
Bit8Fast,
Bit8Medium,
Bit8Better,
Bit16Lower,
Bit16Fast,
Bit16Medium,
Bit16Better,
Bit24Lower,
Bit24Fast,
Bit24Medium,
Bit24Better,
}
impl Quality {
pub fn attenuation(self) -> f64 {
match self {
Self::Bit8Fast => 48.0,
Self::Bit8Medium => 60.0,
Self::Bit8Better => 72.0,
Self::Bit16Lower => 84.0,
Self::Bit16Fast => 96.0,
Self::Bit16Medium => 108.0,
Self::Bit16Better => 120.0,
Self::Bit24Lower => 132.0,
Self::Bit24Fast => 144.0,
Self::Bit24Medium => 156.0,
Self::Bit24Better => 168.0,
}
}
pub fn quantify(self) -> u32 {
match self {
Self::Bit8Fast => 8,
Self::Bit8Medium => 16,
Self::Bit8Better => 32,
Self::Bit16Lower => 64,
Self::Bit16Fast => 128,
Self::Bit16Medium => 256,
Self::Bit16Better => 512,
Self::Bit24Lower => 1024,
Self::Bit24Fast => 2048,
Self::Bit24Medium => 4096,
Self::Bit24Better => 8192,
}
}
}