* libv4l on OpenBSD
@ 2016-01-22 19:10 Ingo Feinerer
2016-01-23 10:45 ` Gregor Jasny
0 siblings, 1 reply; 2+ messages in thread
From: Ingo Feinerer @ 2016-01-22 19:10 UTC (permalink / raw)
To: linux-media
Hi,
in OpenBSD we recently updated our videoio.h (= videodev2.h in Linux)
header and also imported libv4l in our ports tree
(https://marc.info/?l=openbsd-ports-cvs&m=145218684026568&w=2).
However, we need a few patches to have it working. As there is already
FreeBSD support in libv4l, I would like to ask you if it would be
possible to add OpenBSD support as well (so that it works out of the
box)? The diffs (on top of https://git.linuxtv.org/v4l-utils.git)
towards this goal are as follows.
Thank you!
Best regards,
Ingo
diff --git a/configure.ac b/configure.ac
index 8bfe83d..91f5185 100644
--- a/configure.ac
+++ b/configure.ac
@@ -142,6 +142,9 @@ case "$host_os" in
linux*)
linux_os="yes"
;;
+ freebsd*)
+ freebsd_os="yes"
+ ;;
esac
AM_CONDITIONAL([LINUX_OS], [test x$linux_os = xyes])
@@ -410,7 +413,7 @@ AS_IF([test x$enable_libv4l = xno], [AC_SUBST([ENFORCE_LIBV4L_STATIC], ["-st
if test "x$linux_os" = "xyes"; then
CPPFLAGS="-I\$(top_srcdir)/include $CPPFLAGS"
-else
+elif test "x$freebsd_os" = "xyes"; then
CPPFLAGS="-I\$(top_srcdir)/contrib/freebsd/include $CPPFLAGS"
fi
diff --git a/lib/include/libv4l1-videodev.h b/lib/include/libv4l1-videodev.h
index b67c929..effe174 100644
--- a/lib/include/libv4l1-videodev.h
+++ b/lib/include/libv4l1-videodev.h
@@ -6,7 +6,7 @@
#include <linux/ioctl.h>
#endif
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
#include <sys/ioctl.h>
#endif
diff --git a/lib/include/libv4l2rds.h b/lib/include/libv4l2rds.h
index ff1050a..a2c2f4f 100644
--- a/lib/include/libv4l2rds.h
+++ b/lib/include/libv4l2rds.h
@@ -24,7 +24,11 @@
#include <stdbool.h>
#include <stdint.h>
+#if defined(__OpenBSD__)
+#include <sys/videoio.h>
+#else
#include <linux/videodev2.h>
+#endif
#ifdef __cplusplus
extern "C" {
diff --git a/lib/include/libv4lconvert.h b/lib/include/libv4lconvert.h
index d425c51..c6064c5 100644
--- a/lib/include/libv4lconvert.h
+++ b/lib/include/libv4lconvert.h
@@ -28,7 +28,7 @@
#include <linux/ioctl.h>
#endif
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
#include <sys/time.h>
#include <sys/types.h>
#include <sys/ioctl.h>
@@ -36,7 +36,11 @@
/* end broken header workaround includes */
+#if defined(__OpenBSD__)
+#include <sys/videoio.h>
+#else
#include <linux/videodev2.h>
+#endif
#ifdef __cplusplus
extern "C" {
diff --git a/lib/libv4l-mplane/libv4l-mplane.c b/lib/libv4l-mplane/libv4l-mplane.c
index 99a4d88..2f685a7 100644
--- a/lib/libv4l-mplane/libv4l-mplane.c
+++ b/lib/libv4l-mplane/libv4l-mplane.c
@@ -26,7 +26,12 @@
#include <unistd.h>
#include <sys/syscall.h>
+#if defined(__OpenBSD__)
+#include <sys/videoio.h>
+#include <sys/ioctl.h>
+#else
#include <linux/videodev2.h>
+#endif
#include "libv4l-plugin.h"
diff --git a/lib/libv4l1/libv4l1.c b/lib/libv4l1/libv4l1.c
index 5c147b3..dab665b 100644
--- a/lib/libv4l1/libv4l1.c
+++ b/lib/libv4l1/libv4l1.c
@@ -58,7 +58,11 @@
#include <sys/types.h>
#include <sys/mman.h>
#include "../libv4lconvert/libv4lsyscall-priv.h"
+#if defined(__OpenBSD__)
+#include <sys/videoio.h>
+#else
#include <linux/videodev2.h>
+#endif
#include <libv4l2.h>
#include "libv4l1.h"
#include "libv4l1-priv.h"
diff --git a/lib/libv4l2/log.c b/lib/libv4l2/log.c
index 9d3eab1..d36b2e2 100644
--- a/lib/libv4l2/log.c
+++ b/lib/libv4l2/log.c
@@ -28,7 +28,11 @@
#include <string.h>
#include <errno.h>
#include "../libv4lconvert/libv4lsyscall-priv.h"
+#if defined(__OpenBSD__)
+#include <sys/videoio.h>
+#else
#include <linux/videodev2.h>
+#endif
#include "libv4l2.h"
#include "libv4l2-priv.h"
diff --git a/lib/libv4l2/v4l2convert.c b/lib/libv4l2/v4l2convert.c
index 3f43c89..7c9a04c 100644
--- a/lib/libv4l2/v4l2convert.c
+++ b/lib/libv4l2/v4l2convert.c
@@ -36,7 +36,11 @@
#include <string.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
+#if defined(__OpenBSD__)
+#include <sys/videoio.h>
+#else
#include <linux/videodev2.h>
+#endif
#include <libv4l2.h>
#include "../libv4lconvert/libv4lsyscall-priv.h"
diff --git a/lib/libv4l2rds/libv4l2rds.c b/lib/libv4l2rds/libv4l2rds.c
index 596cd19..48cc81b 100644
--- a/lib/libv4l2rds/libv4l2rds.c
+++ b/lib/libv4l2rds/libv4l2rds.c
@@ -27,7 +27,11 @@
#include <sys/types.h>
#include <sys/mman.h>
+#if defined(__OpenBSD__)
+#include <sys/videoio.h>
+#else
#include <linux/videodev2.h>
+#endif
#include "../include/libv4l2rds.h"
diff --git a/lib/libv4lconvert/control/libv4lcontrol.c b/lib/libv4lconvert/control/libv4lcontrol.c
index e1832a9..e61c72e 100644
--- a/lib/libv4lconvert/control/libv4lcontrol.c
+++ b/lib/libv4lconvert/control/libv4lcontrol.c
@@ -35,7 +35,11 @@
#include "libv4lcontrol.h"
#include "libv4lcontrol-priv.h"
#include "../libv4lsyscall-priv.h"
+#if defined(__OpenBSD__)
+#include <sys/videoio.h>
+#else
#include <linux/videodev2.h>
+#endif
#define ARRAY_SIZE(x) ((int)sizeof(x) / (int)sizeof((x)[0]))
diff --git a/lib/libv4lconvert/libv4lsyscall-priv.h b/lib/libv4lconvert/libv4lsyscall-priv.h
index bc18b21..144a212 100644
--- a/lib/libv4lconvert/libv4lsyscall-priv.h
+++ b/lib/libv4lconvert/libv4lsyscall-priv.h
@@ -63,6 +63,15 @@
#define MMAP2_PAGE_SHIFT 0
#endif
+#if defined(__OpenBSD__)
+#include <sys/syscall.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#define _IOC_NR(cmd) ((cmd) & 0xFF)
+#define _IOC_TYPE(cmd) IOCGROUP(cmd)
+#define MMAP2_PAGE_SHIFT 0
+#endif
+
#undef SYS_OPEN
#undef SYS_CLOSE
#undef SYS_IOCTL
@@ -97,6 +106,11 @@
#define SYS_MMAP(addr, len, prot, flags, fd, off) \
syscall(SYS_mmap, (void *)(addr), (size_t)(len), \
(int)(prot), (int)(flags), (int)(fd), (off_t)(off))
+#elif defined(__OpenBSD__)
+register_t __syscall(quad_t, ...);
+#define SYS_MMAP(addr, len, prot, flags, fd, offset) \
+ __syscall((quad_t)SYS_mmap, (void *)(addr), (size_t)(len), \
+ (int)(prot), (int)(flags), (int)(fd), 0, (off_t)(offset))
#else
#define SYS_MMAP(addr, len, prot, flags, fd, off) \
syscall(SYS_mmap2, (void *)(addr), (size_t)(len), \
diff --git a/lib/libv4lconvert/processing/libv4lprocessing.h b/lib/libv4lconvert/processing/libv4lprocessing.h
index 8d413e1..c6a4adc 100644
--- a/lib/libv4lconvert/processing/libv4lprocessing.h
+++ b/lib/libv4lconvert/processing/libv4lprocessing.h
@@ -22,7 +22,11 @@
#define __LIBV4LPROCESSING_H
#include "../libv4lsyscall-priv.h"
+#if defined(__OpenBSD__)
+#include <sys/videoio.h>
+#else
#include <linux/videodev2.h>
+#endif
struct v4lprocessing_data;
struct v4lcontrol_data;
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: libv4l on OpenBSD
2016-01-22 19:10 libv4l on OpenBSD Ingo Feinerer
@ 2016-01-23 10:45 ` Gregor Jasny
0 siblings, 0 replies; 2+ messages in thread
From: Gregor Jasny @ 2016-01-23 10:45 UTC (permalink / raw)
To: Ingo Feinerer, linux-media
Hello,
On 22/01/16 20:10, Ingo Feinerer wrote:
> in OpenBSD we recently updated our videoio.h (= videodev2.h in Linux)
> header and also imported libv4l in our ports tree
> (https://marc.info/?l=openbsd-ports-cvs&m=145218684026568&w=2).
>
> However, we need a few patches to have it working. As there is already
> FreeBSD support in libv4l, I would like to ask you if it would be
> possible to add OpenBSD support as well (so that it works out of the
> box)? The diffs (on top of https://git.linuxtv.org/v4l-utils.git)
> towards this goal are as follows.
I will try to get out a new v4l-utils release soon and will have a look
at your patch afterwards. What I'd like to see in the BSDs is a working
V4L header (videodev2.h) that is a drop-in replacement for the Linux
one. That would help to get rid of all the #ifdef portions in the code.
Thanks,
Gregor
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-01-23 10:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-22 19:10 libv4l on OpenBSD Ingo Feinerer
2016-01-23 10:45 ` Gregor Jasny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).