1 | /* GStreamer |
2 | * Copyright (C) 2004 Thomas Vander Stichele <thomas at apestaart dot org> |
3 | * |
4 | * This library is free software; you can redistribute it and/or |
5 | * modify it under the terms of the GNU Library General Public |
6 | * License as published by the Free Software Foundation; either |
7 | * version 2 of the License, or (at your option) any later version. |
8 | * |
9 | * This library is distributed in the hope that it will be useful, |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | * Library General Public License for more details. |
13 | * |
14 | * You should have received a copy of the GNU Library General Public |
15 | * License along with this library; if not, write to the |
16 | * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, |
17 | * Boston, MA 02110-1301, USA. |
18 | */ |
19 | |
20 | #ifndef __GST_ERROR_H__ |
21 | #define __GST_ERROR_H__ |
22 | |
23 | #include <glib.h> |
24 | #include <glib-object.h> |
25 | #include <errno.h> |
26 | |
27 | G_BEGIN_DECLS |
28 | /* |
29 | * we define FIXME error domains: |
30 | * GST_CORE_ERROR |
31 | * GST_LIBRARY_ERROR |
32 | * GST_RESOURCE_ERROR |
33 | * GST_STREAM_ERROR |
34 | * |
35 | * Check GError API docs for rationale for naming. |
36 | */ |
37 | /** |
38 | * GstCoreError: |
39 | * @GST_CORE_ERROR_FAILED: a general error which doesn't fit in any other |
40 | * category. Make sure you add a custom message to the error call. |
41 | * @GST_CORE_ERROR_TOO_LAZY: do not use this except as a placeholder for |
42 | * deciding where to go while developing code. |
43 | * @GST_CORE_ERROR_NOT_IMPLEMENTED: use this when you do not want to implement |
44 | * this functionality yet. |
45 | * @GST_CORE_ERROR_STATE_CHANGE: used for state change errors. |
46 | * @GST_CORE_ERROR_PAD: used for pad-related errors. |
47 | * @GST_CORE_ERROR_THREAD: used for thread-related errors. |
48 | * @GST_CORE_ERROR_NEGOTIATION: used for negotiation-related errors. |
49 | * @GST_CORE_ERROR_EVENT: used for event-related errors. |
50 | * @GST_CORE_ERROR_SEEK: used for seek-related errors. |
51 | * @GST_CORE_ERROR_CAPS: used for caps-related errors. |
52 | * @GST_CORE_ERROR_TAG: used for negotiation-related errors. |
53 | * @GST_CORE_ERROR_MISSING_PLUGIN: used if a plugin is missing. |
54 | * @GST_CORE_ERROR_CLOCK: used for clock related errors. |
55 | * @GST_CORE_ERROR_DISABLED: used if functionality has been disabled at |
56 | * compile time. |
57 | * @GST_CORE_ERROR_NUM_ERRORS: the number of core error types. |
58 | * |
59 | * Core errors are errors inside the core GStreamer library. |
60 | */ |
61 | /* FIXME: should we divide in numerical blocks so we can easily add |
62 | for example PAD errors later ? */ |
63 | typedef enum |
64 | { |
65 | GST_CORE_ERROR_FAILED = 1, |
66 | GST_CORE_ERROR_TOO_LAZY, |
67 | GST_CORE_ERROR_NOT_IMPLEMENTED, |
68 | GST_CORE_ERROR_STATE_CHANGE, |
69 | GST_CORE_ERROR_PAD, |
70 | GST_CORE_ERROR_THREAD, |
71 | GST_CORE_ERROR_NEGOTIATION, |
72 | GST_CORE_ERROR_EVENT, |
73 | GST_CORE_ERROR_SEEK, |
74 | GST_CORE_ERROR_CAPS, |
75 | GST_CORE_ERROR_TAG, |
76 | GST_CORE_ERROR_MISSING_PLUGIN, |
77 | GST_CORE_ERROR_CLOCK, |
78 | GST_CORE_ERROR_DISABLED, |
79 | GST_CORE_ERROR_NUM_ERRORS |
80 | } GstCoreError; |
81 | |
82 | /** |
83 | * GstLibraryError: |
84 | * @GST_LIBRARY_ERROR_FAILED: a general error which doesn't fit in any other |
85 | * category. Make sure you add a custom message to the error call. |
86 | * @GST_LIBRARY_ERROR_TOO_LAZY: do not use this except as a placeholder for |
87 | * deciding where to go while developing code. |
88 | * @GST_LIBRARY_ERROR_INIT: used when the library could not be opened. |
89 | * @GST_LIBRARY_ERROR_SHUTDOWN: used when the library could not be closed. |
90 | * @GST_LIBRARY_ERROR_SETTINGS: used when the library doesn't accept settings. |
91 | * @GST_LIBRARY_ERROR_ENCODE: used when the library generated an encoding error. |
92 | * @GST_LIBRARY_ERROR_NUM_ERRORS: the number of library error types. |
93 | * |
94 | * Library errors are for errors from the library being used by elements |
95 | * (initializing, finalizing, settings, ...) |
96 | */ |
97 | typedef enum |
98 | { |
99 | GST_LIBRARY_ERROR_FAILED = 1, |
100 | GST_LIBRARY_ERROR_TOO_LAZY, |
101 | GST_LIBRARY_ERROR_INIT, |
102 | GST_LIBRARY_ERROR_SHUTDOWN, |
103 | GST_LIBRARY_ERROR_SETTINGS, |
104 | GST_LIBRARY_ERROR_ENCODE, |
105 | GST_LIBRARY_ERROR_NUM_ERRORS |
106 | } GstLibraryError; |
107 | |
108 | /** |
109 | * GstResourceError: |
110 | * @GST_RESOURCE_ERROR_FAILED: a general error which doesn't fit in any other |
111 | * category. Make sure you add a custom message to the error call. |
112 | * @GST_RESOURCE_ERROR_TOO_LAZY: do not use this except as a placeholder for |
113 | * deciding where to go while developing code. |
114 | * @GST_RESOURCE_ERROR_NOT_FOUND: used when the resource could not be found. |
115 | * @GST_RESOURCE_ERROR_BUSY: used when resource is busy. |
116 | * @GST_RESOURCE_ERROR_OPEN_READ: used when resource fails to open for reading. |
117 | * @GST_RESOURCE_ERROR_OPEN_WRITE: used when resource fails to open for writing. |
118 | * @GST_RESOURCE_ERROR_OPEN_READ_WRITE: used when resource cannot be opened for |
119 | * both reading and writing, or either (but unspecified which). |
120 | * @GST_RESOURCE_ERROR_CLOSE: used when the resource can't be closed. |
121 | * @GST_RESOURCE_ERROR_READ: used when the resource can't be read from. |
122 | * @GST_RESOURCE_ERROR_WRITE: used when the resource can't be written to. |
123 | * @GST_RESOURCE_ERROR_SEEK: used when a seek on the resource fails. |
124 | * @GST_RESOURCE_ERROR_SYNC: used when a synchronize on the resource fails. |
125 | * @GST_RESOURCE_ERROR_SETTINGS: used when settings can't be manipulated on. |
126 | * @GST_RESOURCE_ERROR_NO_SPACE_LEFT: used when the resource has no space left. |
127 | * @GST_RESOURCE_ERROR_NOT_AUTHORIZED: used when the resource can't be opened |
128 | * due to missing authorization. |
129 | * (Since 1.2.4) |
130 | * @GST_RESOURCE_ERROR_NUM_ERRORS: the number of resource error types. |
131 | * |
132 | * Resource errors are for any resource used by an element: |
133 | * memory, files, network connections, process space, ... |
134 | * They're typically used by source and sink elements. |
135 | */ |
136 | typedef enum |
137 | { |
138 | GST_RESOURCE_ERROR_FAILED = 1, |
139 | GST_RESOURCE_ERROR_TOO_LAZY, |
140 | GST_RESOURCE_ERROR_NOT_FOUND, |
141 | GST_RESOURCE_ERROR_BUSY, |
142 | GST_RESOURCE_ERROR_OPEN_READ, |
143 | GST_RESOURCE_ERROR_OPEN_WRITE, |
144 | GST_RESOURCE_ERROR_OPEN_READ_WRITE, |
145 | GST_RESOURCE_ERROR_CLOSE, |
146 | GST_RESOURCE_ERROR_READ, |
147 | GST_RESOURCE_ERROR_WRITE, |
148 | GST_RESOURCE_ERROR_SEEK, |
149 | GST_RESOURCE_ERROR_SYNC, |
150 | GST_RESOURCE_ERROR_SETTINGS, |
151 | GST_RESOURCE_ERROR_NO_SPACE_LEFT, |
152 | GST_RESOURCE_ERROR_NOT_AUTHORIZED, |
153 | GST_RESOURCE_ERROR_NUM_ERRORS |
154 | } GstResourceError; |
155 | |
156 | /** |
157 | * GstStreamError: |
158 | * @GST_STREAM_ERROR_FAILED: a general error which doesn't fit in any other |
159 | * category. Make sure you add a custom message to the error call. |
160 | * @GST_STREAM_ERROR_TOO_LAZY: do not use this except as a placeholder for |
161 | * deciding where to go while developing code. |
162 | * @GST_STREAM_ERROR_NOT_IMPLEMENTED: use this when you do not want to implement |
163 | * this functionality yet. |
164 | * @GST_STREAM_ERROR_TYPE_NOT_FOUND: used when the element doesn't know the |
165 | * stream's type. |
166 | * @GST_STREAM_ERROR_WRONG_TYPE: used when the element doesn't handle this type |
167 | * of stream. |
168 | * @GST_STREAM_ERROR_CODEC_NOT_FOUND: used when there's no codec to handle the |
169 | * stream's type. |
170 | * @GST_STREAM_ERROR_DECODE: used when decoding fails. |
171 | * @GST_STREAM_ERROR_ENCODE: used when encoding fails. |
172 | * @GST_STREAM_ERROR_DEMUX: used when demuxing fails. |
173 | * @GST_STREAM_ERROR_MUX: used when muxing fails. |
174 | * @GST_STREAM_ERROR_FORMAT: used when the stream is of the wrong format |
175 | * (for example, wrong caps). |
176 | * @GST_STREAM_ERROR_DECRYPT: used when the stream is encrypted and can't be |
177 | * decrypted because this is not supported by the element. |
178 | * @GST_STREAM_ERROR_DECRYPT_NOKEY: used when the stream is encrypted and |
179 | * can't be decrypted because no suitable key is available. |
180 | * @GST_STREAM_ERROR_NUM_ERRORS: the number of stream error types. |
181 | * |
182 | * Stream errors are for anything related to the stream being processed: |
183 | * format errors, media type errors, ... |
184 | * They're typically used by decoders, demuxers, converters, ... |
185 | */ |
186 | typedef enum |
187 | { |
188 | GST_STREAM_ERROR_FAILED = 1, |
189 | GST_STREAM_ERROR_TOO_LAZY, |
190 | GST_STREAM_ERROR_NOT_IMPLEMENTED, |
191 | GST_STREAM_ERROR_TYPE_NOT_FOUND, |
192 | GST_STREAM_ERROR_WRONG_TYPE, |
193 | GST_STREAM_ERROR_CODEC_NOT_FOUND, |
194 | GST_STREAM_ERROR_DECODE, |
195 | GST_STREAM_ERROR_ENCODE, |
196 | GST_STREAM_ERROR_DEMUX, |
197 | GST_STREAM_ERROR_MUX, |
198 | GST_STREAM_ERROR_FORMAT, |
199 | GST_STREAM_ERROR_DECRYPT, |
200 | GST_STREAM_ERROR_DECRYPT_NOKEY, |
201 | GST_STREAM_ERROR_NUM_ERRORS |
202 | } GstStreamError; |
203 | |
204 | /** |
205 | * GST_LIBRARY_ERROR: |
206 | * |
207 | * Error domain for library loading. Errors in this domain will |
208 | * be from the #GstLibraryError enumeration. |
209 | * See #GError for information on error domains. |
210 | */ |
211 | #define GST_LIBRARY_ERROR gst_library_error_quark () |
212 | /** |
213 | * GST_RESOURCE_ERROR: |
214 | * |
215 | * Error domain for resource handling. Errors in this domain will |
216 | * be from the #GstResourceError enumeration. |
217 | * See #GError for information on error domains. |
218 | */ |
219 | #define GST_RESOURCE_ERROR gst_resource_error_quark () |
220 | /** |
221 | * GST_CORE_ERROR: |
222 | * |
223 | * Error domain for core system. Errors in this domain will |
224 | * be from the #GstCoreError enumeration. |
225 | * See #GError for information on error domains. |
226 | */ |
227 | #define GST_CORE_ERROR gst_core_error_quark () |
228 | /** |
229 | * GST_STREAM_ERROR: |
230 | * |
231 | * Error domain for media stream processing. Errors in this domain will |
232 | * be from the #GstStreamError enumeration. |
233 | * See #GError for information on error domains. |
234 | */ |
235 | #define GST_STREAM_ERROR gst_stream_error_quark () |
236 | |
237 | /** |
238 | * GST_ERROR_SYSTEM: (skip): |
239 | * |
240 | * Builds a string using errno describing the previously failed system |
241 | * call. To be used as the debug argument in #GST_ELEMENT_ERROR. |
242 | */ |
243 | #define GST_ERROR_SYSTEM ("system error: %s", g_strerror (errno)) |
244 | |
245 | GST_API |
246 | gchar *gst_error_get_message (GQuark domain, gint code); |
247 | |
248 | GST_API |
249 | GQuark gst_stream_error_quark (void); |
250 | |
251 | GST_API |
252 | GQuark gst_core_error_quark (void); |
253 | |
254 | GST_API |
255 | GQuark gst_resource_error_quark (void); |
256 | |
257 | GST_API |
258 | GQuark gst_library_error_quark (void); |
259 | |
260 | G_END_DECLS |
261 | #endif /* __GST_ERROR_H__ */ |
262 | |