1pub mod config;
31pub mod recognition;
32pub mod audio;
33pub mod output;
34
35pub mod fingerprinting {
37 pub mod algorithm;
38 pub mod signature_format;
39 pub mod communication;
40 pub mod user_agent;
41 pub mod hanning;
42}
43
44mod songrec;
46pub use songrec::{SongRec, RecognitionResult, RecognitionStream};
47pub use config::Config;
48pub use output::{OutputFormat, RecognitionOutput};
49
50pub use fingerprinting::signature_format::DecodedSignature;
52pub use fingerprinting::algorithm::SignatureGenerator;
53
54pub const VERSION: &str = env!("CARGO_PKG_VERSION");
56
57#[derive(Debug)]
59pub enum SongRecError {
60 AudioError(String),
61 NetworkError(String),
62 FingerprintingError(String),
63 InvalidInput(String),
64 ConfigError(String),
65}
66
67impl std::fmt::Display for SongRecError {
68 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
69 match self {
70 SongRecError::AudioError(msg) => write!(f, "Audio error: {}", msg),
71 SongRecError::NetworkError(msg) => write!(f, "Network error: {}", msg),
72 SongRecError::FingerprintingError(msg) => write!(f, "Fingerprinting error: {}", msg),
73 SongRecError::InvalidInput(msg) => write!(f, "Invalid input: {}", msg),
74 SongRecError::ConfigError(msg) => write!(f, "Configuration error: {}", msg),
75 }
76 }
77}
78
79impl std::error::Error for SongRecError {}
80
81pub type Result<T> = std::result::Result<T, SongRecError>;