Skip to main content

str0m/packet/
error.rs

1use std::error::Error;
2use std::fmt;
3
4/// Errors arising in packet- and depacketization.
5#[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 {}