summaryrefslogtreecommitdiffstats
path: root/ext/raw1394/gstdv1394src.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/raw1394/gstdv1394src.c')
-rw-r--r--ext/raw1394/gstdv1394src.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/ext/raw1394/gstdv1394src.c b/ext/raw1394/gstdv1394src.c
index 4e1e2e58..d3942d6c 100644
--- a/ext/raw1394/gstdv1394src.c
+++ b/ext/raw1394/gstdv1394src.c
@@ -667,8 +667,14 @@ gst_dv1394src_start (GstBaseSrc * bsrc)
src->handle = raw1394_new_handle ();
- if (!src->handle)
- goto no_handle;
+ if (!src->handle) {
+ if (errno == EACCES)
+ goto permission_denied;
+ else if (errno == ENOENT)
+ goto not_found;
+ else
+ goto no_handle;
+ }
raw1394_set_userdata (src->handle, src);
@@ -708,10 +714,20 @@ socket_pair:
GST_ERROR_SYSTEM);
return FALSE;
}
+permission_denied:
+ {
+ GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), GST_ERROR_SYSTEM);
+ return FALSE;
+ }
+not_found:
+ {
+ GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL), GST_ERROR_SYSTEM);
+ return FALSE;
+ }
no_handle:
{
- GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL),
- ("can't get raw1394 handle"));
+ GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL),
+ ("can't get raw1394 handle (%s)", g_strerror (errno)));
return FALSE;
}
no_ports: