1use flowly::{Fourcc, Void};
2
3#[derive(Debug, thiserror::Error)]
4pub enum Error<E = Void> {
5 #[error("Mpeg2Ts Error: {0}")]
6 TsError(#[from] mpeg2ts::Error),
7
8 #[error("Not an audio ID: {0}")]
9 WrongAudioStreamId(u8),
10
11 #[error("Not a video ID: {0}")]
12 WrongVideoStreamId(u8),
13
14 #[error("Value too large: {0}")]
15 ValueTooLarge(u64),
16
17 #[error("Marker Bits Check Fail: {0}")]
18 UnexpectedMarkerBit(u64),
19
20 #[error("Wrong SyncByte")]
21 WrogSyncByte,
22
23 #[error("Unknown PID: {0}")]
24 UnknownPid(u16),
25
26 #[error("Psi table count is zero")]
27 PsiTableCountZero,
28
29 #[error("Unsupported Codec {0}")]
30 MuxUnsupportedCodec(Fourcc),
31
32 #[error(transparent)]
33 Other(E),
34}
35
36impl Error {
37 pub fn extend<E>(self) -> Error<E> {
38 match self {
39 Error::TsError(error) => Error::TsError(error),
40 Error::WrongAudioStreamId(id) => Error::WrongAudioStreamId(id),
41 Error::WrongVideoStreamId(id) => Error::WrongVideoStreamId(id),
42 Error::ValueTooLarge(val) => Error::ValueTooLarge(val),
43 Error::UnexpectedMarkerBit(mask) => Error::UnexpectedMarkerBit(mask),
44 Error::WrogSyncByte => Error::WrogSyncByte,
45 Error::UnknownPid(pid) => Error::UnknownPid(pid),
46 Error::PsiTableCountZero => Error::PsiTableCountZero,
47 Error::MuxUnsupportedCodec(fourcc) => Error::MuxUnsupportedCodec(fourcc),
48 Error::Other(_) => unreachable!(),
49 }
50 }
51}