From: Mark Nauwelaerts Date: Wed, 22 Aug 2007 08:22:50 +0000 (+0000) Subject: sys/v4l2/v4l2src_calls.c: Handle optional v4l2 ioctls gracefully. X-Git-Tag: RELEASE-0_10_7~319 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=09a56877059b71658a861bb462eaeaa784aae1e1;p=platform%2Fupstream%2Fgst-plugins-good.git sys/v4l2/v4l2src_calls.c: Handle optional v4l2 ioctls gracefully. Original commit message from CVS: patch by: Mark Nauwelaerts * sys/v4l2/v4l2src_calls.c: Handle optional v4l2 ioctls gracefully. --- diff --git a/ChangeLog b/ChangeLog index 7a20d6b..0ba542e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-08-22 Stefan Kost + + patch by: Mark Nauwelaerts + + * sys/v4l2/v4l2src_calls.c: + Handle optional v4l2 ioctls gracefully. + 2007-08-20 Wim Taymans * gst/rtp/Makefile.am: diff --git a/common b/common index 9c7f1a6..cd25ca7 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 9c7f1a63dfed1b2770b5fdaa16e0ae114b2177cf +Subproject commit cd25ca736bc2446800de2180ad71fc1da858d324 diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c index 87f2234..0006f0e 100644 --- a/sys/v4l2/v4l2src_calls.c +++ b/sys/v4l2/v4l2src_calls.c @@ -892,21 +892,28 @@ gst_v4l2src_set_capture (GstV4l2Src * v4l2src, guint32 pixelformat, memset (&stream, 0x00, sizeof (struct v4l2_streamparm)); stream.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - if (ioctl (fd, VIDIOC_G_PARM, &stream) < 0) - goto get_parm_failed; + if (ioctl (fd, VIDIOC_G_PARM, &stream) < 0) { + GST_ELEMENT_WARNING (v4l2src, RESOURCE, SETTINGS, + (_("Could not get parameters on device '%s'"), + v4l2src->v4l2object->videodev), GST_ERROR_SYSTEM); + } else { /* seems no point in SET, if can't get GET */ + /* Note: V4L2 gives us the frame interval, we need the frame rate */ + stream.parm.capture.timeperframe.numerator = fps_d; + stream.parm.capture.timeperframe.denominator = fps_n; - /* Note: V4L2 gives us the frame interval, we need the frame rate */ - stream.parm.capture.timeperframe.numerator = fps_d; - stream.parm.capture.timeperframe.denominator = fps_n; + if (ioctl (fd, VIDIOC_S_PARM, &stream) < 0) { + GST_ELEMENT_WARNING (v4l2src, RESOURCE, SETTINGS, + (_("Could not set parameters on device '%s'"), + v4l2src->v4l2object->videodev), GST_ERROR_SYSTEM); - if (ioctl (fd, VIDIOC_S_PARM, &stream) < 0) - goto set_parm_failed; + /* FIXME: better test for fraction equality */ + if (stream.parm.capture.timeperframe.numerator != fps_d + || stream.parm.capture.timeperframe.denominator != fps_n) + goto invalid_framerate; + } + } - /* FIXME: better test for fraction equality */ - if (stream.parm.capture.timeperframe.numerator != fps_d - || stream.parm.capture.timeperframe.denominator != fps_n) - goto invalid_framerate; return TRUE; @@ -948,20 +955,6 @@ invalid_pixelformat: GST_FOURCC_ARGS (format.fmt.pix.pixelformat))); return FALSE; } -get_parm_failed: - { - GST_ELEMENT_ERROR (v4l2src, RESOURCE, SETTINGS, - (_("Could not get parameters on device '%s'"), - v4l2src->v4l2object->videodev), GST_ERROR_SYSTEM); - return FALSE; - } -set_parm_failed: - { - GST_ELEMENT_ERROR (v4l2src, RESOURCE, SETTINGS, - (_("Could not set parameters on device '%s'"), - v4l2src->v4l2object->videodev), GST_ERROR_SYSTEM); - return FALSE; - } invalid_framerate: { GST_ELEMENT_ERROR (v4l2src, RESOURCE, SETTINGS,