Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37690656
en ru br
ALT Linux repositórios
S:0.2.6-alt3

Group :: Vídeo
RPM: luvcview

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs e FR  Repocop 

Patch: luvc-0.2.6-debian-clang.patch
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;
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009