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).
This commit is contained in:
Ronald S. Bultje 2004-04-10 13:27:16 +00:00
parent 8dd4ee7910
commit b45bef1fed
3 changed files with 54 additions and 0 deletions

View file

@ -1,3 +1,10 @@
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):

View file

@ -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:

View file

@ -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())