From c6809b3db059e028b52c1fd8241d4e575c42fea8 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sun, 9 Mar 2003 15:07:53 +0000 Subject: [PATCH] Fix v4l/v4l2 compilation problems Original commit message from CVS: Fix v4l/v4l2 compilation problems --- configure.ac | 25 +++++++++++++++++++++++-- sys/v4l/gstv4lelement.c | 4 ++++ sys/v4l/gstv4lelement.h | 15 ++++++++++++++- sys/v4l/gstv4lmjpegsink.c | 4 ++++ sys/v4l/gstv4lmjpegsrc.c | 4 ++++ sys/v4l/gstv4lsrc.c | 4 ++++ sys/v4l/v4l-overlay_calls.c | 4 ++++ sys/v4l/v4l_calls.c | 4 ++++ sys/v4l/v4lmjpegsink_calls.c | 4 ++++ sys/v4l/v4lmjpegsrc_calls.c | 4 ++++ sys/v4l/v4lsrc_calls.c | 4 ++++ 11 files changed, 73 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 3521b0b..0981b9b 100644 --- a/configure.ac +++ b/configure.ac @@ -290,15 +290,36 @@ dnl this one is for hadess, no qcam when no nasm found ]) dnl *** Video 4 Linux *** +dnl for information about the header/define, see sys/v4l/gstv4lelement.h translit(dnm, m, l) AM_CONDITIONAL(USE_V4L, true) GST_CHECK_FEATURE(V4L, [Video 4 Linux], v4lsrc v4lmjpegsrc v4lmjpegsink, [ - AC_CHECK_DECL(VID_TYPE_MPEG_ENCODER, HAVE_V4L="yes", HAVE_V4L="no", [#include ]) + AC_CHECK_DECL(VID_TYPE_MPEG_ENCODER, HAVE_V4L="yes", HAVE_V4L="no", [ +#include +#define _LINUX_TIME_H +#include + ]) ]) dnl *** Video 4 Linux 2*** +dnl for information about the header/define, see sys/v4l2/gstv4l2element.h translit(dnm, m, l) AM_CONDITIONAL(USE_V4L2, true) GST_CHECK_FEATURE(V4L2, [Video 4 Linux 2], v4l2src, [ - AC_CHECK_HEADER(linux/videodev2.h, HAVE_V4L2="yes", HAVE_V4L2="no") + AC_MSG_CHECKING([Checking for uptodate v4l2 installation]) + AC_TRY_COMPILE([ +#include +#include +#define _LINUX_TIME_H +#include +#if defined(V4L2_MAJOR_VERSION) || defined(V4L2_MINOR_VERSION) +#error too early v4l2 version or no v4l2 at all +#endif + ], [ +return 0; + ], [ HAVE_V4L2="yes" && AC_MSG_RESULT(yes)], + [ HAVE_V4L2="no" && AC_MSG_RESULT(no) && + AC_CHECK_HEADER(linux/videodev2.h, + [ AC_MSG_WARN([video4linux2 headers were found, but they're old. Please update v4l2 to compile the v4l2 plugins])], + [ AC_MSG_WARN([video4linux2 was not found])])]) ]) dnl *** Video CD *** diff --git a/sys/v4l/gstv4lelement.c b/sys/v4l/gstv4lelement.c index 918b2df..15a9b56 100644 --- a/sys/v4l/gstv4lelement.c +++ b/sys/v4l/gstv4lelement.c @@ -17,6 +17,10 @@ * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include "v4l_calls.h" #include "gstv4lelement-marshal.h" diff --git a/sys/v4l/gstv4lelement.h b/sys/v4l/gstv4lelement.h index 303cd65..f4c9f07 100644 --- a/sys/v4l/gstv4lelement.h +++ b/sys/v4l/gstv4lelement.h @@ -20,9 +20,22 @@ #ifndef __GST_V4LELEMENT_H__ #define __GST_V4LELEMENT_H__ -#include #include + +/* Because of some really cool feature in video4linux1, also known as + * 'not including sys/types.h and sys/time.h', we had to include it + * ourselves. In all their intelligence, these people decided to fix + * this in the next version (video4linux2) in such a cool way that it + * breaks all compilations of old stuff... + * The real problem is actually that linux/time.h doesn't use proper + * macro checks before defining types like struct timeval. The proper + * fix here is to either fuck the kernel header (which is what we do + * by defining _LINUX_TIME_H, an innocent little hack) or by fixing it + * upstream, which I'll consider doing later on. If you get compiler + * errors here, check your linux/time.h && sys/time.h header setup. + */ #include +#define _LINUX_TIME_H #include #ifdef __cplusplus diff --git a/sys/v4l/gstv4lmjpegsink.c b/sys/v4l/gstv4lmjpegsink.c index 74778d6..ea01e4c 100644 --- a/sys/v4l/gstv4lmjpegsink.c +++ b/sys/v4l/gstv4lmjpegsink.c @@ -17,6 +17,10 @@ * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include "v4lmjpegsink_calls.h" diff --git a/sys/v4l/gstv4lmjpegsrc.c b/sys/v4l/gstv4lmjpegsrc.c index 3c9c0b5..c648868 100644 --- a/sys/v4l/gstv4lmjpegsrc.c +++ b/sys/v4l/gstv4lmjpegsrc.c @@ -17,6 +17,10 @@ * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include "v4lmjpegsrc_calls.h" diff --git a/sys/v4l/gstv4lsrc.c b/sys/v4l/gstv4lsrc.c index cb09e19..22f7ec8 100644 --- a/sys/v4l/gstv4lsrc.c +++ b/sys/v4l/gstv4lsrc.c @@ -17,6 +17,10 @@ * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include "v4lsrc_calls.h" diff --git a/sys/v4l/v4l-overlay_calls.c b/sys/v4l/v4l-overlay_calls.c index 32c9c0b..1de08c1 100644 --- a/sys/v4l/v4l-overlay_calls.c +++ b/sys/v4l/v4l-overlay_calls.c @@ -17,6 +17,10 @@ * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include diff --git a/sys/v4l/v4l_calls.c b/sys/v4l/v4l_calls.c index f8b3a40..888f646 100644 --- a/sys/v4l/v4l_calls.c +++ b/sys/v4l/v4l_calls.c @@ -17,6 +17,10 @@ * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include diff --git a/sys/v4l/v4lmjpegsink_calls.c b/sys/v4l/v4lmjpegsink_calls.c index 43e2057..5a76dc2 100644 --- a/sys/v4l/v4lmjpegsink_calls.c +++ b/sys/v4l/v4lmjpegsink_calls.c @@ -17,6 +17,10 @@ * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include diff --git a/sys/v4l/v4lmjpegsrc_calls.c b/sys/v4l/v4lmjpegsrc_calls.c index 4abfe62..8f436b9 100644 --- a/sys/v4l/v4lmjpegsrc_calls.c +++ b/sys/v4l/v4lmjpegsrc_calls.c @@ -17,6 +17,10 @@ * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include diff --git a/sys/v4l/v4lsrc_calls.c b/sys/v4l/v4lsrc_calls.c index 433a278..c393be4 100644 --- a/sys/v4l/v4lsrc_calls.c +++ b/sys/v4l/v4lsrc_calls.c @@ -17,6 +17,10 @@ * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include -- 2.7.4