1use std::string::FromUtf8Error;
2use thiserror::Error;
3use crate::r#type::BoxType;
4
5#[derive(Error, Debug)]
6pub enum MalformedBoxError {
7 #[error("Trying to read {actual} as {target}")]
8 ReadingWrongBox {
9 target: BoxType,
10 actual: BoxType
11 },
12 #[error("Malformed {0} Box: unknown version: {1}")]
13 UnknownVersion(BoxType, u8),
14 #[error("Malformed {0} Box: {1}")]
15 Custom(BoxType, String),
16 #[error("Unknown mp4box has unknown size that should read to end")]
17 UnknownSizeForUnknownBox,
18}
19#[derive(Error, Debug)]
20pub enum MP4Error {
21 #[error("IO Error")]
22 IO(#[from] std::io::Error),
23 #[error("Bad Utf8 String")]
24 BadUtf8(#[from] FromUtf8Error),
25 #[error("Malformed Box")]
26 MalformedBox(#[from] MalformedBoxError),
27 #[error("{0}")]
28 Custom(String),
29 #[error("unknown mp4 error")]
30 Unknown,
31}