use alloc::string::String;
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum Error {
#[error("wall-clock conversion requires a TimeAnchor, but none was set")]
MissingAnchor,
#[error("emsg scheme {scheme:?} is not a SCTE-35 carriage scheme")]
UnsupportedScheme { scheme: String },
#[error("SCTE-35: {0}")]
Scte35(#[from] scte35_splice::Error),
#[error("emsg: {0}")]
Emsg(#[from] mp4_emsg::Error),
#[error("DATERANGE parse: {0}")]
AttrParse(String),
#[error("emsg timescale ({emsg}) does not match SegmentTiming timescale ({timing})")]
EmsgTimescaleMismatch { emsg: u32, timing: u32 },
#[error("presentation time precedes earliest presentation time; cannot express as v0 delta")]
EmsgPresentationTimeBeforeEpt,
#[error("presentation_time_delta value {0} exceeds u32 max")]
EmsgDeltaOverflow(u64),
}
pub type Result<T> = core::result::Result<T, Error>;