pub mod aes_standards;
pub mod ansi_s3_5;
pub mod iso_23003_3;
pub mod itu_t_compliance;
pub mod validator;
pub use aes_standards::{AesRecommendedPractice, AesStandards};
pub use ansi_s3_5::{AnsiS35Evaluator, SpeechIntelligibilityIndex};
pub use iso_23003_3::{IsoUsacValidator, UsacCompliance};
pub use itu_t_compliance::{
BadgeFormat, CertificationLevel, ComplianceCertificationReport, ComplianceTestResult,
ItuTComplianceValidator, ItuTStandard, StandardComplianceResult,
};
pub use validator::{ComplianceReport, StandardsValidator};
use thiserror::Error;
#[derive(Error, Debug)]
pub enum StandardsError {
#[error("Standard not supported: {standard}")]
UnsupportedStandard {
standard: String,
},
#[error("Compliance validation failed: {message}")]
ValidationFailed {
message: String,
},
#[error("Invalid audio data: {message}")]
InvalidAudioData {
message: String,
},
#[error("IO error: {0}")]
IoError(#[from] std::io::Error),
#[error("Standards error: {0}")]
Other(String),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum ComplianceLevel {
FullyCompliant,
PartiallyCompliant,
NotCompliant,
}
impl ComplianceLevel {
pub fn is_acceptable(&self) -> bool {
matches!(self, Self::FullyCompliant | Self::PartiallyCompliant)
}
}