1pub type Result<T> = core::result::Result<T, Error>;
5
6#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
8#[non_exhaustive]
9pub enum Error {
10 #[error("buffer too short: need {need}, have {have} ({what})")]
12 BufferTooShort {
13 need: usize,
15 have: usize,
17 what: &'static str,
19 },
20 #[error("invalid pack_start_code: {0:#010X} (expected 0x000001BA)")]
22 BadPackStartCode(u32),
23 #[error("invalid system_header_start_code: {0:#010X} (expected 0x000001BB)")]
25 BadSystemHeaderStartCode(u32),
26 #[error("invalid map_stream_id: {0:#04X} (expected 0xBC)")]
28 BadMapStreamId(u8),
29 #[error("PSM CRC_32 mismatch: computed {computed:#010X}, stored {stored:#010X}")]
31 BadCrc {
32 computed: u32,
34 stored: u32,
36 },
37 #[error("bad marker bit in {0}")]
39 BadMarker(&'static str),
40 #[error("bad SCR prefix: {0:#04b} (expected 0b01)")]
42 BadScrPrefix(u8),
43 #[error("bad stream_id_extension prefix byte: {0:#04X}")]
45 BadStreamIdExtensionPrefix(u8),
46 #[error("program_mux_rate is 0 (forbidden)")]
48 ZeroMuxRate,
49 #[error("pack_stuffing_length {0} exceeds maximum 7")]
51 StuffingLengthTooLarge(u8),
52 #[error("header_length {header_length} exceeds available bytes ({available})")]
54 HeaderLengthOverflow {
55 header_length: usize,
57 available: usize,
59 },
60 #[error("program_stream_map_length {map_length} exceeds available bytes ({available})")]
62 MapLengthOverflow {
63 map_length: usize,
65 available: usize,
67 },
68 #[error("PES parse error: {0}")]
70 Pes(#[from] dvb_pes::Error),
71}