| Some notes on the error handling introduced after 0.7.3 |
| |
| - there are four domains for errors: |
| - CORE: core GStreamer errors |
| - LIBRARY: supporting library errors |
| - RESOURCE: errors accessing resources (files, network, memory, ...) |
| - STREAM: errors in the data stream |
| - Each error in GStreamer or plug-ins can be put under one of these four. |
| - the enum is called Gst(Domain)Error and has GST_(DOMAIN)_ERROR_(CODE) members |
| (see GError API docs for rationale) |
| - each of the enums starts with _FAILED at 1 (with FAILED being the generic |
| error if none of the others applies) |
| - second in the enum is TOO_LAZY, which allows us to keep track of those errors |
| that we haven't categorized yet. This means they really should either move |
| to another one, or a new one ought to be created. |
| - each enum ends with NUM_ERRORS |
| |
| - elements call gst_element_error to signal an error: |
| gst_element_error (element, domain, code, message, debug); |
| With : |
| - element being the one signalling the error |
| - domain one of CORE, LIBRARY, RESOURCE, STREAM |
| - code one of the suffixes in the Gst(Domain)Error enum |
| - message is either NULL (to signal the standard error message for the |
| given domain and code), or a printf-like set with the format being |
| marked for translation. |
| The string should start with a capital and end in a period so it forms |
| a complete sentence. |
| The string can/should be shown to the user of an application. |
| - debug is either NULL or a non-translated debug string, which can be used |
| to diagnose errors after they've happened. |
| The string can be shown to the user when he asks for additional debug info. |
| A useful macro is GST_ERROR_SYSTEM, which prints out the system error |
| that explains the failure by using g_strerror. |
| |
| - Some example calls: |
| |
| gst_element_error (src, RESOURCE, OPEN_READ, |
| (_("Could not open file \"%s\" for reading"), src->filename), |
| GST_ERROR_SYSTEM); |
| |
| The message is specified since we have more information: |
| - the resource is a file |
| - we know the file name |
| |
| gst_element_error (element, CORE, NEGOTIATION, NULL, NULL); |
| |
| This is a simple negotiation error. The default message will be |
| signaled, telling the user that GStreamer had an internal error. |
| |
| gst_element_error (ebml, RESOURCE, READ, NULL, |
| ("Read error at position %llu (0x%llx)", |
| pos, pos)); |
| |
| The plugin asked to read on the underlying resource (using bytestream), |
| but failed. The user will get a generic read error. The debug info |
| will contain the exact position in the stream at which the read error |
| occured. |
| |