diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | configure.ac | 17 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2element.h | 30 |
3 files changed, 54 insertions, 0 deletions
@@ -1,5 +1,12 @@ 2004-04-10 Ronald Bultje <rbultje@ronald.bitfreak.net> + * 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 <rbultje@ronald.bitfreak.net> + * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_open_file): Bail out if no filename was given. 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 <sys/types.h> +#include <linux/types.h> +#define _LINUX_TIME_H +#include <linux/videodev2.h> + ],[ +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 <linux/videodev2.h> +/* + * 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 <linux/videodev2.h>. + */ +#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()) |