]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Add V4L2 bindings
authorMatías De la Puente <mfpuente.ar@gmail.com>
Mon, 30 Mar 2009 08:01:51 +0000 (10:01 +0200)
committerJürg Billeter <j@bitron.ch>
Mon, 30 Mar 2009 08:01:51 +0000 (10:01 +0200)
Fixes bug 572692.

vapi/Makefile.am
vapi/v4l2.vapi [new file with mode: 0644]

index b06ec5af8737787f758ce9598ce51bcb3eeaad6a..3f276c48cecc911e77d61543cafba4d1fa677111 100644 (file)
@@ -136,6 +136,7 @@ dist_vapi_DATA = \
        tracker-indexer-module-1.0.vapi \
        unique-1.0.deps \
        unique-1.0.vapi \
+       v4l2.vapi \
        vala-1.0.vapi \
        vte.deps \
        vte.vapi \
diff --git a/vapi/v4l2.vapi b/vapi/v4l2.vapi
new file mode 100644 (file)
index 0000000..25f4988
--- /dev/null
@@ -0,0 +1,1349 @@
+/* v4l2.vapi
+ *
+ * Copyright (C) 2008  Matias De la Puente
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ *
+ * Author:
+ *     Matias De la Puente <mfpuente.ar@gmail.com>
+ */
+
+[CCode (lower_case_cprefix="", cprefix="", cheader_filename="linux/videodev2.h")]
+namespace V4l2
+{
+       [CCode (cprefix="V4L2_FIELD_")]
+       public enum Field
+       {
+               ANY,
+               NONE,
+               TOP,
+               BOTTOM,
+               INTERLACED,
+               SEQ_TB,
+               SEQ_BT,
+               ALTERNATE,
+               INTERLACED_TB,
+               INTERLACED_BT
+       }
+       
+       [CCode (cname="V4L2_FIELD_HAS_TOP")]
+       public bool field_has_top (uint32 field);
+       [CCode (cname="V4L2_FIELD_HAS_BOTTOM")]
+       public bool field_has_bottom (uint32 field);
+       [CCode (cname="V4L2_FIELD_HAS_BOTH")]
+       public bool field_has_both (uint32 field);
+       
+       [CCode (cprefix="V4L2_BUF_TYPE_")]
+       public enum BufferType
+       {
+               VIDEO_CAPTURE,
+               VIDEO_OUTPUT,
+               VIDEO_OVERLAY,
+               VBI_CAPTURE,
+               VBI_OUTPUT,
+               SLICED_VBI_CAPTURE,
+               SLICED_VBI_OUTPUT,
+               VIDEO_OUTPUT_OVERLAY,
+               PRIVATE
+       }
+       
+       [CCode (cprefix="V4L2_CTRL_TYPE_")]
+       public enum ControlType
+       {
+               INTEGER,
+               BOOLEAN,
+               MENU,
+               BUTTON,
+               INTEGER64,
+               CTRL_CLASS
+       }
+       
+       [CCode (cprefix="V4L2_TUNER_")]
+       public enum TunerType
+       {
+               RADIO,
+               ANALOG_TV,
+               DIGITAL_TV
+       }
+       
+       [CCode (cprefix="V4L2_MEMORY_")]
+       public enum Memory
+       {
+               MMAP,
+               USERPTR,
+               OVERLAY
+       }
+       
+       [CCode (cprefix="V4L2_COLORSPACE_")]
+       public enum Colorspace
+       {
+               SMPTE170M,
+               SMPTE240M,
+               REC709,
+               BT878,
+               470_SYSTEM_M,
+               470_SYSTEM_BG,
+               JPEG,
+               SRGB
+       }
+       
+       [CCode (cprefix="V4L2_PRIORITY_")]
+       public enum Priority
+       {
+               UNSET,
+               BACKGROUND,
+               INTERACTIVE,
+               RECORD,
+               DEFAULT
+       }
+       
+       [CCode (cname="struct v4l2_rect")]
+       public struct Rect
+       {
+               public int32 left;
+               public int32 top;
+               public int32 width;
+               public int32 height;
+       }
+       
+       [CCode (cname="struct v4l2_fract")]
+       public struct Fraction
+       {
+               public uint32 numerator;
+               public uint32 denominator;
+       }
+       
+       [CCode (cprefix="V4L2_CAP_")]
+       public enum Capabilities
+       {
+               VIDEO_CAPTURE,
+               VIDEO_OUTPUT,
+               VIDEO_OVERLAY,
+               VBI_CAPTURE,
+               VBI_OUTPUT,
+               SLICED_VBI_CAPTURE,
+               SLICED_VBI_OUTPUT,
+               RDS_CAPTURE,
+               VIDEO_OUTPUT_OVERLAY,
+               HW_FREQ_SEEK,
+               TUNER,
+               AUDIO,
+               RADIO,
+               READWRITE,
+               ASYNCIO,
+               STREAMING
+       }
+       
+       [CCode (cname="struct v4l2_capability")]
+       public struct Capability
+       {
+               public unowned string driver;
+               public unowned string card;
+               public unowned string bus_info;
+               public uint32 version;
+               public uint32 capabilities;
+               public uint32[] reserved;
+       }
+       
+       [CCode (cprefix="V4L2_PIX_FMT_")]
+       public enum PixelFormatType
+       {
+               RGB332,
+               RGB444,
+               RGB555,
+               RGB565,
+               RGB555X,
+               RGB565X,
+               BGR24,
+               RGB24,
+               BGR32,
+               RGB32,
+               GREY,
+               Y16,
+               PAL8,
+               YVU410,
+               YVU420,
+               YUYV,
+               UYVY,
+               YUV422P,
+               YUV411P,
+               Y41P,
+               YUV444,
+               YUV555,
+               YUV565,
+               YUV32,
+               NV12,
+               NV21,
+               YUV410,
+               YUV420,
+               YYUV,
+               HI240,
+               HM12,
+               SBGGR8,
+               SGBRG8,
+               SBGGR16,
+               MJPEG,
+               JPEG,
+               DV,
+               MPEG,
+               WNVA,
+               SN9C10X,
+               PWC1,
+               PWC2,
+               ET61X251,
+               SPCA501,
+               SPCA505,
+               SPCA508,
+               SPCA561,
+               PAC207,
+               PJPG,
+               YVYU
+       }
+       
+       [CCode (cname="struct v4l2_pix_format")]
+       public struct PixelFormat
+       {
+               public uint32 width;
+               public uint32 height;
+               public uint32 pixelformat;
+               public Field field;
+               public uint32 bytesperline;
+               public uint32 sizeimage;
+               public Colorspace colorspace;
+               public uint32 priv;
+       }
+       
+       [CCode (cprefix="V4L2_FMT_FLAG_")]
+       public enum FormatFlag
+       {
+               COMPRESSED
+       }
+       
+       [CCode (cname="struct v4l2_fmtdesc")]
+       public struct FormatDescriptor
+       {
+               public uint32 index;
+               public BufferType type;
+               public uint32 flags;
+               public unowned string description;
+               public uint pixelformat;
+       }
+       
+       [CCode (cprefix="V4L2_FRMSIZE_TYPE_")]
+       public enum FramesizeTypes
+       {
+               DISCRETE,
+               CONTINUOUS,
+               STEPWISE
+       }
+       
+       [CCode (cname="struct v4l2_frmsize_discrete")]
+       public struct FramesizeDiscrete
+       {
+               public uint32 width;
+               public uint32 height;
+       }
+       
+       [CCode (cname="struct v4l2_frmsize_stepwise")]
+       public struct FramesizeStepwise
+       {
+               public uint32 min_width;
+               public uint32 max_width;
+               public uint32 step_width;
+               public uint32 min_height;
+               public uint32 max_height;
+               public uint32 step_height;
+       }
+       
+       [CCode (cname="struct v4l2_frmsizeenum")]
+       public struct FramsizeEnum
+       {
+               public uint32 index;
+               public uint32 pixel_format;
+               public uint32 type;
+               public FramesizeDiscrete discrete;
+               public FramesizeStepwise stepwise;
+       }
+       
+       [CCode (cprefix="V4L2_FRMIVAL_TYPE_")]
+       public enum FrameivalTypes
+       {
+               DISCRETE,
+               CONTINUOUS,
+               STEPWISE
+       }
+       
+       [CCode (cname="struct v4l2_frmival_stepwise")]
+       public struct FrameivalStepwise
+       {
+               public Fraction min;
+               public Fraction max;
+               public Fraction step;
+       }
+       
+       [CCode (cname="struct v4l2_frmivalenum")]
+       public struct FrameivalEnum
+       {
+               public uint32 index;
+               public uint32 pixel_format;
+               public uint32 width;
+               public uint32 height;
+               public uint32 type;
+               public Fraction discrete;
+               public Fraction stepwise;
+       }
+       
+       [CCode (cname="struct v4l2_timecode")]
+       public struct Timecode
+       {
+               public uint     type;
+               public uint32 flags;
+               public uint8 frames;
+               public uint8 seconds;
+               public uint8 minutes;
+               public uint8 hours;
+               public uint8[4] userbits;
+       }
+       
+       [CCode (cprefix="V4L2_TC_TYPE_")]
+       public enum TimecodeType
+       {
+               24FPS,
+               25FPS,
+               30FPS,
+               50FPS,
+               60FPS
+       }
+       
+       [CCode (cprefix="V4L2_TC_FLAGS_")]
+       public enum TimecodeFlags
+       {
+               DROPFRAME,
+               COLORFRAME
+       }
+       
+       [CCode (cprefix="V4L2_TC_USERBITS_")]
+       public enum TimecodeUserbits
+       {
+               field,
+               USERDEFINED,
+               8BITCHARS
+       }
+       
+       
+       [CCode (cname="struct v4l2_jpegcompression")]
+       public struct JpegCompression
+       {
+               public int quality;
+               public int APPn;
+               public int APP_len;
+               public char[60] APP_data;
+               public int COM_len;
+               public char[60] COM_data;
+               public uint32 jpeg_markers;
+       }
+       
+       [CCode (cprefix="V4L2_JPEG_MARKER_")]
+       public enum JpegMarker
+       {
+               DHT,
+               DQT,
+               DRI,
+               COM,
+               APP
+       }
+       
+       [CCode (cname="struct v4l2_requestbuffers")]
+       public struct RequestBuffers
+       {
+               public uint32 count;
+               public BufferType type;
+               public Memory memory;
+       }
+       
+       [CCode (cname="m")]
+       public struct M
+       {
+               public uint32 offset;
+               public ulong userptr;
+       }
+       
+       [CCode (cname="struct v4l2_buffer")]
+       public struct Buffer
+       {
+               public uint32 index;
+               public BufferType type;
+               public uint32 bytesused;
+               public uint32 flags;
+               public Field field;
+               public GLib.TimeVal timestamp;
+               public Timecode timecode;
+               public uint32 sequence;
+               public Memory memory;
+               public M m;
+               public uint32 length;
+               public uint32 input;
+               public uint32 reserved;
+       }
+       
+       [CCode (cprefix="V4L2_BUF_FLAG_")]
+       public enum BufferFlags
+       {
+               MAPPED,
+               QUEUED,
+               DONE,
+               KEYFRAME,
+               PFRAME,
+               BFRAME,
+               TIMECODE,
+               INPUT
+       }
+       
+       [CCode (cname="struct v4l2_framebuffer")]
+       public struct FrameBuffer
+       {
+               public uint32 capability;
+               public uint32 flags;
+               public void* @base;
+               public PixelFormat fmt;
+       }
+       
+       [CCode (cprefix="V4L2_FBUF_CAP_")]
+       public enum FrameBufferCapabilites
+       {
+               EXTERNOVERLAY,
+               CHROMAKEY,
+               LIST_CLIPPING,
+               BITMAP_CLIPPING,
+               LOCAL_ALPHA,
+               GLOBAL_ALPHA,
+               LOCAL_INV_ALPHA
+       }
+       
+       [CCode (cprefix="V4L2_FBUF_FLAG_")]
+       public enum FrameBufferFlags
+       {
+               PRIMARY,
+               OVERLAY,
+               CHROMAKEY,
+               LOCAL_ALPHA,
+               GLOBAL_ALPHA,
+               LOCAL_INV_ALPHA
+       }
+       
+       [CCode (cname="struct v4l2_clip")]
+       public struct Clip
+       {
+               public Rect c;
+               public Clip* next;
+       }
+       
+       [CCode (cname="struct v4l2_window")]
+       public struct Window
+       {
+               public Rect w;
+               public Field field;
+               public uint32 chromakey;
+               public Clip* clips;
+               public uint32 clipcount;
+               public void* bitmap;
+               public uint8 global_alpha;
+       }
+       
+       [CCode (cname="struct v4l2_captureparm")]
+       public struct CaptureParm
+       {
+               public uint32 capability;
+               public uint32 capturemode;
+               public Fraction timeperframe;
+               public uint32 extendedmode;
+               public uint32 readbuffers;
+       }
+       
+       [CCode (cprefix="V4L2_")]
+       public const uint32 MODE_HIGHQUALITY;
+       [CCode (cprefix="V4L2_")]
+       public const uint32 CAP_TIMEPERFRAME;
+       
+       [CCode (cname="struct v4l2_outputparm")]
+       public struct OutputParm
+       {
+               public uint32 capability;
+               public uint32 outputmode;
+               public Fraction timeperframe;
+               public uint32 extendedmode;
+               public uint32 writebuffers;
+       }
+       
+       [CCode (cname="struct v4l2_cropcap")]
+       public struct CropCap
+       {
+               public BufferType  type;
+               public Rect bounds;
+               public Rect defrect;
+               public Fraction pixelaspect;
+       }
+       
+       [CCode (cname="struct v4l2_crop")]
+       public struct Crop
+       {
+               public BufferType type;
+               public Rect c;
+       }
+       
+       [CCode (cprefix="V4L2_STD_")]
+       public enum Standards
+       {
+               PAL_B,
+               PAL_B1,
+               PAL_G,
+               PAL_H,
+               PAL_I,
+               PAL_D,
+               PAL_D1,
+               PAL_K,
+               PAL_M,
+               PAL_N,
+               PAL_Nc,
+               PAL_60,
+               NTSC_M,
+               NTSC_M_JP,
+               NTSC_443,
+               NTSC_M_KR,
+               SECAM_B,
+               SECAM_D,
+               SECAM_G,
+               SECAM_H,
+               SECAM_K,
+               SECAM_K1,
+               SECAM_L,
+               SECAM_LC,
+               ATSC_8_VSB,
+               ATSC_16_VSB,
+               MN,
+               B,
+               GH,
+               DK,
+               PAL_BG,
+               PAL_DK,
+               PAL,
+               NTSC,
+               SECAM_DK,
+               SECAM,
+               525_60,
+               625_50,
+               ATSC,
+               UNKNOWN,
+               ALL
+       }
+       
+       [CCode (cname="v4l2_std_id")]
+       public struct StdId : uint64 { }
+
+       [CCode (cname="struct v4l2_standard")]
+       public struct Standard
+       {
+               public uint32 index;
+               public StdId id;
+               public unowned string name;
+               public Fraction frameperiod;
+               public uint32 framelines;
+       }
+       
+       [CCode (cname="struct v4l2_input")]
+       public struct Input
+       {
+               public uint32 index;
+               public unowned string name;
+               public uint32 type;
+               public uint32 audioset;
+               public uint32 tuner;
+               public StdId std;
+               public uint32 status;
+       }
+       
+       [CCode (cprefix="V4L2_INPUT_TYPE_")]
+       public enum InputType
+       {
+               TUNER,
+               CAMERA
+       }
+       
+       [CCode (cprefix="V4L2_IN_ST_")]
+       public enum InputStatus
+       {
+               NO_POWER,
+               NO_SIGNAL,
+               NO_COLOR,
+               NO_H_LOCK,
+               COLOR_KILL,
+               NO_SYNC,
+               NO_EQU,
+               NO_CARRIER,
+               MACROVISION,
+               NO_ACCESS,
+               VTR
+       }
+       
+       [CCode (cname="struct v4l2_output")]
+       public struct Output
+       {
+               public uint32  index;
+               public unowned string name;
+               public uint32 type;
+               public uint32 audioset;
+               public uint32 modulator;
+               public StdId std;
+       }
+       
+       [CCode (cprefix="V4L2_OUTPUT_TYPE_")]
+       public enum OutputType
+       {
+               MODULATOR,
+               ANALOG,
+               ANALOGVGAOVERLAY
+       }
+       
+       [CCode (cname="struct v4l2_control")]
+       public struct Control
+       {
+               public uint32 id;
+               public int32 @value;
+       }
+       
+       [CCode (cname="struct v4l2_ext_control")]
+       public struct ExtControl
+       {
+               public uint32 id;
+               public int32 @value;
+               public int64 value64;
+               public void* reserved;
+       }
+       
+       [CCode (cname="struct v4l2_ext_controls")]
+       public struct ExtControls
+       {
+               public uint32 ctrl_class;
+               public uint32 count;
+               public uint32 error_idx;
+               public ExtControl* controls;
+       }
+       
+       [CCode (cprefix="V4L2_CTRL_CLASS_")]
+       public enum ControlClass
+       {
+               USER,
+               MPEG,
+               CAMERA
+       }
+       
+       [CCode (cprefix="V4L2_")]
+       public const uint32 CTRL_ID_MASK;
+       [CCode (cname="V4L2_CTRL_ID2CLASS")]
+       public uint32 ctrl_id2class (uint32 id);
+       [CCode (cname="V4L2_CTRL_DRIVER_PRIV")]
+       public uint32 ctrl_driver_priv (uint32 id);
+       
+       [CCode (cname="struct v4l2_queryctrl")]
+       public struct QueryControl
+       {
+               public uint32 id;
+               public ControlType type;
+               public unowned string name;
+               public int32 minimum;
+               public int32 maximum;
+               public int32 step;
+               public int32 default_value;
+               public uint32 flags;
+       }
+       
+       [CCode (cname="struct v4l2_querymenu")]
+       public struct QueryMenu
+       {
+               public uint32 id;
+               public uint32 index;
+               public unowned string name;
+               public uint32 reserved;
+       }
+       
+       [CCode (cprefix="V4L2_CTRL_FLAG_")]
+       public enum ControlFlags
+       {
+               DISABLED,
+               GRABBED,
+               READ_ONLY,
+               UPDATE,
+               INACTIVE,
+               SLIDER,
+               NEXT_CTRL
+       }
+       
+       [CCode (cprefix="V4L2_CID_")]
+       public enum UserClassControlIds
+       {
+               BASE,
+               USER_BASE,
+               PRIVATE_BASE,
+               USER_CLASS,
+               BRIGHTNESS,
+               CONTRAST,
+               SATURATION,
+               HUE,
+               AUDIO_VOLUME,
+               AUDIO_BALANCE,
+               AUDIO_BASS,
+               AUDIO_TREBLE,
+               AUDIO_MUTE,
+               AUDIO_LOUDNESS,
+               AUTO_WHITE_BALANCE,
+               DO_WHITE_BALANCE,
+               RED_BALANCE,
+               BLUE_BALANCE,
+               GAMMA,
+               EXPOSURE,
+               AUTOGAIN,
+               GAIN,
+               HFLIP,
+               VFLIP,
+               POWER_LINE_FREQUENCY,
+               HUE_AUTO,
+               WHITE_BALANCE_TEMPERATURE,
+               SHARPNESS,
+               BACKLIGHT_COMPENSATION,
+               CHROMA_AGC,
+               COLOR_KILLER,
+               LASTP1
+       }
+       
+       [CCode (cprefix="V4L2_CID_POWER_LINE_FREQUENCY_")]
+       public enum PowerLineFrequency
+       {
+               DISABLED,
+               50HZ,
+               60HZ
+       }
+       
+       [CCode (cprefix="V4L2_CID_MPEG_")]
+       public enum MpegClassControlIds
+       {
+               BASE,
+               CLASS,
+               STREAM_TYPE,
+               STREAM_PID_PMT,
+               STREAM_PID_AUDIO,
+               STREAM_PID_VIDEO,
+               STREAM_PID_PCR,
+               STREAM_PES_ID_AUDIO,
+               STREAM_PES_ID_VIDEO,
+               STREAM_VBI_FMT,
+               AUDIO_SAMPLING_FREQ,
+               AUDIO_ENCODING,
+               AUDIO_L1_BITRATE,
+               AUDIO_L2_BITRATE,
+               AUDIO_L3_BITRATE,
+               AUDIO_MODE,
+               AUDIO_MODE_EXTENSION,
+               AUDIO_EMPHASIS,
+               AUDIO_CRC,
+               AUDIO_MUTE,
+               VIDEO_ENCODING,
+               VIDEO_ASPECT,
+               VIDEO_B_FRAMES,
+               VIDEO_GOP_SIZE,
+               VIDEO_GOP_CLOSURE,
+               VIDEO_PULLDOWN,
+               VIDEO_BITRATE_MODE,
+               VIDEO_BITRATE,
+               VIDEO_BITRATE_PEAK,
+               VIDEO_TEMPORAL_DECIMATION,
+               VIDEO_MUTE,
+               VIDEO_MUTE_YUV 
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_STREAM_TYPE_")]
+       public enum MpegStreamType
+       {
+               MPEG2_PS,
+               MPEG2_TS,
+               MPEG1_SS,
+               MPEG2_DVD,
+               MPEG1_VCD,
+               MPEG2_SVCD
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_STREAM_VBI_FMT_")]
+       public enum MpegStreamVbiFmt
+       {
+               NONE,
+               IVTV
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_AUDIO_SAMPLING_FREQ_")]
+       public enum MpegAudioSamplingFreq
+       {
+               @44100,
+               @48000,
+               @32000
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_AUDIO_ENCODING_")]
+       public enum MpegAudioEncoding
+       {
+               LAYER_1,
+               LAYER_2,
+               LAYER_3
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_AUDIO_L1_BITRATE_")]
+       public enum MpegAudioL1Bitrate
+       {
+               32K,
+               64K,
+               96K,
+               128K,
+               160K,
+               192K,
+               224K,
+               256K,
+               288K,
+               320K,
+               352K,
+               384K,
+               416K,
+               448K
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_AUDIO_L2_BITRATE_")]
+       public enum MpegAudioL2Bitrate
+       {
+               32K,
+               48K,
+               56K,
+               64K,
+               80K,
+               96K,
+               112K,
+               128K,
+               160K,
+               192K,
+               224K,
+               256K,
+               320K,
+               384K
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_AUDIO_L3_BITRATE_")]
+       public enum MpegAudioL3Bitrate
+       {
+               32K,
+               40K,
+               48K,
+               56K,
+               64K,
+               80K,
+               96K,
+               112K,
+               128K,
+               160K,
+               192K,
+               224K,
+               256K,
+               320K,
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_AUDIO_MODE_")]
+       public enum MpegAudioMode
+       {
+               STEREO,
+               JOINT_STEREO,
+               DUAL,
+               MONO
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_AUDIO_MODE_EXTENSION_")]
+       public enum MpegAudioModeExtension
+       {
+               BOUND_4,
+               BOUND_8,
+               BOUND_12,
+               BOUND_16
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_AUDIO_EMPHASIS_")]
+       public enum MpegAudioEmphasis
+       {
+               NONE,
+               50_DIV_15_uS,
+               CCITT_J17,
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_AUDIO_CRC_")]
+       public enum MpegAudioCrc
+       {
+               NONE,
+               CRC16
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_VIDEO_ENCODING_")]
+       public enum MpegVideoEncoding
+       {
+               MPEG_1,
+               MPEG_2
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_VIDEO_ASPECT_")]
+       public enum MpegVideoAspect
+       {
+               1x1,
+               4x3,
+               16x9,
+               221x100
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_VIDEO_BITRATE_MODE_")]
+       public enum MpegVideoBitrateMode
+       {
+               VBR,
+               CBR
+       }
+       
+       [CCode (cprefix="V4L2_CID_MPEG_CX2341X_")]
+       public enum MpegCx2341xClassControlIds
+       {
+               BASE,
+               VIDEO_SPATIAL_FILTER_MODE,
+               VIDEO_SPATIAL_FILTER,
+               VIDEO_LUMA_SPATIAL_FILTER_TYPE,
+               VIDEO_CHROMA_SPATIAL_FILTER_TYPE,
+               VIDEO_TEMPORAL_FILTER_MODE,
+               VIDEO_TEMPORAL_FILTER,
+               VIDEO_MEDIAN_FILTER_TYPE,
+               VIDEO_LUMA_MEDIAN_FILTER_BOTTOM,
+               VIDEO_LUMA_MEDIAN_FILTER_TOP,
+               VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM,
+               VIDEO_CHROMA_MEDIAN_FILTER_TOP,
+               STREAM_INSERT_NAV_PACKETS
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_")]
+       public enum MpegCx2341xVideoSpatialFilterMode
+       {
+               MANUAL,
+               AUTO,
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_")]
+       public enum MpegCx2341xVideoLumaSpatialFilterType
+       {
+               OFF,
+               1D_HOR,
+               1D_VERT,
+               2D_HV_SEPARABLE,
+               2D_SYM_NON_SEPARABLE,
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_")]
+       public enum MpegCx2341xVideoChromaSpatialFilterType
+       {
+               OFF,
+               1D_HOR
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_")]
+       public enum MpegCx2341xVideoTemporalFilterMode
+       {
+               MANUAL,
+               AUTO
+       }
+       
+       [CCode (cprefix="V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_")]
+       public enum MpegCx2341xVideoMedianFilterType
+       {
+               OFF,
+               HOR,
+               VERT,
+               HOR_VERT,
+               DIAG
+       }
+       
+       [CCode (cprefix="V4L2_CID_")]
+       public enum CameraClassControlIds
+       {
+               CAMERA_CLASS_BASE,
+               CAMERA_CLASS,
+               EXPOSURE_AUTO,
+               EXPOSURE_ABSOLUTE,
+               EXPOSURE_AUTO_PRIORITY,
+               PAN_RELATIVE,
+               TILT_RELATIVE,
+               PAN_RESET,
+               TILT_RESET,
+               PAN_ABSOLUTE,
+               TILT_ABSOLUTE,
+               FOCUS_ABSOLUTE,
+               FOCUS_RELATIVE,
+               FOCUS_AUTO
+       }
+       
+       [CCode (cprefix="V4L2_EXPOSURE_")]
+       public enum ExposureAutoType
+       {
+               AUTO,
+               MANUAL,
+               SHUTTER_PRIORITY,
+               APERTURE_PRIORITY
+       }
+
+       [CCode (cname="struct v4l2_tuner")]
+       public struct Tuner
+       {
+               public uint32 index;
+               public unowned string name;
+               public TunerType type;
+               public uint32 capability;
+               public uint32 rangelow;
+               public uint32 rangehigh;
+               public uint32 rxsubchans;
+               public uint32 audmode;
+               public int32 @signal;
+               public int32 afc;
+       }
+       
+       [CCode (cname="struct v4l2_modulator")]
+       public struct Modulator
+       {
+               public uint32 index;
+               public unowned string name;
+               public uint32 capability;
+               public uint32 rangelow;
+               public uint32 rangehigh;
+               public uint32 txsubchans;
+       }
+       
+       [CCode (cprefix="V4L2_TUNER_CAP_")]
+       public enum TunerCapabilities
+       {
+               LOW,
+               NORM,
+               STEREO,
+               LANG2,
+               SAP,
+               LANG1
+       }
+       
+       [CCode (cprefix="V4L2_TUNER_SUB_")]
+       public enum TunerSubs
+       {
+               MONO,
+               STEREO,
+               LANG2,
+               SAP,
+               LANG1
+       }
+       
+       [CCode (cprefix="V4L2_TUNER_MODE_")]
+       public enum TunerModes
+       {
+               MONO,
+               STEREO,
+               LANG2,
+               SAP,
+               LANG1,
+               LANG1_LANG2
+       }
+       
+       [CCode (cname="struct v4l2_frequency")]
+       public struct Frequency
+       {
+               public uint32 tuner;
+               public TunerType type;
+               public uint32 frequency;
+       }
+       
+       [CCode (cname="struct v4l2_hw_freq_seek")]
+       public struct HwFreqSeek
+       {
+               public uint32 tuner;
+               public TunerType type;
+               public uint32 seek_upward;
+               public uint32 wrap_around;
+       }
+       
+       [CCode (cname="struct v4l2_audio")]
+       public struct Audio
+       {
+               public uint32 index;
+               public unowned string name;
+               public uint32 capability;
+               public uint32 mode;
+       }
+       
+       [CCode (cprefix="V4L2_AUDCAP_")]
+       public enum AudioCapabilities
+       {
+               STEREO,
+               AVL
+       }
+
+       [CCode (cprefix="V4L2_")]
+       public const uint32 AUDMODE_AVL;
+       
+       [CCode (cname="struct v4l2_audioout")]
+       public struct AudioOut
+       {
+               public uint32 index;
+               public unowned string name;
+               public uint32 capability;
+               public uint32 mode;
+       }
+       
+       [CCode (cprefix="V4L2_ENC_IDX_FRAME_")]
+       public enum EncIdxFrame
+       {
+               I,
+               P,
+               B,
+               MASK
+       }
+       
+       [CCode (cname="struct v4l2_enc_idx_entry")]
+       public struct EncIdxEntry
+       {
+               public uint64 offset;
+               public uint64 pts;
+               public uint32 length;
+               public uint32 flags;
+       }
+       
+       [CCode (cprefix="V4L2_")]
+       public const int ENC_IDX_ENTRIES;
+       
+       [CCode (cname="struct v4l2_enc_idx")]
+       public struct EncIdx
+       {
+               public uint32 entries;
+               public uint32 entries_cap;
+               public EncIdxEntry[V4L2_ENC_IDX_ENTRIES] entry;
+       }
+       
+       [CCode (cprefix="V4L2_ENC_CMD_")]
+       public enum EncCmd
+       {
+               START,
+               STOP,
+               PAUSE,
+               RESUME,
+               STOP_AT_GOP_END
+       }
+       
+       [CCode (cname="struct raw")]
+       public struct Raw
+       {
+               public uint32[8] data;
+       }
+       
+       [CCode (cname="struct v4l2_encoder_cmd")]
+       public struct EncoderCmd
+       {
+               public uint32 cmd;
+               public uint32 flags;
+               public Raw raw;
+       }
+       
+       [CCode (cname="struct v4l2_vbi_format")]
+       public struct VbiFormat
+       {
+               public uint32 sampling_rate;
+               public uint32 offset;
+               public uint32 samples_per_line;
+               public uint32 sample_format;
+               public int32[2] start;
+               public uint32[2] count;
+               public uint32 flags;
+       }
+       
+       [CCode (cprefix="V4L2_VBI_")]
+       public enum VbiFlags
+       {
+               UNSYNC,
+               INTERLACED
+       }
+       
+       [CCode (cname="struct v4l2_sliced_vbi_format")]
+       public struct SlicedVbiFormat
+       {
+               public uint16 service_set;
+               public uint16[2, 24] service_lines;
+               public uint32 io_size;
+               public uint32[] reserved;
+       }
+       
+       [CCode (cprefix="V4L2_SLICED_")]
+       public enum SlicedType
+       {
+               ELETEXT_B,
+               VPS,
+               CAPTION_525,
+               WSS_625,
+               VBI_525,
+               VBI_625,
+               T
+       }
+       
+       [CCode (cname="struct v4l2_sliced_vbi_cap")]
+       public struct SlicedVbiCap
+       {
+               public uint16 service_set;
+               public uint16[2, 24] service_lines;
+               public BufferType type;
+       }
+       
+       [CCode (cname="struct v4l2_sliced_vbi_data")]
+       public struct SlicedVbiData
+       {
+               public uint32 id;
+               public uint32 field;
+               public uint32 line;
+               public uint8[48] data;
+       }
+       
+       public struct Fmt
+       {
+               public PixelFormat pix;
+               public Window win;
+               public VbiFormat vbi;
+               public SlicedVbiFormat sliced;
+               public uint8[200] raw_data;
+       }
+       
+       [CCode (cname="struct v4l2_format")]
+       public struct Format
+       {
+               public BufferType type;
+               public Fmt fmt;
+       }
+       
+       public struct Parm
+       {
+               public CaptureParm capture;
+               public OutputParm output;
+               public uint8[200] raw_data;
+       }
+       
+       [CCode (cname="struct v4l2_streamparm")]
+       public struct StreamParm
+       {
+               public BufferType type;
+               public unowned Parm parm;
+       }
+       
+       [CCode (cprefix="V4L2_CHIP_MATCH_")]
+       public enum ChipMatch
+       {
+               HOST,
+               I2C_DRIVER,
+               I2C_ADDR
+       }
+       
+       [CCode (cname="struct v4l2_register")]
+       public struct Register
+       {
+               public uint32 match_type;
+               public uint32 match_chip;
+               public uint64 reg;
+               public uint64 val;
+       }
+       
+       [CCode (cname="struct v4l2_chip_ident")]
+       public struct ChipIdent
+       {
+               public uint32 match_type;
+               public uint32 match_chip;
+               public uint32 ident;
+               public uint32 revision;
+       }
+       
+       public const int VIDIOC_QUERYCAP;
+       public const int VIDIOC_RESERVED;
+       public const int VIDIOC_ENUM_FMT;
+       public const int VIDIOC_G_FMT;
+       public const int VIDIOC_S_FMT;
+       public const int VIDIOC_REQBUFS;
+       public const int VIDIOC_QUERYBUF;
+       public const int VIDIOC_G_FBUF;
+       public const int VIDIOC_S_FBUF;
+       public const int VIDIOC_OVERLAY;
+       public const int VIDIOC_QBUF;
+       public const int VIDIOC_DQBUF;
+       public const int VIDIOC_STREAMON;
+       public const int VIDIOC_STREAMOFF;
+       public const int VIDIOC_G_PARM;
+       public const int VIDIOC_S_PARM;
+       public const int VIDIOC_G_STD;
+       public const int VIDIOC_S_STD;
+       public const int VIDIOC_ENUMSTD;
+       public const int VIDIOC_ENUMINPUT;
+       public const int VIDIOC_G_CTRL;
+       public const int VIDIOC_S_CTRL;
+       public const int VIDIOC_G_TUNER;
+       public const int VIDIOC_S_TUNER;
+       public const int VIDIOC_G_AUDIO;
+       public const int VIDIOC_S_AUDIO;
+       public const int VIDIOC_QUERYCTRL;
+       public const int VIDIOC_QUERYMENU;
+       public const int VIDIOC_G_INPUT;
+       public const int VIDIOC_S_INPUT;
+       public const int VIDIOC_G_OUTPUT;
+       public const int VIDIOC_S_OUTPUT;
+       public const int VIDIOC_ENUMOUTPUT;
+       public const int VIDIOC_G_AUDOUT;
+       public const int VIDIOC_S_AUDOUT;
+       public const int VIDIOC_G_MODULATOR;
+       public const int VIDIOC_S_MODULATOR;
+       public const int VIDIOC_G_FREQUENCY;
+       public const int VIDIOC_S_FREQUENCY;
+       public const int VIDIOC_CROPCAP;
+       public const int VIDIOC_G_CROP;
+       public const int VIDIOC_S_CROP;
+       public const int VIDIOC_G_JPEGCOMP;
+       public const int VIDIOC_S_JPEGCOMP;
+       public const int VIDIOC_QUERYSTD;
+       public const int VIDIOC_TRY_FMT;
+       public const int VIDIOC_ENUMAUDIO;
+       public const int VIDIOC_ENUMAUDOUT;
+       public const int VIDIOC_G_PRIORITY;
+       public const int VIDIOC_S_PRIORITY;
+       public const int VIDIOC_G_SLICED_VBI_CAP;
+       public const int VIDIOC_LOG_STATUS;
+       public const int VIDIOC_G_EXT_CTRLS;
+       public const int VIDIOC_S_EXT_CTRLS;
+       public const int VIDIOC_TRY_EXT_CTRLS;
+       public const int VIDIOC_ENUM_FRAMESIZES;
+       public const int VIDIOC_ENUM_FRAMEINTERVALS;
+       public const int VIDIOC_G_ENC_INDEX;
+       public const int VIDIOC_ENCODER_CMD;
+       public const int VIDIOC_TRY_ENCODER_CMD;
+       public const int VIDIOC_DBG_S_REGISTER;
+       public const int VIDIOC_DBG_G_REGISTER;
+       public const int VIDIOC_G_CHIP_IDENT;
+       public const int VIDIOC_S_HW_FREQ_SEEK;
+       public const int VIDIOC_OVERLAY_OLD;
+       public const int VIDIOC_S_PARM_OLD;
+       public const int VIDIOC_S_CTRL_OLD;
+       public const int VIDIOC_G_AUDIO_OLD;
+       public const int VIDIOC_G_AUDOUT_OLD;
+       public const int VIDIOC_CROPCAP_OLD;
+       public const int BASE_VIDIOC_PRIVATE;
+}