summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2004-01-18 21:46:58 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2004-01-18 21:46:58 +0000
commit3b0cf935f687c359319104d7b0dd7d73c90da6a9 (patch)
treefc4cb9722017426795998bce5cb783e6eaae0365 /sys
parent272db0c22e45b45e88f11a52b793bab588a02534 (diff)
use new error signal and classification
Original commit message from CVS: use new error signal and classification
Diffstat (limited to 'sys')
-rw-r--r--sys/oss/gstosselement.c38
-rw-r--r--sys/oss/gstosselement.h5
-rw-r--r--sys/oss/gstosssink.c6
-rw-r--r--sys/oss/gstosssrc.c8
-rw-r--r--sys/v4l2/gstv4l2src.c2
-rw-r--r--sys/v4l2/v4l2src_calls.c56
6 files changed, 61 insertions, 54 deletions
diff --git a/sys/oss/gstosselement.c b/sys/oss/gstosselement.c
index 756a893c..c2774856 100644
--- a/sys/oss/gstosselement.c
+++ b/sys/oss/gstosselement.c
@@ -24,6 +24,7 @@
#include "config.h"
#endif
+#include "gst-libs/gst/gst-i18n-plugin.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
@@ -679,37 +680,32 @@ gst_osselement_open_audio (GstOssElement *oss)
if (oss->fd < 0) {
switch (errno) {
case EBUSY:
- gst_element_error (GST_ELEMENT (oss),
- "osselement: Unable to open %s (in use ?)",
- oss->device);
- break;
- case EISDIR:
- gst_element_error (GST_ELEMENT (oss),
- "osselement: Device %s is a directory",
- oss->device);
+ gst_element_error (oss, RESOURCE, BUSY,
+ (_("OSS device %s is already in use by another program."), oss->device), NULL);
break;
case EACCES:
case ETXTBSY:
- gst_element_error (GST_ELEMENT (oss),
- "osselement: Cannot access %s, check permissions",
- oss->device);
+ if (mode == GST_OSSELEMENT_WRITE)
+ gst_element_error (oss, RESOURCE, OPEN_WRITE,
+ (_("Could not access device %s, check it's permissions"), oss->device), GST_ERROR_SYSTEM);
+ else
+ gst_element_error (oss, RESOURCE, OPEN_READ,
+ (_("Could not access device %s, check it's permissions"), oss->device), GST_ERROR_SYSTEM);
break;
case ENXIO:
case ENODEV:
case ENOENT:
- gst_element_error (GST_ELEMENT (oss),
- "osselement: Cannot access %s, does it exist ?",
- oss->device);
+ gst_element_error (oss, RESOURCE, NOT_FOUND,
+ (_("Device %s does not exist"), oss->device), GST_ERROR_SYSTEM);
break;
- case EROFS:
- gst_element_error (GST_ELEMENT (oss),
- "osselement: Cannot access %s, read-only filesystem ?",
- oss->device);
default:
/* FIXME: strerror is not threadsafe */
- gst_element_error (GST_ELEMENT (oss),
- "osselement: Cannot open %s, generic error: %s",
- oss->device, strerror (errno));
+ if (mode == GST_OSSELEMENT_WRITE)
+ gst_element_error (oss, RESOURCE, OPEN_WRITE,
+ (_("Could not open device \"%s\" for writing"), oss->device), GST_ERROR_SYSTEM);
+ else
+ gst_element_error (oss, RESOURCE, OPEN_READ,
+ (_("Could not open device \"%s\" for reading"), oss->device), GST_ERROR_SYSTEM);
break;
}
return FALSE;
diff --git a/sys/oss/gstosselement.h b/sys/oss/gstosselement.h
index 895f2059..86659d59 100644
--- a/sys/oss/gstosselement.h
+++ b/sys/oss/gstosselement.h
@@ -46,6 +46,11 @@ G_BEGIN_DECLS
typedef struct _GstOssElement GstOssElement;
typedef struct _GstOssElementClass GstOssElementClass;
+/* debugging category */
+GST_DEBUG_CATEGORY_EXTERN (oss_debug);
+//#define GST_CAT_DEFAULT oss_debug
+
+
typedef enum {
GST_OSSELEMENT_READ,
GST_OSSELEMENT_WRITE,
diff --git a/sys/oss/gstosssink.c b/sys/oss/gstosssink.c
index 3c21eca5..31a41653 100644
--- a/sys/oss/gstosssink.c
+++ b/sys/oss/gstosssink.c
@@ -103,7 +103,7 @@ static GstElementClass *parent_class = NULL;
static guint gst_osssink_signals[LAST_SIGNAL] = { 0 };
GType
-gst_osssink_get_type (void)
+gst_osssink_get_type (void)
{
static GType osssink_type = 0;
@@ -120,6 +120,7 @@ gst_osssink_get_type (void)
(GInstanceInitFunc)gst_osssink_init,
};
osssink_type = g_type_register_static (GST_TYPE_OSSELEMENT, "GstOssSink", &osssink_info, 0);
+ //GST_DEBUG_CATEGORY_INIT (oss_debug, "oss", 0, "OSS element");
}
return osssink_type;
@@ -202,6 +203,7 @@ gst_osssink_init (GstOssSink *osssink)
gst_pad_set_chain_function (osssink->sinkpad, gst_osssink_chain);
+ GST_DEBUG ("initializing osssink");
osssink->bufsize = 4096;
osssink->chunk_size = 4096;
osssink->mute = FALSE;
@@ -349,7 +351,7 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
if (!GST_OSSELEMENT (osssink)->bps) {
gst_buffer_unref (buf);
- gst_element_error (GST_ELEMENT (osssink), "capsnego was never performed, unknown data type");
+ gst_element_error (osssink, CORE, NEGOTIATION, NULL, ("format wasn't negotiated before chain function"));
return;
}
diff --git a/sys/oss/gstosssrc.c b/sys/oss/gstosssrc.c
index 1edba80f..fbe04cc2 100644
--- a/sys/oss/gstosssrc.c
+++ b/sys/oss/gstosssrc.c
@@ -305,13 +305,14 @@ gst_osssrc_get (GstPad *pad)
/* nothing was negotiated, we can decide on a format */
if (!gst_osssrc_negotiate (pad)) {
gst_buffer_unref (buf);
- gst_element_error (GST_ELEMENT (src), "could not negotiate format");
+ gst_element_error (src, CORE, NEGOTIATION, NULL, NULL);
return GST_DATA (gst_event_new (GST_EVENT_INTERRUPT));
}
}
if (GST_OSSELEMENT (src)->bps == 0) {
gst_buffer_unref (buf);
- gst_element_error (GST_ELEMENT (src), "no format negotiated");
+ gst_element_error (src, CORE, NEGOTIATION, NULL,
+ ("format wasn't negotiated before chain function"));
return GST_DATA (gst_event_new (GST_EVENT_INTERRUPT));
}
@@ -319,8 +320,7 @@ gst_osssrc_get (GstPad *pad)
src->buffersize);
if (readbytes < 0) {
gst_buffer_unref (buf);
- gst_element_error (GST_ELEMENT (src), "error reading data (%s)",
- strerror (errno));
+ gst_element_error (src, RESOURCE, READ, NULL, GST_ERROR_SYSTEM);
return GST_DATA (gst_event_new (GST_EVENT_INTERRUPT));
}
diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c
index edce2091..d0b480f9 100644
--- a/sys/v4l2/gstv4l2src.c
+++ b/sys/v4l2/gstv4l2src.c
@@ -817,7 +817,7 @@ gst_v4l2src_get (GstPad *pad)
if (v4l2src->use_fixed_fps &&
(fps = gst_v4l2src_get_fps(v4l2src)) == 0) {
- gst_element_error (GST_ELEMENT (v4l2src), "Could not get frame rate for element.");
+ gst_element_error (v4l2src, RESOURCE, SETTINGS, NULL, ("could not get frame rate for element"));
return NULL;
}
diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c
index 3a55a231..ec7028c2 100644
--- a/sys/v4l2/v4l2src_calls.c
+++ b/sys/v4l2/v4l2src_calls.c
@@ -72,9 +72,9 @@ gst_v4l2src_fill_format_list (GstV4l2Src *v4l2src)
if (errno == EINVAL) {
break; /* end of enumeration */
} else {
- gst_element_error(GST_ELEMENT(v4l2src),
- "Failed to get no. %d in pixelformat enumeration for %s: %s",
- n, GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno));
+ gst_element_error (v4l2src, RESOURCE, SETTINGS, NULL,
+ ("failed to get number %d in pixelformat enumeration for %s: %s",
+ n, GST_V4L2ELEMENT(v4l2src)->device, g_strerror (errno)));
g_free (format);
return FALSE;
}
@@ -117,8 +117,9 @@ gst_v4l2src_queue_frame (GstV4l2Src *v4l2src,
GST_LOG_OBJECT (v4l2src, "queueing frame %u", i);
if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_QBUF, &v4l2src->pool->buffers[i].buffer) < 0) {
- gst_element_error(GST_ELEMENT(v4l2src), "Error queueing buffer %u on device %s: %s",
- i, GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno));
+ gst_element_error (v4l2src, RESOURCE, WRITE,
+ (_("Could not write to device \"%s\""), GST_V4L2ELEMENT(v4l2src)->device),
+ ("Error queueing buffer %u on device %s", i, g_strerror(errno)));
return FALSE;
}
@@ -141,8 +142,8 @@ gst_v4l2src_grab_frame (GstV4l2Src *v4l2src)
while (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_DQBUF, &buffer) < 0) {
/* if the sync() got interrupted, we can retry */
if (errno != EINTR) {
- gst_element_error(GST_ELEMENT(v4l2src), "Error syncing on a buffer on device %s: %s",
- GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno));
+ gst_element_error (v4l2src, RESOURCE, SYNC, NULL, ("could not sync on a buffer on device %s: %s",
+ GST_V4L2ELEMENT(v4l2src)->device, g_strerror (errno)));
return -1;
}
GST_DEBUG_OBJECT (v4l2src, "grab got interrupted");
@@ -169,9 +170,9 @@ gst_v4l2src_get_capture (GstV4l2Src *v4l2src)
v4l2src->format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_G_FMT, &v4l2src->format) < 0) {
- gst_element_error(GST_ELEMENT(v4l2src),
- "Failed to get pixel format for device %s: %s",
- GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno));
+ gst_element_error (v4l2src, RESOURCE, SETTINGS, NULL,
+ ("failed to get pixelformat for device %s: %s",
+ n, GST_V4L2ELEMENT(v4l2src)->device, g_strerror (errno)));
return FALSE;
}
@@ -205,10 +206,9 @@ gst_v4l2src_set_capture (GstV4l2Src *v4l2src,
v4l2src->format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_S_FMT, &v4l2src->format) < 0) {
- gst_element_error(GST_ELEMENT(v4l2src),
- "Failed to set pixel format to %s @ %dx%d for device %s: %s",
- fmt->description, width, height,
- GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno));
+ gst_element_error (v4l2src, RESOURCE, SETTINGS, NULL,
+ ("failed to set pixelformat to %s @ %dx%d for device %s: %s",
+ fmt->description, width, height, GST_V4L2ELEMENT(v4l2src)->device, g_strerror (errno)));
return FALSE;
}
@@ -245,14 +245,16 @@ gst_v4l2src_capture_init (GstV4l2Src *v4l2src)
v4l2src->breq.type = v4l2src->format.type;
v4l2src->breq.memory = V4L2_MEMORY_MMAP;
if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_REQBUFS, &v4l2src->breq) < 0) {
- gst_element_error(GST_ELEMENT(v4l2src), "Error requesting buffers (%d) for %s: %s",
- v4l2src->breq.count, GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno));
+ gst_element_error (v4l2src, RESOURCE, READ,
+ (_("Could not get buffers from device \"%s\""), GST_V4L2ELEMENT(v4l2src)->device),
+ ("error requesting %d buffers: %s", v4l2src->breq.count, g_strerror (errno)));
return FALSE;
}
if (v4l2src->breq.count < GST_V4L2_MIN_BUFFERS) {
- gst_element_error(GST_ELEMENT(v4l2src), "Too little buffers. We got %d, we want at least %d",
- v4l2src->breq.count, GST_V4L2_MIN_BUFFERS);
+ gst_element_error (v4l2src, RESOURCE, READ,
+ (_("Could not get enough buffers from device \"%s\""), GST_V4L2ELEMENT(v4l2src)->device),
+ ("we received %d, we want at least %d", v4l2src->breq.count, GST_V4L2_MIN_BUFFERS));
v4l2src->breq.count = buffers;
return FALSE;
}
@@ -278,16 +280,16 @@ gst_v4l2src_capture_init (GstV4l2Src *v4l2src)
buffer->buffer.index = n;
buffer->buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_QUERYBUF, &buffer->buffer) < 0) {
- gst_element_error(GST_ELEMENT(v4l2src), "Failed to get buffer (%d) properties: %s",
- n, g_strerror(errno));
+ gst_element_error (v4l2src, RESOURCE, READ, NULL,
+ ("Could not get buffer properties of buffer %d: %s", n, g_strerror (errno)));
gst_v4l2src_capture_deinit(v4l2src);
return FALSE;
}
buffer->start = mmap (0, buffer->buffer.length, PROT_READ|PROT_WRITE, MAP_SHARED,
GST_V4L2ELEMENT(v4l2src)->video_fd, buffer->buffer.m.offset);
if (buffer->start == MAP_FAILED) {
- gst_element_error(GST_ELEMENT(v4l2src), "Error mapping video buffer (%d) on device %s: %s",
- n, GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno));
+ gst_element_error (v4l2src, RESOURCE, READ, NULL,
+ ("Could not mmap video buffer %d: %s", n, g_strerror (errno)));
buffer->start = 0;
gst_v4l2src_capture_deinit (v4l2src);
return FALSE;
@@ -326,8 +328,9 @@ gst_v4l2src_capture_start (GstV4l2Src *v4l2src)
v4l2src->quit = FALSE;
if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_STREAMON, &type) < 0) {
- gst_element_error(GST_ELEMENT(v4l2src), "Error starting streaming capture for %s: %s",
- GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno));
+ gst_element_error (v4l2src, RESOURCE, OPEN_READ, NULL,
+ ("Error starting streaming capture from device %s: %s",
+ GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno)));
return FALSE;
}
@@ -353,8 +356,9 @@ gst_v4l2src_capture_stop (GstV4l2Src *v4l2src)
/* we actually need to sync on all queued buffers but not
* on the non-queued ones */
if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_STREAMOFF, &type) < 0) {
- gst_element_error (GST_ELEMENT(v4l2src), "Error stopping streaming capture for %s: %s",
- GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno));
+ gst_element_error (v4l2src, RESOURCE, CLOSE, NULL,
+ ("Error stopping streaming capture from device %s: %s",
+ GST_V4L2ELEMENT(v4l2src)->device, g_strerror (errno)));
return FALSE;
}