Group :: Video
RPM: luvcview
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: luvc-0.2.6-debian-clang.patch
Download
Download
--- a/v4l2uvc.c
+++ b/v4l2uvc.c
@@ -179,6 +179,26 @@ init_videoIn(struct vdIn *vd, char *devi
v4l2_close(vd->fd);
return -1;
}
+
+//subroutine to read menu items of controls with type 3
+static void enumerate_menu (struct v4l2_querymenu querymenu,
+ struct v4l2_queryctrl queryctrl, int vd) {
+ printf (" Menu items:\n");
+ memset (&querymenu, 0, sizeof (querymenu));
+ querymenu.id = queryctrl.id;
+ for (querymenu.index = queryctrl.minimum;
+ querymenu.index <= queryctrl.maximum;
+ querymenu.index++) {
+ if (0 == ioctl (vd, VIDIOC_QUERYMENU, &querymenu)) {
+ printf (" index:%d name:%s\n", querymenu.index, querymenu.name);
+ SDL_Delay(10);
+ } else {
+ printf ("error getting control menu");
+ break;
+ }
+ }
+}
+
int enum_controls(int vd) //struct vdIn *vd)
{
struct v4l2_queryctrl queryctrl;
@@ -193,24 +213,6 @@ int enum_controls(int vd) //struct vdIn
v4l2_ioctl(vd,VIDIOC_ENUMINPUT , getinput);
printf ("Available controls of device '%s' (Type 1=Integer 2=Boolean 3=Menu 4=Button)\n", getinput->name);
- //subroutine to read menu items of controls with type 3
- void enumerate_menu (void) {
- printf (" Menu items:\n");
- memset (&querymenu, 0, sizeof (querymenu));
- querymenu.id = queryctrl.id;
- for (querymenu.index = queryctrl.minimum;
- querymenu.index <= queryctrl.maximum;
- querymenu.index++) {
- if (0 == ioctl (vd, VIDIOC_QUERYMENU, &querymenu)) {
- printf (" index:%d name:%s\n", querymenu.index, querymenu.name);
- SDL_Delay(10);
- } else {
- printf ("error getting control menu");
- break;
- }
- }
- }
-
//predefined controls
printf ("V4L2_CID_BASE (predefined controls):\n");
memset (&queryctrl, 0, sizeof (queryctrl));
@@ -227,7 +229,7 @@ int enum_controls(int vd) //struct vdIn
queryctrl.id, queryctrl.name, queryctrl.type, queryctrl.minimum,
queryctrl.maximum, queryctrl.step, queryctrl.default_value, control_s.value);
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
- enumerate_menu ();
+ enumerate_menu (querymenu, queryctrl, vd);
} else {
if (errno == EINVAL)
continue;
@@ -250,7 +252,7 @@ int enum_controls(int vd) //struct vdIn
queryctrl.id, queryctrl.name, queryctrl.type, queryctrl.minimum,
queryctrl.maximum, queryctrl.step, queryctrl.default_value, control_s.value);
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
- enumerate_menu ();
+ enumerate_menu (querymenu, queryctrl, vd);
} else {
if (errno == EINVAL)
break;