1pub mod au;
2pub mod bitreader;
3pub mod bytescan;
4pub mod eg;
5pub mod nal;
6pub mod parser;
7pub mod pps;
8pub mod sei;
9pub mod slice;
10pub mod sps;
11
12pub use au::{AccessUnit, AccessUnitKind};
13pub use nal::{Nal, NalUnitType};
14pub use parser::AnnexBParser;
15pub use pps::Pps;
16pub use sps::Sps;
17
18use std::error::Error as StdError;
19use std::fmt;
20
21#[derive(Debug, Clone)]
22pub enum Error {
23 InvalidNalHeader,
24 MalformedSps(String),
25 MalformedPps(String),
26 SliceParseError(String),
27 MissingPps(u8),
28 MissingSps(u8),
29 UnexpectedEof,
30 InvalidStartCode,
31 BitstreamError(String),
32}
33
34impl fmt::Display for Error {
35 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
36 match self {
37 Error::InvalidNalHeader => write!(f, "Invalid NAL header"),
38 Error::MalformedSps(msg) => write!(f, "Malformed SPS: {}", msg),
39 Error::MalformedPps(msg) => write!(f, "Malformed PPS: {}", msg),
40 Error::SliceParseError(msg) => write!(f, "Slice parse error: {}", msg),
41 Error::MissingPps(id) => write!(f, "Missing PPS with id {}", id),
42 Error::MissingSps(id) => write!(f, "Missing SPS with id {}", id),
43 Error::UnexpectedEof => write!(f, "Unexpected end of file"),
44 Error::InvalidStartCode => write!(f, "Invalid start code"),
45 Error::BitstreamError(msg) => write!(f, "Bitstream error: {}", msg),
46 }
47 }
48}
49
50impl StdError for Error {}
51
52pub type Result<T> = std::result::Result<T, Error>;