xref: /xiu/library/codec/h264/src/errors.rs (revision 69de9bbd)
1ccd9a1faSHarlan use bytesio::bits_errors::BitError;
2ccd9a1faSHarlan use failure::{Backtrace, Fail};
3ccd9a1faSHarlan use std::fmt;
4ccd9a1faSHarlan 
5ccd9a1faSHarlan #[derive(Debug, Fail)]
6ccd9a1faSHarlan pub enum H264ErrorValue {
7*69de9bbdSHarlanC     #[fail(display = "bit error")]
8ccd9a1faSHarlan     BitError(BitError),
9ccd9a1faSHarlan }
10ccd9a1faSHarlan #[derive(Debug)]
11ccd9a1faSHarlan pub struct H264Error {
12ccd9a1faSHarlan     pub value: H264ErrorValue,
13ccd9a1faSHarlan }
14ccd9a1faSHarlan 
15ccd9a1faSHarlan impl From<BitError> for H264Error {
from(error: BitError) -> Self16ccd9a1faSHarlan     fn from(error: BitError) -> Self {
17ccd9a1faSHarlan         H264Error {
18ccd9a1faSHarlan             value: H264ErrorValue::BitError(error),
19ccd9a1faSHarlan         }
20ccd9a1faSHarlan     }
21ccd9a1faSHarlan }
22ccd9a1faSHarlan 
23ccd9a1faSHarlan impl fmt::Display for H264Error {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result24ccd9a1faSHarlan     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
25ccd9a1faSHarlan         fmt::Display::fmt(&self.value, f)
26ccd9a1faSHarlan     }
27ccd9a1faSHarlan }
28ccd9a1faSHarlan 
29ccd9a1faSHarlan impl Fail for H264Error {
cause(&self) -> Option<&dyn Fail>30ccd9a1faSHarlan     fn cause(&self) -> Option<&dyn Fail> {
31ccd9a1faSHarlan         self.value.cause()
32ccd9a1faSHarlan     }
33ccd9a1faSHarlan 
backtrace(&self) -> Option<&Backtrace>34ccd9a1faSHarlan     fn backtrace(&self) -> Option<&Backtrace> {
35ccd9a1faSHarlan         self.value.backtrace()
36ccd9a1faSHarlan     }
37ccd9a1faSHarlan }
38