xref: /webrtc/rtp/src/error.rs (revision ffe74184)
1 use thiserror::Error;
2 
3 pub type Result<T> = std::result::Result<T, Error>;
4 
5 #[derive(Error, Debug, PartialEq)]
6 #[non_exhaustive]
7 pub 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("extension_payload must be in 32-bit words")]
49     HeaderExtensionPayloadNot32BitWords,
50     #[error("audio level overflow")]
51     AudioLevelOverflow,
52     #[error("payload is not large enough")]
53     PayloadIsNotLargeEnough,
54     #[error("STAP-A declared size({0}) is larger than buffer({1})")]
55     StapASizeLargerThanBuffer(usize, usize),
56     #[error("nalu type {0} is currently not handled")]
57     NaluTypeIsNotHandled(u8),
58     #[error("{0}")]
59     Util(#[from] util::Error),
60 
61     #[error("{0}")]
62     Other(String),
63 }
64 
65 impl From<Error> for util::Error {
from(e: Error) -> Self66     fn from(e: Error) -> Self {
67         util::Error::from_std(e)
68     }
69 }
70 
71 impl PartialEq<util::Error> for Error {
eq(&self, other: &util::Error) -> bool72     fn eq(&self, other: &util::Error) -> bool {
73         if let Some(down) = other.downcast_ref::<Error>() {
74             self == down
75         } else {
76             false
77         }
78     }
79 }
80