use crate::config::{FFT_SIZE_BY_2_PLUS_1, LRT_FEATURE_THR};
#[derive(Debug, Clone)]
pub(crate) struct SignalModel {
pub lrt: f32,
pub spectral_diff: f32,
pub spectral_flatness: f32,
pub avg_log_lrt: [f32; FFT_SIZE_BY_2_PLUS_1],
}
const SF_FEATURE_THR: f32 = 0.5;
impl Default for SignalModel {
fn default() -> Self {
Self {
lrt: LRT_FEATURE_THR,
spectral_flatness: SF_FEATURE_THR,
spectral_diff: SF_FEATURE_THR,
avg_log_lrt: [LRT_FEATURE_THR; FFT_SIZE_BY_2_PLUS_1],
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_values() {
let m = SignalModel::default();
assert_eq!(m.lrt, 0.5);
assert_eq!(m.spectral_flatness, 0.5);
assert_eq!(m.spectral_diff, 0.5);
assert!(m.avg_log_lrt.iter().all(|&v| v == 0.5));
assert_eq!(m.avg_log_lrt.len(), 129);
}
}