Skip to main content

oximedia_codec/
error.rs

1//! Codec-specific error types.
2
3use thiserror::Error;
4
5/// Codec-specific errors.
6#[derive(Debug, Error)]
7pub enum CodecError {
8    /// Invalid bitstream data.
9    #[error("Invalid bitstream: {0}")]
10    InvalidBitstream(String),
11
12    /// Unsupported codec feature.
13    #[error("Unsupported feature: {0}")]
14    UnsupportedFeature(String),
15
16    /// Decoder needs more data.
17    #[error("Need more data")]
18    NeedMoreData,
19
20    /// Encoder buffer too small.
21    #[error("Buffer too small: need {needed}, have {have}")]
22    BufferTooSmall {
23        /// Required size.
24        needed: usize,
25        /// Available size.
26        have: usize,
27    },
28
29    /// Invalid parameter.
30    #[error("Invalid parameter: {0}")]
31    InvalidParameter(String),
32
33    /// Internal codec error.
34    #[error("Internal error: {0}")]
35    Internal(String),
36
37    /// End of stream.
38    #[error("End of stream")]
39    Eof,
40
41    /// Decoder error.
42    #[error("Decoder error: {0}")]
43    DecoderError(String),
44
45    /// I/O error.
46    #[error("I/O error: {0}")]
47    Io(#[from] std::io::Error),
48
49    /// Core error.
50    #[error("Core error: {0}")]
51    Core(#[from] oximedia_core::OxiError),
52
53    /// Invalid data.
54    #[error("Invalid data: {0}")]
55    InvalidData(String),
56}
57
58/// Result type for codec operations.
59pub type CodecResult<T> = Result<T, CodecError>;