1use thiserror::Error;
2
3#[cfg(all(target_os = "windows", feature = "dxgi-capture"))]
4use crate::elements::DxgiCaptureSourceError;
5#[cfg(feature = "ort")]
6use crate::elements::OrtDetectorError;
7use crate::elements::RtspSinkError;
8#[cfg(all(target_os = "windows", feature = "wasapi-capture"))]
9use crate::elements::WasapiCaptureSourceError;
10#[cfg(all(target_os = "windows", feature = "wasapi-renderer"))]
11use crate::elements::WasapiRendererError;
12#[cfg(feature = "webrtc")]
13use crate::elements::WebRtcError;
14#[cfg(all(target_os = "windows", feature = "d3d11"))]
15use crate::elements::{
16 D3d11DownloadError, D3d11NvencEncoderError, D3d11RendererError, D3d11TextLayerError,
17 D3d11UploadError, D3d11VideoCompositorError, D3d11vaDecoderError,
18};
19#[cfg(all(target_os = "windows", feature = "d3d12"))]
20use crate::elements::{D3d12RendererError, D3d12UploadError, D3d12vaDecoderError};
21use crate::{
22 elements::{
23 AppSourceError, AudioMixerError, AudioResamplerError, AudioVolumeError, FileDemuxError,
24 HlsMuxerError, Mp4MuxerError, PacerError, RtspSourceError, ScalerError,
25 SwAudioEncoderError, SwDecoderError, SwEncoderError, TestAudioSourceError,
26 TestVideoSourceError, VideoCompositorError, VideoSynchronizerError,
27 },
28 graph::GraphError,
29 log::LogInitError,
30 queue::QueueError,
31};
32
33#[derive(Debug, Error)]
43pub enum Error {
44 #[error(transparent)]
45 FileDemuxError(#[from] FileDemuxError),
46
47 #[error(transparent)]
48 AppSourceError(#[from] AppSourceError),
49
50 #[error(transparent)]
51 RtspSourceError(#[from] RtspSourceError),
52
53 #[error(transparent)]
54 TestVideoSourceError(#[from] TestVideoSourceError),
55
56 #[error(transparent)]
57 TestAudioSourceError(#[from] TestAudioSourceError),
58
59 #[error(transparent)]
60 SwDecoderError(#[from] SwDecoderError),
61
62 #[error(transparent)]
63 SwEncoderError(#[from] SwEncoderError),
64
65 #[error(transparent)]
66 PacerError(#[from] PacerError),
67
68 #[error(transparent)]
69 VideoSynchronizerError(#[from] VideoSynchronizerError),
70
71 #[error(transparent)]
72 SwAudioEncoderError(#[from] SwAudioEncoderError),
73
74 #[error(transparent)]
75 AudioResamplerError(#[from] AudioResamplerError),
76
77 #[error(transparent)]
78 AudioVolumeError(#[from] AudioVolumeError),
79
80 #[error(transparent)]
81 ScalerError(#[from] ScalerError),
82
83 #[error(transparent)]
84 QueueError(#[from] QueueError),
85
86 #[error(transparent)]
87 GraphError(#[from] GraphError),
88
89 #[error(transparent)]
90 LogInitError(#[from] LogInitError),
91
92 #[error(transparent)]
93 AudioMixerError(#[from] AudioMixerError),
94
95 #[error(transparent)]
96 VideoCompositorError(#[from] VideoCompositorError),
97
98 #[error(transparent)]
99 Mp4MuxerError(#[from] Mp4MuxerError),
100
101 #[error(transparent)]
102 HlsMuxerError(#[from] HlsMuxerError),
103
104 #[error(transparent)]
105 RtspSinkError(#[from] RtspSinkError),
106
107 #[cfg(all(target_os = "windows", feature = "d3d12"))]
108 #[error(transparent)]
109 D3d12RendererError(#[from] D3d12RendererError),
110
111 #[cfg(all(target_os = "windows", feature = "d3d12"))]
112 #[error(transparent)]
113 D3d12vaDecoderError(#[from] D3d12vaDecoderError),
114
115 #[cfg(all(target_os = "windows", feature = "d3d12"))]
116 #[error(transparent)]
117 D3d12UploadError(#[from] D3d12UploadError),
118
119 #[cfg(all(target_os = "windows", feature = "d3d11"))]
120 #[error(transparent)]
121 D3d11vaDecoderError(#[from] D3d11vaDecoderError),
122
123 #[cfg(all(target_os = "windows", feature = "d3d11"))]
124 #[error(transparent)]
125 D3d11UploadError(#[from] D3d11UploadError),
126
127 #[cfg(all(target_os = "windows", feature = "d3d11"))]
128 #[error(transparent)]
129 D3d11DownloadError(#[from] D3d11DownloadError),
130
131 #[cfg(all(target_os = "windows", feature = "d3d11"))]
132 #[error(transparent)]
133 D3d11NvencEncoderError(#[from] D3d11NvencEncoderError),
134
135 #[cfg(all(target_os = "windows", feature = "d3d11"))]
136 #[error(transparent)]
137 D3d11RendererError(#[from] D3d11RendererError),
138
139 #[cfg(all(target_os = "windows", feature = "d3d11"))]
140 #[error(transparent)]
141 D3d11VideoCompositorError(#[from] D3d11VideoCompositorError),
142
143 #[cfg(all(target_os = "windows", feature = "d3d11"))]
144 #[error(transparent)]
145 D3d11TextLayerError(#[from] D3d11TextLayerError),
146
147 #[cfg(all(target_os = "windows", feature = "dxgi-capture"))]
148 #[error(transparent)]
149 DxgiCaptureSourceError(#[from] DxgiCaptureSourceError),
150
151 #[cfg(all(target_os = "windows", feature = "wasapi-capture"))]
152 #[error(transparent)]
153 WasapiCaptureSourceError(#[from] WasapiCaptureSourceError),
154
155 #[cfg(all(target_os = "windows", feature = "wasapi-renderer"))]
156 #[error(transparent)]
157 WasapiRendererError(#[from] WasapiRendererError),
158
159 #[cfg(feature = "ort")]
160 #[error(transparent)]
161 OrtDetectorError(#[from] OrtDetectorError),
162
163 #[cfg(feature = "webrtc")]
164 #[error(transparent)]
165 WebRtcError(#[from] WebRtcError),
166
167 #[error("ffmpeg error: {0}")]
168 Ffmpeg(#[from] ffmpeg_next::Error),
169
170 #[error("{0}")]
171 Other(String),
172}
173
174pub type Result<T> = std::result::Result<T, Error>;