1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use thiserror::Error as ThisError;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(ThisError, Debug)]
pub enum Error {
#[error(transparent)]
Parse(#[from] ParseError),
#[cfg(feature = "io-std")]
#[error(transparent)]
Io(#[from] std::io::Error),
#[error("data size is too long: {0}")]
DataSize(usize),
}
#[derive(ThisError, Debug, Eq, PartialEq)]
pub enum ParseError {
#[error("invalid header signature: 0x{0:X}, 0x{1:X}, 0x{2:X}")]
HeaderSignature(u8, u8, u8),
#[error("invalid reserved type flags format: 0x{0:X}")]
HeaderTypeFlagsReserved(u8),
#[error("invalid sound format: 0x{0:X}")]
SoundFormat(u8),
#[error("invalid sound rate: 0x{0:X}")]
SoundRate(u8),
#[error("invalid sound size: 0x{0:X}")]
SoundSize(u8),
#[error("invalid sound type: 0x{0:X}")]
SoundType(u8),
#[error("invalid video frame type: 0x{0:X}")]
VideoFrameType(u8),
#[error("invalid video codec id: 0x{0:X}")]
VideoCodecId(u8),
#[error("invalid seek flag: 0x{0:X}")]
SeekFlag(u8),
}