#[cfg_attr(
feature = "serde",
derive(serde::Serialize, serde::Deserialize),
serde(default)
)]
#[cfg_attr(
feature = "quickcheck",
derive(::quickcheck_richderive::Arbitrary),
quickcheck(arbitrary = "crate::quickcheck_helpers::composite::loudness")
)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Loudness {
integrated_lufs: f32,
range_lu: f32,
true_peak_dbtp: f32,
sample_peak_dbfs: f32,
}
impl Default for Loudness {
#[cfg_attr(not(tarpaulin), inline(always))]
fn default() -> Self {
Self::new(0.0, 0.0, 0.0, 0.0)
}
}
impl Loudness {
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn new(
integrated_lufs: f32,
range_lu: f32,
true_peak_dbtp: f32,
sample_peak_dbfs: f32,
) -> Self {
Self {
integrated_lufs,
range_lu,
true_peak_dbtp,
sample_peak_dbfs,
}
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn integrated_lufs(&self) -> f32 {
self.integrated_lufs
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn range_lu(&self) -> f32 {
self.range_lu
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn true_peak_dbtp(&self) -> f32 {
self.true_peak_dbtp
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn sample_peak_dbfs(&self) -> f32 {
self.sample_peak_dbfs
}
#[must_use]
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn with_integrated_lufs(mut self, v: f32) -> Self {
self.integrated_lufs = v;
self
}
#[must_use]
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn with_range_lu(mut self, v: f32) -> Self {
self.range_lu = v;
self
}
#[must_use]
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn with_true_peak_dbtp(mut self, v: f32) -> Self {
self.true_peak_dbtp = v;
self
}
#[must_use]
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn with_sample_peak_dbfs(mut self, v: f32) -> Self {
self.sample_peak_dbfs = v;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_integrated_lufs(&mut self, v: f32) -> &mut Self {
self.integrated_lufs = v;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_range_lu(&mut self, v: f32) -> &mut Self {
self.range_lu = v;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_true_peak_dbtp(&mut self, v: f32) -> &mut Self {
self.true_peak_dbtp = v;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_sample_peak_dbfs(&mut self, v: f32) -> &mut Self {
self.sample_peak_dbfs = v;
self
}
}
#[cfg(test)]
mod tests;