+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):
[ 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:
#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())