use crate::ErrorKind;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum AddonErrorKind {
VadModelLoad,
VadInference,
VadInvalidConfig,
VadInvalidFormat,
VadResample,
VadReset,
FlacIo,
FlacUnsupported,
FlacEncoder,
}
impl AddonErrorKind {
pub fn error_kind(self) -> ErrorKind {
match self {
Self::VadModelLoad => ErrorKind::Backend,
Self::VadInference => ErrorKind::Backend,
Self::VadInvalidConfig => ErrorKind::InvalidArg,
Self::VadInvalidFormat => ErrorKind::InvalidArg,
Self::VadResample => ErrorKind::Backend,
Self::VadReset => ErrorKind::Backend,
Self::FlacIo => ErrorKind::Backend,
Self::FlacUnsupported => ErrorKind::InvalidArg,
Self::FlacEncoder => ErrorKind::Backend,
}
}
pub fn as_str(self) -> &'static str {
match self {
Self::VadModelLoad => "vadModelLoad",
Self::VadInference => "vadInference",
Self::VadInvalidConfig => "vadInvalidConfig",
Self::VadInvalidFormat => "vadInvalidFormat",
Self::VadResample => "vadResample",
Self::VadReset => "vadReset",
Self::FlacIo => "flacIo",
Self::FlacUnsupported => "flacUnsupported",
Self::FlacEncoder => "flacEncoder",
}
}
pub fn explanation(self) -> &'static str {
match self {
Self::VadModelLoad => "VAD model loading failed; recreate the VAD session and retry.",
Self::VadInference => "VAD inference failed; reset the VAD session and retry.",
Self::VadInvalidConfig => {
"VAD configuration is invalid; correct the settings and retry."
}
Self::VadInvalidFormat => {
"VAD input format is invalid; use a sample rate within 8000..=192000 Hz and nonzero channels."
}
Self::VadResample => "VAD resampling failed; reset the VAD session and retry.",
Self::VadReset => "VAD reset failed; recreate the VAD session and retry.",
Self::FlacIo => {
"FLAC output I/O failed; check output access and available space, then retry."
}
Self::FlacUnsupported => {
"FLAC input is unsupported; correct the format and writer state, then retry."
}
Self::FlacEncoder => "FLAC encoding failed; recreate the writer and retry.",
}
}
}