From c0dbf256833beb2ffddabf284f825ce547ca44e5 Mon Sep 17 00:00:00 2001 From: Edgard Lima Date: Sat, 11 Mar 2006 22:50:03 +0000 Subject: V4L2 ported to 0.10. Original commit message from CVS: V4L2 ported to 0.10. --- sys/v4l2/gstv4l2element.h | 147 ++++++++++++++++++++-------------------------- 1 file changed, 65 insertions(+), 82 deletions(-) (limited to 'sys/v4l2/gstv4l2element.h') diff --git a/sys/v4l2/gstv4l2element.h b/sys/v4l2/gstv4l2element.h index 62663a29..06e50bf7 100644 --- a/sys/v4l2/gstv4l2element.h +++ b/sys/v4l2/gstv4l2element.h @@ -1,5 +1,8 @@ -/* G-Streamer generic V4L2 element - * Copyright (C) 2002 Ronald Bultje +/* GStreamer + * + * gstv4l2element.h: base class for V4L2 elements + * + * Copyright (C) 2001-2002 Ronald Bultje * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -20,9 +23,6 @@ #ifndef __GST_V4L2ELEMENT_H__ #define __GST_V4L2ELEMENT_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 @@ -36,104 +36,87 @@ * errors here, check your linux/time.h && sys/time.h header setup. */ #include -#include #define _LINUX_TIME_H -#define __user #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 */ +#include +#include -#define GST_TYPE_V4L2ELEMENT \ - (gst_v4l2element_get_type()) -#define GST_V4L2ELEMENT(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_V4L2ELEMENT, GstV4l2Element)) -#define GST_V4L2ELEMENT_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_V4L2ELEMENT, GstV4l2ElementClass)) -#define GST_IS_V4L2ELEMENT(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_V4L2ELEMENT)) -#define GST_IS_V4L2ELEMENT_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_V4L2ELEMENT)) -#define GST_V4L2ELEMENT_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_V4L2ELEMENT, GstV4l2ElementClass)) +G_BEGIN_DECLS +#define GST_TYPE_V4L2ELEMENT \ + (gst_v4l2element_get_type()) +#define GST_V4L2ELEMENT(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_V4L2ELEMENT,GstV4l2Element)) +#define GST_V4L2ELEMENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_V4L2ELEMENT,GstV4l2ElementClass)) +#define GST_IS_V4L2ELEMENT(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_V4L2ELEMENT)) +#define GST_IS_V4L2ELEMENT_CLASS(obj) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_V4L2ELEMENT)) +#define GST_V4L2ELEMENT_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_V4L2ELEMENT, GstV4l2ElementClass)) -typedef struct _GstV4l2Element GstV4l2Element; -typedef struct _GstV4l2ElementClass GstV4l2ElementClass; -typedef struct _GstV4l2Xv GstV4l2Xv; +typedef struct _GstV4l2Element GstV4l2Element; +typedef struct _GstV4l2ElementClass GstV4l2ElementClass; +typedef struct _GstV4l2Xv GstV4l2Xv; struct _GstV4l2Element { - GstElement element; + GstPushSrc element; - /* the video device */ - char *device; + /* the video device */ + char *videodev; - /* the video-device's file descriptor */ - gint video_fd; + /* the video-device's file descriptor */ + gint video_fd; - /* the video buffer (mmap()'ed) */ - guint8 **buffer; + /* the video buffer (mmap()'ed) */ + guint8 **buffer; - /* the video-device's capabilities */ - struct v4l2_capability vcap; + /* the video device's capabilities */ + struct v4l2_capability vcap; - /* the toys available to us */ - GList *channels; - GList *norms; - GList *colors; + /* the video device's window properties */ + struct v4l2_window vwin; - /* X-overlay */ - GstV4l2Xv *xv; - XID xwindow_id; + /* some more info about the current input's capabilities */ + struct v4l2_input vinput; - /* properties */ - gchar *norm; - gchar *channel; - gulong frequency; -}; + /* lists... */ + GList *colors; + GList *stds; + GList *inputs; + + /* properties */ + gchar *std; + gchar *input; + gulong frequency; -struct _GstV4l2ElementClass { - GstElementClass parent_class; - /* probed devices */ - GList *devices; + /* X-overlay */ + GstV4l2Xv *xv; + gulong xwindow_id; +}; - /* signals */ - void (*open) (GstElement *element, - const gchar *device); - void (*close) (GstElement *element, - const gchar *device); +struct _GstV4l2ElementClass { + GstPushSrcClass parent_class; + + /* probed devices */ + GList *devices; + + /* actions */ + gboolean (*get_attribute) (GstElement *element, + const gchar *attr_name, + int *value); + gboolean (*set_attribute) (GstElement *element, + const gchar *attr_name, + const int value); }; +GType gst_v4l2element_get_type(void); + -GType gst_v4l2element_get_type (void); +G_END_DECLS #endif /* __GST_V4L2ELEMENT_H__ */ -- cgit v1.2.1