Here is some sample code that I use to set the "Zoom, Absolute" control in v4l2. You could replace V4L2_CID_ZOOM_ABSOLUTE with V4L2_CID_AUTO_WHITE_BALANCE to enable/disable auto white-balance.
struct v4l2_queryctrl queryctrl;
struct v4l2_control control;
memset (&queryctrl, 0, sizeof (queryctrl));
queryctrl.id = V4L2_CID_ZOOM_ABSOLUTE;
if (-1 == ioctl (capture_fd_, VIDIOC_QUERYCTRL, &queryctrl)) {
if (errno != EINVAL) {
perror ("VIDIOC_QUERYCTRL");
exit (EXIT_FAILURE);
} else {
printf ("V4L2_CID_ZOOM_ABSOLUTE is not supported\n");
}
} else if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) {
printf ("V4L2_CID_ZOOM_ABSOLUTE is not supported\n");
} else {
memset (&control, 0, sizeof (control));
control.id = V4L2_CID_ZOOM_ABSOLUTE;
control.value = zoom_factor_;
if (-1 == ioctl (capture_fd_, VIDIOC_S_CTRL, &control)) {
perror ("VIDIOC_S_CTRL");
exit (EXIT_FAILURE);
}
}
You also might want to check out libwebcam and its command-line
configuration utility, uvcdynctrl:
http://www.quickcamteam.net/software/libwebcam
$ uvcdynctrl -d /dev/video0 -g 'White Balance Temperature, Auto'
1
$ uvcdynctrl -d /dev/video0 -s 'White Balance Temperature, Auto' 0
$ uvcdynctrl -d /dev/video0 -c
Listing available controls for device /dev/video0:
[...]
Focus (absolute)
Exposure, Auto Priority
Exposure (Absolute)
Exposure, Auto
Backlight Compensation
Sharpness
White Balance Temperature
Power Line Frequency
Gain
White Balance Temperature, Auto
Saturation
Contrast
Brightness
- Ken
_______________________________________________
ros-users mailing list
ros-users@code.ros.org
https://code.ros.org/mailman/listinfo/ros-users