pub mod config;
pub mod recognition;
pub mod audio;
pub mod output;
pub mod fingerprinting {
pub mod algorithm;
pub mod signature_format;
pub mod communication;
pub mod user_agent;
pub mod hanning;
}
mod songrec;
pub use songrec::{SongRec, RecognitionResult, RecognitionStream};
pub use config::Config;
pub use output::{OutputFormat, RecognitionOutput};
pub use fingerprinting::signature_format::DecodedSignature;
pub use fingerprinting::algorithm::SignatureGenerator;
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
#[derive(Debug)]
pub enum SongRecError {
AudioError(String),
NetworkError(String),
FingerprintingError(String),
InvalidInput(String),
ConfigError(String),
}
impl std::fmt::Display for SongRecError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
SongRecError::AudioError(msg) => write!(f, "Audio error: {}", msg),
SongRecError::NetworkError(msg) => write!(f, "Network error: {}", msg),
SongRecError::FingerprintingError(msg) => write!(f, "Fingerprinting error: {}", msg),
SongRecError::InvalidInput(msg) => write!(f, "Invalid input: {}", msg),
SongRecError::ConfigError(msg) => write!(f, "Configuration error: {}", msg),
}
}
}
impl std::error::Error for SongRecError {}
pub type Result<T> = std::result::Result<T, SongRecError>;