1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, Error>;
4
5#[derive(Error, Debug, PartialEq)]
6#[non_exhaustive]
7pub enum Error {
8 #[error("RTP header size insufficient")]
9 ErrHeaderSizeInsufficient,
10 #[error("RTP header size insufficient for extension")]
11 ErrHeaderSizeInsufficientForExtension,
12 #[error("buffer too small")]
13 ErrBufferTooSmall,
14 #[error("extension not enabled")]
15 ErrHeaderExtensionsNotEnabled,
16 #[error("extension not found")]
17 ErrHeaderExtensionNotFound,
18
19 #[error("header extension id must be between 1 and 14 for RFC 5285 extensions")]
20 ErrRfc8285oneByteHeaderIdrange,
21 #[error("header extension payload must be 16bytes or less for RFC 5285 one byte extensions")]
22 ErrRfc8285oneByteHeaderSize,
23
24 #[error("header extension id must be between 1 and 255 for RFC 5285 extensions")]
25 ErrRfc8285twoByteHeaderIdrange,
26 #[error("header extension payload must be 255bytes or less for RFC 5285 two byte extensions")]
27 ErrRfc8285twoByteHeaderSize,
28
29 #[error("header extension id must be 0 for none RFC 5285 extensions")]
30 ErrRfc3550headerIdrange,
31
32 #[error("packet is not large enough")]
33 ErrShortPacket,
34 #[error("invalid nil packet")]
35 ErrNilPacket,
36 #[error("too many PDiff")]
37 ErrTooManyPDiff,
38 #[error("too many spatial layers")]
39 ErrTooManySpatialLayers,
40 #[error("NALU Type is unhandled")]
41 ErrUnhandledNaluType,
42
43 #[error("corrupted h265 packet")]
44 ErrH265CorruptedPacket,
45 #[error("invalid h265 packet type")]
46 ErrInvalidH265PacketType,
47
48 #[error("payload is too small for OBU extension header")]
49 ErrPayloadTooSmallForObuExtensionHeader,
50 #[error("payload is too small for OBU payload size")]
51 ErrPayloadTooSmallForObuPayloadSize,
52
53 #[error("extension_payload must be in 32-bit words")]
54 HeaderExtensionPayloadNot32BitWords,
55 #[error("audio level overflow")]
56 AudioLevelOverflow,
57 #[error("playout delay overflow")]
58 PlayoutDelayOverflow,
59 #[error("payload is not large enough")]
60 PayloadIsNotLargeEnough,
61 #[error("STAP-A declared size({0}) is larger than buffer({1})")]
62 StapASizeLargerThanBuffer(usize, usize),
63 #[error("nalu type {0} is currently not handled")]
64 NaluTypeIsNotHandled(u8),
65 #[error("{0}")]
66 Util(#[from] util::Error),
67
68 #[error("{0}")]
69 Other(String),
70}
71
72impl From<Error> for util::Error {
73 fn from(e: Error) -> Self {
74 util::Error::from_std(e)
75 }
76}
77
78impl PartialEq<util::Error> for Error {
79 fn eq(&self, other: &util::Error) -> bool {
80 if let Some(down) = other.downcast_ref::<Error>() {
81 self == down
82 } else {
83 false
84 }
85 }
86}