From 4c4871f13368ea5a47b607b14c620b1562aa3236 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sat, 10 Apr 2004 13:27:16 +0000 Subject: Workaround for missing struct v4l2_buffer declaration in Suse 9 and Mandrake 10 linux/videodev2.h header file (#135919). Original commit message from CVS: * configure.ac: * sys/v4l2/gstv4l2element.h: Workaround for missing struct v4l2_buffer declaration in Suse 9 and Mandrake 10 linux/videodev2.h header file (#135919). --- ChangeLog | 7 +++++++ configure.ac | 17 +++++++++++++++++ sys/v4l2/gstv4l2element.h | 30 ++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/ChangeLog b/ChangeLog index 9b2bf0cb..79e4c012 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-04-10 Ronald Bultje + + * configure.ac: + * sys/v4l2/gstv4l2element.h: + Workaround for missing struct v4l2_buffer declaration in Suse 9 + and Mandrake 10 linux/videodev2.h header file (#135919). + 2004-04-10 Ronald Bultje * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_open_file): diff --git a/configure.ac b/configure.ac index 7311bc78..b83f5bf6 100644 --- a/configure.ac +++ b/configure.ac @@ -635,6 +635,23 @@ return 0; [ AC_MSG_WARN([video4linux2 was not found])]) ]) fi + dnl check for missing v4l2_buffer declaration (see #135919) + if [ test x$HAVE_V4L2 = xyes ]; then + MISSING_DECL=0 + AC_MSG_CHECKING(struct v4l2_buffer declaration) + AC_TRY_COMPILE([ +#include +#include +#define _LINUX_TIME_H +#include + ],[ +struct v4l2_buffer buf; +return 0; + ], [ AC_MSG_RESULT(yes) ], [ MISSING_DECL=1 && AC_MSG_RESULT(no) ]) + if [ test x$MISSING_DECL = x1 ]; then + AC_DEFINE(GST_V4L2_MISSING_BUFDECL, 1, [struct v4l2_buffer missing]) + fi + fi ]) dnl Next, check for the optional libraries: diff --git a/sys/v4l2/gstv4l2element.h b/sys/v4l2/gstv4l2element.h index e46b2440..61442aff 100644 --- a/sys/v4l2/gstv4l2element.h +++ b/sys/v4l2/gstv4l2element.h @@ -40,6 +40,36 @@ #define _LINUX_TIME_H #include +/* + * See bug #135919, the Suse9 (and Mandrake10) videodev2 headers + * contain a bug where (for userspace applications) the v4l2_buffer + * struct is not declared, so applications have to declare it. + * Declaration straightly ripped out from . + */ +#ifdef GST_V4L2_MISSING_BUFDECL +struct v4l2_buffer +{ + __u32 index; + enum v4l2_buf_type type; + __u32 bytesused; + __u32 flags; + enum v4l2_field field; + struct timeval timestamp; + struct v4l2_timecode timecode; + __u32 sequence; + + /* memory location */ + enum v4l2_memory memory; + union { + __u32 offset; + unsigned long userptr; + } m; + __u32 length; + + __u32 reserved[2]; +}; +#endif /* GST_V4L2_MISSING_BUFDECL */ + #define GST_TYPE_V4L2ELEMENT \ (gst_v4l2element_get_type()) -- cgit v1.2.1