use std::sync::Arc;
#[derive(Debug, thiserror::Error, Clone)]
#[non_exhaustive]
pub enum Error {
#[error("moq lite error: {0}")]
Moq(#[from] moq_lite::Error),
#[error("json error: {0}")]
Json(Arc<serde_json::Error>),
#[error("invalid codec")]
InvalidCodec,
#[error("expected int")]
ExpectedInt(#[from] std::num::ParseIntError),
#[error("hex error: {0}")]
Hex(#[from] hex::FromHexError),
#[error("timestamp overflow")]
TimestampOverflow(#[from] moq_lite::TimeOverflow),
#[error("must start with a keyframe")]
MissingKeyframe,
#[error("timestamp went backwards")]
TimestampBackwards,
#[error("url parse error: {0}")]
Url(#[from] url::ParseError),
#[error("empty group")]
EmptyGroup,
#[error("unknown format: {0}")]
UnknownFormat(String),
}
pub type Result<T> = std::result::Result<T, Error>;
impl From<serde_json::Error> for Error {
fn from(err: serde_json::Error) -> Self {
Error::Json(Arc::new(err))
}
}