summaryrefslogtreecommitdiff
blob: b25827a0b998f3eee3f7a3cb153e72ff14fc30a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
--- zbar-0.10/configure.ac
+++ zbar-0.10/configure.ac
@@ -147,19 +147,13 @@ 
 with_video="no"
 AS_IF([test "x$enable_video" != "xno"],
   [AS_IF([test "x$win32" = "xno"],
-    [AC_CHECK_HEADERS([linux/videodev.h], [with_video="v4l1"],
-      [AC_MSG_FAILURE([test for video support failed!
-rebuild your kernel to include video4linux support or
-configure --disable-video to skip building video support.])])
-       AC_CHECK_HEADERS([linux/videodev2.h], [with_video="v4l2"],
+    [AC_CHECK_HEADERS([linux/videodev2.h], [with_video="v4l2"],
          [AC_MSG_WARN([v4l2 API not detected, upgrade your kernel!])])],
     [AC_CHECK_HEADERS([vfw.h], [with_video="vfw"],
       [AC_MSG_FAILURE([test for VfW video support failed!
 configure --disable-video to skip building vidoe support.])])])
 ])
 AM_CONDITIONAL([HAVE_VIDEO], [test "x$enable_video" != "xno"])
-AM_CONDITIONAL([HAVE_V4L1],
-  [test "x$with_video" = "xv4l1" || test "x$with_video" = "xv4l2"])
 AM_CONDITIONAL([HAVE_V4L2], [test "x$with_video" = "xv4l2"])
 
 dnl X
--- zbar-0.10/zbar/Makefile.am.inc
+++ zbar-0.10/zbar/Makefile.am.inc
@@ -53,12 +53,9 @@ 
 zbar_libzbar_la_SOURCES += zbar/processor/posix.h zbar/processor/posix.c
 endif
 
-if HAVE_V4L1
-zbar_libzbar_la_SOURCES += zbar/video/v4l1.c
 if HAVE_V4L2
 zbar_libzbar_la_SOURCES += zbar/video/v4l2.c
 endif
-endif
 if WIN32
 if HAVE_VIDEO
 zbar_libzbar_la_SOURCES += zbar/video/vfw.c
--- zbar-0.10/zbar/video/v4l2.c
+++ zbar-0.10/zbar/video/v4l2.c
@@ -39,6 +39,9 @@ 
 # include <sys/mman.h>
 #endif
 #include <linux/videodev2.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
 
 #include "video.h"
 #include "image.h"
@@ -507,3 +507,23 @@ 
     vdo->dq = v4l2_dq;
     return(0);
 }
+
+int _zbar_video_open (zbar_video_t *vdo,
+                      const char *dev)
+{
+    vdo->fd = open(dev, O_RDWR);
+    if(vdo->fd < 0)
+        return(err_capture_str(vdo, SEV_ERROR, ZBAR_ERR_SYSTEM, __func__,
+                               "opening video device '%s'", dev));
+    zprintf(1, "opened camera device %s (fd=%d)\n", dev, vdo->fd);
+
+    int rc = -1;
+    if(vdo->intf != VIDEO_V4L1)
+        rc = _zbar_v4l2_probe(vdo);
+
+    if(rc && vdo->fd >= 0) {
+        close(vdo->fd);
+        vdo->fd = -1;
+    }
+    return(rc);
+}