use thiserror::Error;
#[derive(Debug, Error, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub enum OpusError {
#[error("libopus error {code}: {message}")]
Backend {
code: i32,
message: &'static str,
},
#[error("unsupported sample format: mediaway-sw-opus only accepts SampleFormat::F32")]
UnsupportedSampleFormat,
#[error("audio frame sample_rate/channels does not match the session's configuration")]
ConfigMismatch,
#[error(
"PCM frame size mismatch: session expects {expected_samples} samples/channel \
({expected_bytes} bytes), got {actual_bytes} bytes"
)]
FrameSizeMismatch {
expected_samples: usize,
expected_bytes: usize,
actual_bytes: usize,
},
#[error(
"invalid frame duration: time_base {num}/{den} does not divide evenly into a whole \
sample count at {sample_rate} Hz"
)]
InvalidFrameDuration {
num: u64,
den: u32,
sample_rate: u32,
},
#[error("Opus session closed")]
Closed,
}