h264_parser/
lib.rs

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>;