Skip to main content

flowly_mpegts/
error.rs

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}