1use std::fmt;
2
3#[derive(Debug)]
4pub enum CameraError {
5 InitializationError(String),
6 PermissionDenied(String),
7 CaptureError(String),
8 ControlError(String),
9 StreamError(String),
10 UnsupportedOperation(String),
11 #[cfg(feature = "recording")]
12 EncodingError(String),
13 #[cfg(feature = "recording")]
14 MuxingError(String),
15 #[cfg(feature = "recording")]
16 IoError(String),
17 #[cfg(feature = "audio")]
18 AudioError(String),
19}
20
21impl fmt::Display for CameraError {
22 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
23 match self {
24 CameraError::InitializationError(msg) => {
25 write!(f, "Camera initialization error: {}", msg)
26 }
27 CameraError::PermissionDenied(msg) => write!(f, "Permission denied error: {}", msg),
28 CameraError::CaptureError(msg) => write!(f, "Capture error: {}", msg),
29 CameraError::ControlError(msg) => write!(f, "Camera control error: {}", msg),
30 CameraError::StreamError(msg) => write!(f, "Stream error: {}", msg),
31 CameraError::UnsupportedOperation(msg) => write!(f, "Unsupported operation: {}", msg),
32 #[cfg(feature = "recording")]
33 CameraError::EncodingError(msg) => write!(f, "Encoding error: {}", msg),
34 #[cfg(feature = "recording")]
35 CameraError::MuxingError(msg) => write!(f, "Muxing error: {}", msg),
36 #[cfg(feature = "recording")]
37 CameraError::IoError(msg) => write!(f, "IO error: {}", msg),
38 #[cfg(feature = "audio")]
39 CameraError::AudioError(msg) => write!(f, "Audio error: {}", msg),
40 }
41 }
42}
43
44impl std::error::Error for CameraError {}