summaryrefslogtreecommitdiff
path: root/v4l2-apps/libv4l
diff options
context:
space:
mode:
authorhans@rhel5-devel.localdomain <hans@rhel5-devel.localdomain>2009-08-20 11:42:57 +0200
committerhans@rhel5-devel.localdomain <hans@rhel5-devel.localdomain>2009-08-20 11:42:57 +0200
commit0201b5f76e609d40a5ac955aab083854bf21d5b7 (patch)
treec3e0f2824a7214a7d4171ee460f568abf64fa19f /v4l2-apps/libv4l
parent2c3e261d9836c1dd03fd8ba7ed862016428c6ca0 (diff)
downloadmediapointer-dvb-s2-0201b5f76e609d40a5ac955aab083854bf21d5b7.tar.gz
mediapointer-dvb-s2-0201b5f76e609d40a5ac955aab083854bf21d5b7.tar.bz2
libv4l: make get / set control use libv4lconvert functions
From: Hans de Goede <hdegoede@redhat.com> libv4l: make get / set control use libv4lconvert functions Priority: normal Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'v4l2-apps/libv4l')
-rw-r--r--v4l2-apps/libv4l/libv4l2/libv4l2.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/v4l2-apps/libv4l/libv4l2/libv4l2.c b/v4l2-apps/libv4l/libv4l2/libv4l2.c
index 07bd9484e..c035ae533 100644
--- a/v4l2-apps/libv4l/libv4l2/libv4l2.c
+++ b/v4l2-apps/libv4l/libv4l2/libv4l2.c
@@ -1303,9 +1303,15 @@ int v4l2_set_control(int fd, int cid, int value)
{
struct v4l2_queryctrl qctrl = { .id = cid };
struct v4l2_control ctrl = { .id = cid };
- int result;
+ int index, result;
+
+ if ((index = v4l2_get_index(fd)) == -1) {
+ V4L2_LOG_ERR("v4l2_set_control called with invalid fd: %d\n", fd);
+ errno = EBADF;
+ return -1;
+ }
- if ((result = SYS_IOCTL(fd, VIDIOC_QUERYCTRL, &qctrl)))
+ if ((result = v4lconvert_vidioc_queryctrl(devices[index].convert, &qctrl)))
return result;
if (!(qctrl.flags & V4L2_CTRL_FLAG_DISABLED) &&
@@ -1316,7 +1322,7 @@ int v4l2_set_control(int fd, int cid, int value)
ctrl.value = (value * (qctrl.maximum - qctrl.minimum) + 32767) / 65535 +
qctrl.minimum;
- result = SYS_IOCTL(fd, VIDIOC_S_CTRL, &ctrl);
+ result = v4lconvert_vidioc_s_ctrl(devices[index].convert, &ctrl);
}
return result;
@@ -1326,14 +1332,21 @@ int v4l2_get_control(int fd, int cid)
{
struct v4l2_queryctrl qctrl = { .id = cid };
struct v4l2_control ctrl = { .id = cid };
+ int index;
+
+ if ((index = v4l2_get_index(fd)) == -1) {
+ V4L2_LOG_ERR("v4l2_set_control called with invalid fd: %d\n", fd);
+ errno = EBADF;
+ return -1;
+ }
- if (SYS_IOCTL(fd, VIDIOC_QUERYCTRL, &qctrl))
+ if (v4lconvert_vidioc_queryctrl(devices[index].convert, &qctrl))
return 0;
if (qctrl.flags & V4L2_CTRL_FLAG_DISABLED)
return 0;
- if (SYS_IOCTL(fd, VIDIOC_G_CTRL, &ctrl))
+ if (v4lconvert_vidioc_g_ctrl(devices[index].convert, &ctrl))
return 0;
return ((ctrl.value - qctrl.minimum) * 65535 +