1use std::error::Error;
2use std::fmt;
3
4#[derive(Debug, PartialEq, Eq)]
6#[allow(missing_docs)]
7pub enum PacketError {
8 ErrShortPacket,
9 ErrTooManySpatialLayers,
10 ErrTooManyPDiff,
11 ErrH265CorruptedPacket,
12 ErrInvalidH265PacketType,
13 ErrH265PACIPHESTooLong,
14 StapASizeLargerThanBuffer(usize, usize),
15 NaluTypeIsNotHandled(u8),
16 ErrVP9CorruptedPacket,
17 ErrAv1CorruptedPacket,
18}
19
20impl fmt::Display for PacketError {
21 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
22 match self {
23 PacketError::ErrShortPacket => write!(f, "Packet is too short"),
24 PacketError::ErrTooManySpatialLayers => write!(f, "Too many spatial layers"),
25 PacketError::ErrTooManyPDiff => write!(f, "Too many P-Diff"),
26 PacketError::ErrH265CorruptedPacket => write!(f, "H265 corrupted packet"),
27 PacketError::ErrInvalidH265PacketType => write!(f, "H265 invalid packet type"),
28 PacketError::ErrH265PACIPHESTooLong => {
29 write!(f, "H265 PACI PHES field exceeds maximum size of 31 bytes")
30 }
31 PacketError::StapASizeLargerThanBuffer(size, buffer) => write!(
32 f,
33 "H264 StapA size larger than buffer: {} > {}",
34 size, buffer
35 ),
36 PacketError::NaluTypeIsNotHandled(nalu_type) => {
37 write!(f, "H264 NALU type is not handled: {}", nalu_type)
38 }
39 PacketError::ErrVP9CorruptedPacket => write!(f, "VP9 corrupted packet"),
40 PacketError::ErrAv1CorruptedPacket => write!(f, "AV1 corrupted packet"),
41 }
42 }
43}
44
45impl Error for PacketError {}