Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37729161
en ru br
Репозитории ALT

Группа :: Видео
Пакет: luvcview

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: luvc-0.2.6-debian-clang.patch
Скачать


--- 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;
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin