packages feed

bindings-linux-videodev2 (empty) → 0.1

raw patch · 9 files changed

+3413/−0 lines, 9 filesdep +basedep +bindings-DSLdep +ioctlsetup-changed

Dependencies added: base, bindings-DSL, ioctl

Files

+ Bindings/Linux/VideoDev2.hsc view
@@ -0,0 +1,1295 @@+{-# LANGUAGE DeriveDataTypeable, ForeignFunctionInterface, MultiParamTypeClasses, StandaloneDeriving, TypeSynonymInstances #-}+-- ...edit the generating script instead of this machine-generated file...+#include <bindings.dsl.h>+#include <sys/time.h>+#define __OLD_VIDIOC_+#include "videodev2.h"+-- | Bindings for Video For Linux Two (v4l2), wrapping:+--   <file:///usr/include/linux/videodev2.h>+--   Upstream documentation at:+--   <http://linuxtv.org/downloads/v4l-dvb-apis/>+module Bindings.Linux.VideoDev2 where+import System.Posix.IOCtl+#strict_import+import Foreign(unsafePerformIO)+import Data.Typeable (Typeable)+deriving instance Typeable C'timeval+deriving instance Typeable C'v4l2_rect+deriving instance Typeable C'v4l2_fract+deriving instance Typeable C'v4l2_capability+deriving instance Typeable C'v4l2_pix_format+deriving instance Typeable C'v4l2_fmtdesc+deriving instance Typeable C'v4l2_frmsize_discrete+deriving instance Typeable C'v4l2_frmsize_stepwise+deriving instance Typeable C'v4l2_frmsizeenum+deriving instance Typeable C'v4l2_frmsizeenum_u+deriving instance Typeable C'v4l2_frmival_stepwise+deriving instance Typeable C'v4l2_frmivalenum+deriving instance Typeable C'v4l2_frmivalenum_u+deriving instance Typeable C'v4l2_timecode+deriving instance Typeable C'v4l2_jpegcompression+deriving instance Typeable C'v4l2_requestbuffers+deriving instance Typeable C'v4l2_buffer_u+deriving instance Typeable C'v4l2_buffer+deriving instance Typeable C'v4l2_framebuffer+deriving instance Typeable C'v4l2_clip+deriving instance Typeable C'v4l2_window+deriving instance Typeable C'v4l2_captureparm+deriving instance Typeable C'v4l2_outputparm+deriving instance Typeable C'v4l2_cropcap+deriving instance Typeable C'v4l2_crop+deriving instance Typeable C'v4l2_standard+deriving instance Typeable C'v4l2_input+deriving instance Typeable C'v4l2_output+deriving instance Typeable C'v4l2_control+deriving instance Typeable C'v4l2_ext_control+deriving instance Typeable C'v4l2_ext_controls+deriving instance Typeable C'v4l2_ext_control_u+deriving instance Typeable C'v4l2_queryctrl+deriving instance Typeable C'v4l2_querymenu+deriving instance Typeable C'v4l2_tuner+deriving instance Typeable C'v4l2_modulator+deriving instance Typeable C'v4l2_frequency+deriving instance Typeable C'v4l2_hw_freq_seek+deriving instance Typeable C'v4l2_rds_data+deriving instance Typeable C'v4l2_audio+deriving instance Typeable C'v4l2_audioout+deriving instance Typeable C'v4l2_enc_idx_entry+deriving instance Typeable C'v4l2_enc_idx+deriving instance Typeable C'v4l2_vbi_format+deriving instance Typeable C'v4l2_sliced_vbi_format+deriving instance Typeable C'v4l2_sliced_vbi_cap+deriving instance Typeable C'v4l2_sliced_vbi_data+deriving instance Typeable C'v4l2_mpeg_vbi_itv0_line+deriving instance Typeable C'v4l2_mpeg_vbi_fmt_ivtv+deriving instance Typeable C'v4l2_format+deriving instance Typeable C'v4l2_mpeg_vbi_fmt_ivtv_u+deriving instance Typeable C'v4l2_streamparm+deriving instance Typeable C'v4l2_dbg_match+deriving instance Typeable C'v4l2_dbg_register+deriving instance Typeable C'v4l2_dbg_chip_ident+deriving instance Typeable C'v4l2_format_u+deriving instance Typeable C'v4l2_encoder_cmd_u+deriving instance Typeable C'v4l2_encoder_cmd+deriving instance Typeable C'v4l2_dbg_match_u+deriving instance Typeable C'v4l2_streamparm_u+#starttype struct timeval+#field tv_sec , CLong+#field tv_usec , CLong+#stoptype+#synonym_t v4l2_std_id , Word64+#cinline v4l2_fourcc , Word8 -> Word8 -> Word8 -> Word8 -> IO Word32+#cinline V4L2_FIELD_HAS_TOP , <v4l2_field> -> IO CInt+#cinline V4L2_FIELD_HAS_BOTTOM , <v4l2_field> -> IO CInt+#cinline V4L2_FIELD_HAS_BOTH , <v4l2_field> -> IO CInt+#cinline V4L2_CTRL_ID2CLASS , Word32 -> IO Word32+#cinline V4L2_CTRL_DRIVER_PRIV , Word32 -> IO Word32+#num VIDEO_MAX_FRAME+#num VID_TYPE_CAPTURE+#num VID_TYPE_TUNER+#num VID_TYPE_TELETEXT+#num VID_TYPE_OVERLAY+#num VID_TYPE_CHROMAKEY+#num VID_TYPE_CLIPPING+#num VID_TYPE_FRAMERAM+#num VID_TYPE_SCALES+#num VID_TYPE_MONOCHROME+#num VID_TYPE_SUBCAPTURE+#num VID_TYPE_MPEG_DECODER+#num VID_TYPE_MPEG_ENCODER+#num VID_TYPE_MJPEG_DECODER+#num VID_TYPE_MJPEG_ENCODER+#integral_t enum v4l2_field+#num V4L2_FIELD_ANY+#num V4L2_FIELD_NONE+#num V4L2_FIELD_TOP+#num V4L2_FIELD_BOTTOM+#num V4L2_FIELD_INTERLACED+#num V4L2_FIELD_SEQ_TB+#num V4L2_FIELD_SEQ_BT+#num V4L2_FIELD_ALTERNATE+#num V4L2_FIELD_INTERLACED_TB+#num V4L2_FIELD_INTERLACED_BT+#integral_t enum v4l2_buf_type+#num V4L2_BUF_TYPE_VIDEO_CAPTURE+#num V4L2_BUF_TYPE_VIDEO_OUTPUT+#num V4L2_BUF_TYPE_VIDEO_OVERLAY+#num V4L2_BUF_TYPE_VBI_CAPTURE+#num V4L2_BUF_TYPE_VBI_OUTPUT+#num V4L2_BUF_TYPE_SLICED_VBI_CAPTURE+#num V4L2_BUF_TYPE_SLICED_VBI_OUTPUT+#num V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY+#num V4L2_BUF_TYPE_PRIVATE+#integral_t enum v4l2_ctrl_type+#num V4L2_CTRL_TYPE_INTEGER+#num V4L2_CTRL_TYPE_BOOLEAN+#num V4L2_CTRL_TYPE_MENU+#num V4L2_CTRL_TYPE_BUTTON+#num V4L2_CTRL_TYPE_INTEGER64+#num V4L2_CTRL_TYPE_CTRL_CLASS+#num V4L2_CTRL_TYPE_STRING+#integral_t enum v4l2_tuner_type+#num V4L2_TUNER_RADIO+#num V4L2_TUNER_ANALOG_TV+#num V4L2_TUNER_DIGITAL_TV+#integral_t enum v4l2_memory+#num V4L2_MEMORY_MMAP+#num V4L2_MEMORY_USERPTR+#num V4L2_MEMORY_OVERLAY+#integral_t enum v4l2_colorspace+#num V4L2_COLORSPACE_SMPTE170M+#num V4L2_COLORSPACE_SMPTE240M+#num V4L2_COLORSPACE_REC709+#num V4L2_COLORSPACE_BT878+#num V4L2_COLORSPACE_470_SYSTEM_M+#num V4L2_COLORSPACE_470_SYSTEM_BG+#num V4L2_COLORSPACE_JPEG+#num V4L2_COLORSPACE_SRGB+#integral_t enum v4l2_priority+#num V4L2_PRIORITY_UNSET+#num V4L2_PRIORITY_BACKGROUND+#num V4L2_PRIORITY_INTERACTIVE+#num V4L2_PRIORITY_RECORD+#num V4L2_PRIORITY_DEFAULT+#starttype struct v4l2_rect+#field left , Int32+#field top , Int32+#field width , Int32+#field height , Int32+#stoptype+#starttype struct v4l2_fract+#field numerator , Word32+#field denominator , Word32+#stoptype+#starttype struct v4l2_capability+#array_field driver , Word8+#array_field card , Word8+#array_field bus_info , Word8+#field version , Word32+#field capabilities , Word32+#array_field reserved , Word32+#stoptype+#num V4L2_CAP_VIDEO_CAPTURE+#num V4L2_CAP_VIDEO_OUTPUT+#num V4L2_CAP_VIDEO_OVERLAY+#num V4L2_CAP_VBI_CAPTURE+#num V4L2_CAP_VBI_OUTPUT+#num V4L2_CAP_SLICED_VBI_CAPTURE+#num V4L2_CAP_SLICED_VBI_OUTPUT+#num V4L2_CAP_RDS_CAPTURE+#num V4L2_CAP_VIDEO_OUTPUT_OVERLAY+#num V4L2_CAP_HW_FREQ_SEEK+#num V4L2_CAP_RDS_OUTPUT+#num V4L2_CAP_TUNER+#num V4L2_CAP_AUDIO+#num V4L2_CAP_RADIO+#num V4L2_CAP_MODULATOR+#num V4L2_CAP_READWRITE+#num V4L2_CAP_ASYNCIO+#num V4L2_CAP_STREAMING+#starttype struct v4l2_pix_format+#field width , Word32+#field height , Word32+#field pixelformat , Word32+#field field , <v4l2_field>+#field bytesperline , Word32+#field sizeimage , Word32+#field colorspace , <v4l2_colorspace>+#field priv , Word32+#stoptype+#num V4L2_PIX_FMT_RGB332+#num V4L2_PIX_FMT_RGB444+#num V4L2_PIX_FMT_RGB555+#num V4L2_PIX_FMT_RGB565+#num V4L2_PIX_FMT_RGB555X+#num V4L2_PIX_FMT_RGB565X+#num V4L2_PIX_FMT_BGR24+#num V4L2_PIX_FMT_RGB24+#num V4L2_PIX_FMT_BGR32+#num V4L2_PIX_FMT_RGB32+#num V4L2_PIX_FMT_GREY+#num V4L2_PIX_FMT_Y16+#num V4L2_PIX_FMT_PAL8+#num V4L2_PIX_FMT_YVU410+#num V4L2_PIX_FMT_YVU420+#num V4L2_PIX_FMT_YUYV+#num V4L2_PIX_FMT_YYUV+#num V4L2_PIX_FMT_YVYU+#num V4L2_PIX_FMT_UYVY+#num V4L2_PIX_FMT_VYUY+#num V4L2_PIX_FMT_YUV422P+#num V4L2_PIX_FMT_YUV411P+#num V4L2_PIX_FMT_Y41P+#num V4L2_PIX_FMT_YUV444+#num V4L2_PIX_FMT_YUV555+#num V4L2_PIX_FMT_YUV565+#num V4L2_PIX_FMT_YUV32+#num V4L2_PIX_FMT_YUV410+#num V4L2_PIX_FMT_YUV420+#num V4L2_PIX_FMT_HI240+#num V4L2_PIX_FMT_HM12+#num V4L2_PIX_FMT_NV12+#num V4L2_PIX_FMT_NV21+#num V4L2_PIX_FMT_NV16+#num V4L2_PIX_FMT_NV61+#num V4L2_PIX_FMT_SBGGR8+#num V4L2_PIX_FMT_SGBRG8+#num V4L2_PIX_FMT_SGRBG8+#num V4L2_PIX_FMT_SGRBG10+#num V4L2_PIX_FMT_SGRBG10DPCM8+#num V4L2_PIX_FMT_SBGGR16+#num V4L2_PIX_FMT_MJPEG+#num V4L2_PIX_FMT_JPEG+#num V4L2_PIX_FMT_DV+#num V4L2_PIX_FMT_MPEG+#num V4L2_PIX_FMT_WNVA+#num V4L2_PIX_FMT_SN9C10X+#num V4L2_PIX_FMT_SN9C20X_I420+#num V4L2_PIX_FMT_PWC1+#num V4L2_PIX_FMT_PWC2+#num V4L2_PIX_FMT_ET61X251+#num V4L2_PIX_FMT_SPCA501+#num V4L2_PIX_FMT_SPCA505+#num V4L2_PIX_FMT_SPCA508+#num V4L2_PIX_FMT_SPCA561+#num V4L2_PIX_FMT_PAC207+#num V4L2_PIX_FMT_MR97310A+#num V4L2_PIX_FMT_SQ905C+#num V4L2_PIX_FMT_PJPG+#num V4L2_PIX_FMT_OV511+#num V4L2_PIX_FMT_OV518+#starttype struct v4l2_fmtdesc+#field index , Word32+#field type , <v4l2_buf_type>+#field flags , Word32+#array_field description , Word8+#field pixelformat , Word32+#array_field reserved , Word32+#stoptype+#num V4L2_FMT_FLAG_COMPRESSED+#num V4L2_FMT_FLAG_EMULATED+#integral_t enum v4l2_frmsizetypes+#num V4L2_FRMSIZE_TYPE_DISCRETE+#num V4L2_FRMSIZE_TYPE_CONTINUOUS+#num V4L2_FRMSIZE_TYPE_STEPWISE+#starttype struct v4l2_frmsize_discrete+#field width , Word32+#field height , Word32+#stoptype+#starttype struct v4l2_frmsize_stepwise+#field min_width , Word32+#field max_width , Word32+#field step_width , Word32+#field min_height , Word32+#field max_height , Word32+#field step_height , Word32+#stoptype+#starttype union v4l2_frmsizeenum_u+#union_field discrete , <v4l2_frmsize_discrete>+#union_field stepwise , <v4l2_frmsize_stepwise>+#stoptype+#starttype struct v4l2_frmsizeenum+#field index , Word32+#field pixel_format , Word32+#field type , Word32+#field u , <v4l2_frmsizeenum_u>+#array_field reserved , Word32+#stoptype+#integral_t enum v4l2_frmivaltypes+#num V4L2_FRMIVAL_TYPE_DISCRETE+#num V4L2_FRMIVAL_TYPE_CONTINUOUS+#num V4L2_FRMIVAL_TYPE_STEPWISE+#starttype struct v4l2_frmival_stepwise+#field min , <v4l2_fract>+#field max , <v4l2_fract>+#field step , <v4l2_fract>+#stoptype+#starttype union v4l2_frmivalenum_u+#union_field discrete , <v4l2_fract>+#union_field stepwise , <v4l2_frmival_stepwise>+#stoptype+#starttype struct v4l2_frmivalenum+#field index , Word32+#field pixel_format , Word32+#field width , Word32+#field height , Word32+#field type , Word32+#field u , <v4l2_frmivalenum_u>+#array_field reserved , Word32+#stoptype+#starttype struct v4l2_timecode+#field type , Word32+#field flags , Word32+#field frames , Word8+#field seconds , Word8+#field minutes , Word8+#field hours , Word8+#array_field userbits , Word8+#stoptype+#num V4L2_TC_TYPE_24FPS+#num V4L2_TC_TYPE_25FPS+#num V4L2_TC_TYPE_30FPS+#num V4L2_TC_TYPE_50FPS+#num V4L2_TC_TYPE_60FPS+#num V4L2_TC_FLAG_DROPFRAME+#num V4L2_TC_FLAG_COLORFRAME+#num V4L2_TC_USERBITS_field+#num V4L2_TC_USERBITS_USERDEFINED+#num V4L2_TC_USERBITS_8BITCHARS+#starttype struct v4l2_jpegcompression+#field quality , CInt+#field APPn , CInt+#field APP_len , CInt+#array_field APP_data , CChar+#field COM_len , CInt+#array_field COM_data , CChar+#field jpeg_markers , Word32+#stoptype+#num V4L2_JPEG_MARKER_DHT+#num V4L2_JPEG_MARKER_DQT+#num V4L2_JPEG_MARKER_DRI+#num V4L2_JPEG_MARKER_COM+#num V4L2_JPEG_MARKER_APP+#starttype struct v4l2_requestbuffers+#field count , Word32+#field type , <v4l2_buf_type>+#field memory , <v4l2_memory>+#array_field reserved , Word32+#stoptype+#starttype union v4l2_buffer_u+#union_field offset , Word32+#union_field userptr , CULong+#stoptype+#starttype struct v4l2_buffer+#field index , Word32+#field type , <v4l2_buf_type>+#field bytesused , Word32+#field flags , Word32+#field field , <v4l2_field>+#field timestamp , <timeval>+#field timecode , <v4l2_timecode>+#field sequence , Word32+#field memory , <v4l2_memory>+#field u , <v4l2_buffer_u>+#field length , Word32+#field input , Word32+#field reserved , Word32+#stoptype+#num V4L2_BUF_FLAG_MAPPED+#num V4L2_BUF_FLAG_QUEUED+#num V4L2_BUF_FLAG_DONE+#num V4L2_BUF_FLAG_KEYFRAME+#num V4L2_BUF_FLAG_PFRAME+#num V4L2_BUF_FLAG_BFRAME+#num V4L2_BUF_FLAG_TIMECODE+#num V4L2_BUF_FLAG_INPUT+#starttype struct v4l2_framebuffer+#field capability , Word32+#field flags , Word32+#field base , Ptr ()+#field fmt , <v4l2_pix_format>+#stoptype+#num V4L2_FBUF_CAP_EXTERNOVERLAY+#num V4L2_FBUF_CAP_CHROMAKEY+#num V4L2_FBUF_CAP_LIST_CLIPPING+#num V4L2_FBUF_CAP_BITMAP_CLIPPING+#num V4L2_FBUF_CAP_LOCAL_ALPHA+#num V4L2_FBUF_CAP_GLOBAL_ALPHA+#num V4L2_FBUF_CAP_LOCAL_INV_ALPHA+#num V4L2_FBUF_FLAG_PRIMARY+#num V4L2_FBUF_FLAG_OVERLAY+#num V4L2_FBUF_FLAG_CHROMAKEY+#num V4L2_FBUF_FLAG_LOCAL_ALPHA+#num V4L2_FBUF_FLAG_GLOBAL_ALPHA+#num V4L2_FBUF_FLAG_LOCAL_INV_ALPHA+#starttype struct v4l2_clip+#field c , <v4l2_rect>+#field next , Ptr <v4l2_clip>+#stoptype+#starttype struct v4l2_window+#field w , <v4l2_rect>+#field field , <v4l2_field>+#field chromakey , Word32+#field clips , Ptr <v4l2_clip>+#field clipcount , Word32+#field bitmap , Ptr ()+#field global_alpha , Word8+#stoptype+#starttype struct v4l2_captureparm+#field capability , Word32+#field capturemode , Word32+#field timeperframe , <v4l2_fract>+#field extendedmode , Word32+#field readbuffers , Word32+#array_field reserved , Word32+#stoptype+#num V4L2_MODE_HIGHQUALITY+#num V4L2_CAP_TIMEPERFRAME+#starttype struct v4l2_outputparm+#field capability , Word32+#field outputmode , Word32+#field timeperframe , <v4l2_fract>+#field extendedmode , Word32+#field writebuffers , Word32+#array_field reserved , Word32+#stoptype+#starttype struct v4l2_cropcap+#field type , <v4l2_buf_type>+#field bounds , <v4l2_rect>+#field defrect , <v4l2_rect>+#field pixelaspect , <v4l2_fract>+#stoptype+#starttype struct v4l2_crop+#field type , <v4l2_buf_type>+#field c , <v4l2_rect>+#stoptype+#num V4L2_STD_PAL_B+#num V4L2_STD_PAL_B1+#num V4L2_STD_PAL_G+#num V4L2_STD_PAL_H+#num V4L2_STD_PAL_I+#num V4L2_STD_PAL_D+#num V4L2_STD_PAL_D1+#num V4L2_STD_PAL_K+#num V4L2_STD_PAL_M+#num V4L2_STD_PAL_N+#num V4L2_STD_PAL_Nc+#num V4L2_STD_PAL_60+#num V4L2_STD_NTSC_M+#num V4L2_STD_NTSC_M_JP+#num V4L2_STD_NTSC_443+#num V4L2_STD_NTSC_M_KR+#num V4L2_STD_SECAM_B+#num V4L2_STD_SECAM_D+#num V4L2_STD_SECAM_G+#num V4L2_STD_SECAM_H+#num V4L2_STD_SECAM_K+#num V4L2_STD_SECAM_K1+#num V4L2_STD_SECAM_L+#num V4L2_STD_SECAM_LC+#num V4L2_STD_ATSC_8_VSB+#num V4L2_STD_ATSC_16_VSB+#num V4L2_STD_MN+#num V4L2_STD_B+#num V4L2_STD_GH+#num V4L2_STD_DK+#num V4L2_STD_PAL_BG+#num V4L2_STD_PAL_DK+#num V4L2_STD_PAL+#num V4L2_STD_NTSC+#num V4L2_STD_SECAM_DK+#num V4L2_STD_SECAM+#num V4L2_STD_525_60+#num V4L2_STD_625_50+#num V4L2_STD_ATSC+#num V4L2_STD_UNKNOWN+#num V4L2_STD_ALL+#starttype struct v4l2_standard+#field index , Word32+#field id , <v4l2_std_id>+#array_field name , Word8+#field frameperiod , <v4l2_fract>+#field framelines , Word32+#array_field reserved , Word32+#stoptype+#starttype struct v4l2_input+#field index , Word32+#array_field name , Word8+#field type , Word32+#field audioset , Word32+#field tuner , Word32+#field std , <v4l2_std_id>+#field status , Word32+#array_field reserved , Word32+#stoptype+#num V4L2_INPUT_TYPE_TUNER+#num V4L2_INPUT_TYPE_CAMERA+#num V4L2_IN_ST_NO_POWER+#num V4L2_IN_ST_NO_SIGNAL+#num V4L2_IN_ST_NO_COLOR+#num V4L2_IN_ST_HFLIP+#num V4L2_IN_ST_VFLIP+#num V4L2_IN_ST_NO_H_LOCK+#num V4L2_IN_ST_COLOR_KILL+#num V4L2_IN_ST_NO_SYNC+#num V4L2_IN_ST_NO_EQU+#num V4L2_IN_ST_NO_CARRIER+#num V4L2_IN_ST_MACROVISION+#num V4L2_IN_ST_NO_ACCESS+#num V4L2_IN_ST_VTR+#starttype struct v4l2_output+#field index , Word32+#array_field name , Word8+#field type , Word32+#field audioset , Word32+#field modulator , Word32+#field std , <v4l2_std_id>+#array_field reserved , Word32+#stoptype+#num V4L2_OUTPUT_TYPE_MODULATOR+#num V4L2_OUTPUT_TYPE_ANALOG+#num V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY+#starttype struct v4l2_control+#field id , Word32+#field value , Int32+#stoptype+#starttype union v4l2_ext_control_u+#union_field value , Int32+#union_field value64 , Int64+#union_field string , Ptr CChar+#stoptype+#starttype struct v4l2_ext_control+#field id , Word32+#field size , Word32+#array_field reserved2 , Word32+#field u , <v4l2_ext_control_u>+#stoptype+#starttype struct v4l2_ext_controls+#field ctrl_class , Word32+#field count , Word32+#field error_idx , Word32+#array_field reserved , Word32+#field controls , Ptr <v4l2_ext_control>+#stoptype+#num V4L2_CTRL_CLASS_USER+#num V4L2_CTRL_CLASS_MPEG+#num V4L2_CTRL_CLASS_CAMERA+#num V4L2_CTRL_CLASS_FM_TX+#num V4L2_CTRL_ID_MASK+#starttype struct v4l2_queryctrl+#field id , Word32+#field type , <v4l2_ctrl_type>+#array_field name , Word8+#field minimum , Int32+#field maximum , Int32+#field step , Int32+#field default_value , Int32+#field flags , Word32+#array_field reserved , Word32+#stoptype+#starttype struct v4l2_querymenu+#field id , Word32+#field index , Word32+#array_field name , Word8+#field reserved , Word32+#stoptype+#num V4L2_CTRL_FLAG_DISABLED+#num V4L2_CTRL_FLAG_GRABBED+#num V4L2_CTRL_FLAG_READ_ONLY+#num V4L2_CTRL_FLAG_UPDATE+#num V4L2_CTRL_FLAG_INACTIVE+#num V4L2_CTRL_FLAG_SLIDER+#num V4L2_CTRL_FLAG_WRITE_ONLY+#num V4L2_CTRL_FLAG_NEXT_CTRL+#num V4L2_CID_BASE+#num V4L2_CID_USER_BASE+#num V4L2_CID_PRIVATE_BASE+#num V4L2_CID_USER_CLASS+#num V4L2_CID_BRIGHTNESS+#num V4L2_CID_CONTRAST+#num V4L2_CID_SATURATION+#num V4L2_CID_HUE+#num V4L2_CID_AUDIO_VOLUME+#num V4L2_CID_AUDIO_BALANCE+#num V4L2_CID_AUDIO_BASS+#num V4L2_CID_AUDIO_TREBLE+#num V4L2_CID_AUDIO_MUTE+#num V4L2_CID_AUDIO_LOUDNESS+#num V4L2_CID_BLACK_LEVEL+#num V4L2_CID_AUTO_WHITE_BALANCE+#num V4L2_CID_DO_WHITE_BALANCE+#num V4L2_CID_RED_BALANCE+#num V4L2_CID_BLUE_BALANCE+#num V4L2_CID_GAMMA+#num V4L2_CID_WHITENESS+#num V4L2_CID_EXPOSURE+#num V4L2_CID_AUTOGAIN+#num V4L2_CID_GAIN+#num V4L2_CID_HFLIP+#num V4L2_CID_VFLIP+#num V4L2_CID_HCENTER+#num V4L2_CID_VCENTER+#num V4L2_CID_POWER_LINE_FREQUENCY+#integral_t enum v4l2_power_line_frequency+#num V4L2_CID_POWER_LINE_FREQUENCY_DISABLED+#num V4L2_CID_POWER_LINE_FREQUENCY_50HZ+#num V4L2_CID_POWER_LINE_FREQUENCY_60HZ+#num V4L2_CID_HUE_AUTO+#num V4L2_CID_WHITE_BALANCE_TEMPERATURE+#num V4L2_CID_SHARPNESS+#num V4L2_CID_BACKLIGHT_COMPENSATION+#num V4L2_CID_CHROMA_AGC+#num V4L2_CID_COLOR_KILLER+#num V4L2_CID_COLORFX+#integral_t enum v4l2_colorfx+#num V4L2_COLORFX_NONE+#num V4L2_COLORFX_BW+#num V4L2_COLORFX_SEPIA+#num V4L2_CID_AUTOBRIGHTNESS+#num V4L2_CID_BAND_STOP_FILTER+#num V4L2_CID_LASTP1+#num V4L2_CID_MPEG_BASE+#num V4L2_CID_MPEG_CLASS+#num V4L2_CID_MPEG_STREAM_TYPE+#integral_t enum v4l2_mpeg_stream_type+#num V4L2_MPEG_STREAM_TYPE_MPEG2_PS+#num V4L2_MPEG_STREAM_TYPE_MPEG2_TS+#num V4L2_MPEG_STREAM_TYPE_MPEG1_SS+#num V4L2_MPEG_STREAM_TYPE_MPEG2_DVD+#num V4L2_MPEG_STREAM_TYPE_MPEG1_VCD+#num V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD+#num V4L2_CID_MPEG_STREAM_PID_PMT+#num V4L2_CID_MPEG_STREAM_PID_AUDIO+#num V4L2_CID_MPEG_STREAM_PID_VIDEO+#num V4L2_CID_MPEG_STREAM_PID_PCR+#num V4L2_CID_MPEG_STREAM_PES_ID_AUDIO+#num V4L2_CID_MPEG_STREAM_PES_ID_VIDEO+#num V4L2_CID_MPEG_STREAM_VBI_FMT+#integral_t enum v4l2_mpeg_stream_vbi_fmt+#num V4L2_MPEG_STREAM_VBI_FMT_NONE+#num V4L2_MPEG_STREAM_VBI_FMT_IVTV+#num V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ+#integral_t enum v4l2_mpeg_audio_sampling_freq+#num V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100+#num V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000+#num V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000+#num V4L2_CID_MPEG_AUDIO_ENCODING+#integral_t enum v4l2_mpeg_audio_encoding+#num V4L2_MPEG_AUDIO_ENCODING_LAYER_1+#num V4L2_MPEG_AUDIO_ENCODING_LAYER_2+#num V4L2_MPEG_AUDIO_ENCODING_LAYER_3+#num V4L2_MPEG_AUDIO_ENCODING_AAC+#num V4L2_MPEG_AUDIO_ENCODING_AC3+#num V4L2_CID_MPEG_AUDIO_L1_BITRATE+#integral_t enum v4l2_mpeg_audio_l1_bitrate+#num V4L2_MPEG_AUDIO_L1_BITRATE_32K+#num V4L2_MPEG_AUDIO_L1_BITRATE_64K+#num V4L2_MPEG_AUDIO_L1_BITRATE_96K+#num V4L2_MPEG_AUDIO_L1_BITRATE_128K+#num V4L2_MPEG_AUDIO_L1_BITRATE_160K+#num V4L2_MPEG_AUDIO_L1_BITRATE_192K+#num V4L2_MPEG_AUDIO_L1_BITRATE_224K+#num V4L2_MPEG_AUDIO_L1_BITRATE_256K+#num V4L2_MPEG_AUDIO_L1_BITRATE_288K+#num V4L2_MPEG_AUDIO_L1_BITRATE_320K+#num V4L2_MPEG_AUDIO_L1_BITRATE_352K+#num V4L2_MPEG_AUDIO_L1_BITRATE_384K+#num V4L2_MPEG_AUDIO_L1_BITRATE_416K+#num V4L2_MPEG_AUDIO_L1_BITRATE_448K+#num V4L2_CID_MPEG_AUDIO_L2_BITRATE+#integral_t enum v4l2_mpeg_audio_l2_bitrate+#num V4L2_MPEG_AUDIO_L2_BITRATE_32K+#num V4L2_MPEG_AUDIO_L2_BITRATE_48K+#num V4L2_MPEG_AUDIO_L2_BITRATE_56K+#num V4L2_MPEG_AUDIO_L2_BITRATE_64K+#num V4L2_MPEG_AUDIO_L2_BITRATE_80K+#num V4L2_MPEG_AUDIO_L2_BITRATE_96K+#num V4L2_MPEG_AUDIO_L2_BITRATE_112K+#num V4L2_MPEG_AUDIO_L2_BITRATE_128K+#num V4L2_MPEG_AUDIO_L2_BITRATE_160K+#num V4L2_MPEG_AUDIO_L2_BITRATE_192K+#num V4L2_MPEG_AUDIO_L2_BITRATE_224K+#num V4L2_MPEG_AUDIO_L2_BITRATE_256K+#num V4L2_MPEG_AUDIO_L2_BITRATE_320K+#num V4L2_MPEG_AUDIO_L2_BITRATE_384K+#num V4L2_CID_MPEG_AUDIO_L3_BITRATE+#integral_t enum v4l2_mpeg_audio_l3_bitrate+#num V4L2_MPEG_AUDIO_L3_BITRATE_32K+#num V4L2_MPEG_AUDIO_L3_BITRATE_40K+#num V4L2_MPEG_AUDIO_L3_BITRATE_48K+#num V4L2_MPEG_AUDIO_L3_BITRATE_56K+#num V4L2_MPEG_AUDIO_L3_BITRATE_64K+#num V4L2_MPEG_AUDIO_L3_BITRATE_80K+#num V4L2_MPEG_AUDIO_L3_BITRATE_96K+#num V4L2_MPEG_AUDIO_L3_BITRATE_112K+#num V4L2_MPEG_AUDIO_L3_BITRATE_128K+#num V4L2_MPEG_AUDIO_L3_BITRATE_160K+#num V4L2_MPEG_AUDIO_L3_BITRATE_192K+#num V4L2_MPEG_AUDIO_L3_BITRATE_224K+#num V4L2_MPEG_AUDIO_L3_BITRATE_256K+#num V4L2_MPEG_AUDIO_L3_BITRATE_320K+#num V4L2_CID_MPEG_AUDIO_MODE+#integral_t enum v4l2_mpeg_audio_mode+#num V4L2_MPEG_AUDIO_MODE_STEREO+#num V4L2_MPEG_AUDIO_MODE_JOINT_STEREO+#num V4L2_MPEG_AUDIO_MODE_DUAL+#num V4L2_MPEG_AUDIO_MODE_MONO+#num V4L2_CID_MPEG_AUDIO_MODE_EXTENSION+#integral_t enum v4l2_mpeg_audio_mode_extension+#num V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4+#num V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8+#num V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12+#num V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16+#num V4L2_CID_MPEG_AUDIO_EMPHASIS+#integral_t enum v4l2_mpeg_audio_emphasis+#num V4L2_MPEG_AUDIO_EMPHASIS_NONE+#num V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS+#num V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17+#num V4L2_CID_MPEG_AUDIO_CRC+#integral_t enum v4l2_mpeg_audio_crc+#num V4L2_MPEG_AUDIO_CRC_NONE+#num V4L2_MPEG_AUDIO_CRC_CRC16+#num V4L2_CID_MPEG_AUDIO_MUTE+#num V4L2_CID_MPEG_AUDIO_AAC_BITRATE+#num V4L2_CID_MPEG_AUDIO_AC3_BITRATE+#integral_t enum v4l2_mpeg_audio_ac3_bitrate+#num V4L2_MPEG_AUDIO_AC3_BITRATE_32K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_40K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_48K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_56K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_64K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_80K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_96K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_112K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_128K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_160K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_192K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_224K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_256K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_320K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_384K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_448K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_512K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_576K+#num V4L2_MPEG_AUDIO_AC3_BITRATE_640K+#num V4L2_CID_MPEG_VIDEO_ENCODING+#integral_t enum v4l2_mpeg_video_encoding+#num V4L2_MPEG_VIDEO_ENCODING_MPEG_1+#num V4L2_MPEG_VIDEO_ENCODING_MPEG_2+#num V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC+#num V4L2_CID_MPEG_VIDEO_ASPECT+#integral_t enum v4l2_mpeg_video_aspect+#num V4L2_MPEG_VIDEO_ASPECT_1x1+#num V4L2_MPEG_VIDEO_ASPECT_4x3+#num V4L2_MPEG_VIDEO_ASPECT_16x9+#num V4L2_MPEG_VIDEO_ASPECT_221x100+#num V4L2_CID_MPEG_VIDEO_B_FRAMES+#num V4L2_CID_MPEG_VIDEO_GOP_SIZE+#num V4L2_CID_MPEG_VIDEO_GOP_CLOSURE+#num V4L2_CID_MPEG_VIDEO_PULLDOWN+#num V4L2_CID_MPEG_VIDEO_BITRATE_MODE+#integral_t enum v4l2_mpeg_video_bitrate_mode+#num V4L2_MPEG_VIDEO_BITRATE_MODE_VBR+#num V4L2_MPEG_VIDEO_BITRATE_MODE_CBR+#num V4L2_CID_MPEG_VIDEO_BITRATE+#num V4L2_CID_MPEG_VIDEO_BITRATE_PEAK+#num V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION+#num V4L2_CID_MPEG_VIDEO_MUTE+#num V4L2_CID_MPEG_VIDEO_MUTE_YUV+#num V4L2_CID_MPEG_CX2341X_BASE+#num V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE+#integral_t enum v4l2_mpeg_cx2341x_video_spatial_filter_mode+#num V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL+#num V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO+#num V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER+#num V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE+#integral_t enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type+#num V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF+#num V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR+#num V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT+#num V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE+#num V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE+#num V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE+#integral_t enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type+#num V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF+#num V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR+#num V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE+#integral_t enum v4l2_mpeg_cx2341x_video_temporal_filter_mode+#num V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL+#num V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO+#num V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER+#num V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE+#integral_t enum v4l2_mpeg_cx2341x_video_median_filter_type+#num V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF+#num V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR+#num V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT+#num V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT+#num V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG+#num V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM+#num V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP+#num V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM+#num V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP+#num V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS+#num V4L2_CID_CAMERA_CLASS_BASE+#num V4L2_CID_CAMERA_CLASS+#num V4L2_CID_EXPOSURE_AUTO+#integral_t enum v4l2_exposure_auto_type+#num V4L2_EXPOSURE_AUTO+#num V4L2_EXPOSURE_MANUAL+#num V4L2_EXPOSURE_SHUTTER_PRIORITY+#num V4L2_EXPOSURE_APERTURE_PRIORITY+#num V4L2_CID_EXPOSURE_ABSOLUTE+#num V4L2_CID_EXPOSURE_AUTO_PRIORITY+#num V4L2_CID_PAN_RELATIVE+#num V4L2_CID_TILT_RELATIVE+#num V4L2_CID_PAN_RESET+#num V4L2_CID_TILT_RESET+#num V4L2_CID_PAN_ABSOLUTE+#num V4L2_CID_TILT_ABSOLUTE+#num V4L2_CID_FOCUS_ABSOLUTE+#num V4L2_CID_FOCUS_RELATIVE+#num V4L2_CID_FOCUS_AUTO+#num V4L2_CID_ZOOM_ABSOLUTE+#num V4L2_CID_ZOOM_RELATIVE+#num V4L2_CID_ZOOM_CONTINUOUS+#num V4L2_CID_PRIVACY+#num V4L2_CID_FM_TX_CLASS_BASE+#num V4L2_CID_FM_TX_CLASS+#num V4L2_CID_RDS_TX_DEVIATION+#num V4L2_CID_RDS_TX_PI+#num V4L2_CID_RDS_TX_PTY+#num V4L2_CID_RDS_TX_PS_NAME+#num V4L2_CID_RDS_TX_RADIO_TEXT+#num V4L2_CID_AUDIO_LIMITER_ENABLED+#num V4L2_CID_AUDIO_LIMITER_RELEASE_TIME+#num V4L2_CID_AUDIO_LIMITER_DEVIATION+#num V4L2_CID_AUDIO_COMPRESSION_ENABLED+#num V4L2_CID_AUDIO_COMPRESSION_GAIN+#num V4L2_CID_AUDIO_COMPRESSION_THRESHOLD+#num V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME+#num V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME+#num V4L2_CID_PILOT_TONE_ENABLED+#num V4L2_CID_PILOT_TONE_DEVIATION+#num V4L2_CID_PILOT_TONE_FREQUENCY+#num V4L2_CID_TUNE_PREEMPHASIS+#integral_t enum v4l2_preemphasis+#num V4L2_PREEMPHASIS_DISABLED+#num V4L2_PREEMPHASIS_50_uS+#num V4L2_PREEMPHASIS_75_uS+#num V4L2_CID_TUNE_POWER_LEVEL+#num V4L2_CID_TUNE_ANTENNA_CAPACITOR+#starttype struct v4l2_tuner+#field index , Word32+#array_field name , Word8+#field type , <v4l2_tuner_type>+#field capability , Word32+#field rangelow , Word32+#field rangehigh , Word32+#field rxsubchans , Word32+#field audmode , Word32+#field signal , Int32+#field afc , Int32+#array_field reserved , Word32+#stoptype+#starttype struct v4l2_modulator+#field index , Word32+#array_field name , Word8+#field capability , Word32+#field rangelow , Word32+#field rangehigh , Word32+#field txsubchans , Word32+#array_field reserved , Word32+#stoptype+#num V4L2_TUNER_CAP_LOW+#num V4L2_TUNER_CAP_NORM+#num V4L2_TUNER_CAP_STEREO+#num V4L2_TUNER_CAP_LANG2+#num V4L2_TUNER_CAP_SAP+#num V4L2_TUNER_CAP_LANG1+#num V4L2_TUNER_CAP_RDS+#num V4L2_TUNER_SUB_MONO+#num V4L2_TUNER_SUB_STEREO+#num V4L2_TUNER_SUB_LANG2+#num V4L2_TUNER_SUB_SAP+#num V4L2_TUNER_SUB_LANG1+#num V4L2_TUNER_SUB_RDS+#num V4L2_TUNER_MODE_MONO+#num V4L2_TUNER_MODE_STEREO+#num V4L2_TUNER_MODE_LANG2+#num V4L2_TUNER_MODE_SAP+#num V4L2_TUNER_MODE_LANG1+#num V4L2_TUNER_MODE_LANG1_LANG2+#starttype struct v4l2_frequency+#field tuner , Word32+#field type , <v4l2_tuner_type>+#field frequency , Word32+#array_field reserved , Word32+#stoptype+#starttype struct v4l2_hw_freq_seek+#field tuner , Word32+#field type , <v4l2_tuner_type>+#field seek_upward , Word32+#field wrap_around , Word32+#array_field reserved , Word32+#stoptype+#starttype struct v4l2_rds_data+#field lsb , Word8+#field msb , Word8+#field block , Word8+#stoptype+#num V4L2_RDS_BLOCK_MSK+#num V4L2_RDS_BLOCK_A+#num V4L2_RDS_BLOCK_B+#num V4L2_RDS_BLOCK_C+#num V4L2_RDS_BLOCK_D+#num V4L2_RDS_BLOCK_C_ALT+#num V4L2_RDS_BLOCK_INVALID+#num V4L2_RDS_BLOCK_CORRECTED+#num V4L2_RDS_BLOCK_ERROR+#starttype struct v4l2_audio+#field index , Word32+#array_field name , Word8+#field capability , Word32+#field mode , Word32+#array_field reserved , Word32+#stoptype+#num V4L2_AUDCAP_STEREO+#num V4L2_AUDCAP_AVL+#num V4L2_AUDMODE_AVL+#starttype struct v4l2_audioout+#field index , Word32+#array_field name , Word8+#field capability , Word32+#field mode , Word32+#array_field reserved , Word32+#stoptype+#num V4L2_ENC_IDX_FRAME_I+#num V4L2_ENC_IDX_FRAME_P+#num V4L2_ENC_IDX_FRAME_B+#num V4L2_ENC_IDX_FRAME_MASK+#starttype struct v4l2_enc_idx_entry+#field offset , Word64+#field pts , Word64+#field length , Word32+#field flags , Word32+#array_field reserved , Word32+#stoptype+#num V4L2_ENC_IDX_ENTRIES+#starttype struct v4l2_enc_idx+#field entries , Word32+#field entries_cap , Word32+#array_field reserved , Word32+#array_field entry , <v4l2_enc_idx_entry>+#stoptype+#num V4L2_ENC_CMD_START+#num V4L2_ENC_CMD_STOP+#num V4L2_ENC_CMD_PAUSE+#num V4L2_ENC_CMD_RESUME+#num V4L2_ENC_CMD_STOP_AT_GOP_END+#starttype struct v4l2_encoder_cmd_u_s+#array_field data , Word32+#stoptype+#starttype union v4l2_encoder_cmd_u+#union_field raw , <v4l2_encoder_cmd_u_s>+#stoptype+#starttype struct v4l2_encoder_cmd+#field cmd , Word32+#field flags , Word32+#field u , <v4l2_encoder_cmd_u>+#stoptype+#starttype struct v4l2_vbi_format+#field sampling_rate , Word32+#field offset , Word32+#field samples_per_line , Word32+#field sample_format , Word32+#array_field start , Int32+#array_field count , Word32+#field flags , Word32+#array_field reserved , Word32+#stoptype+#num V4L2_VBI_UNSYNC+#num V4L2_VBI_INTERLACED+#starttype struct v4l2_sliced_vbi_format+#field service_set , Word16+#array_field service_lines , Word16+#field io_size , Word32+#array_field reserved , Word32+#stoptype+#num V4L2_SLICED_TELETEXT_B+#num V4L2_SLICED_VPS+#num V4L2_SLICED_CAPTION_525+#num V4L2_SLICED_WSS_625+#num V4L2_SLICED_VBI_525+#num V4L2_SLICED_VBI_625+#starttype struct v4l2_sliced_vbi_cap+#field service_set , Word16+#array_field service_lines , Word16+#field type , <v4l2_buf_type>+#array_field reserved , Word32+#stoptype+#starttype struct v4l2_sliced_vbi_data+#field id , Word32+#field field , Word32+#field line , Word32+#field reserved , Word32+#array_field data , Word8+#stoptype+#num V4L2_MPEG_VBI_IVTV_TELETEXT_B+#num V4L2_MPEG_VBI_IVTV_CAPTION_525+#num V4L2_MPEG_VBI_IVTV_WSS_625+#num V4L2_MPEG_VBI_IVTV_VPS+#starttype struct v4l2_mpeg_vbi_itv0_line+#field id , Word8+#array_field data , Word8+#stoptype+#starttype struct v4l2_mpeg_vbi_itv0+#array_field linemask , Word32+#array_field line , <v4l2_mpeg_vbi_itv0_line>+#stoptype+#starttype struct v4l2_mpeg_vbi_ITV0+#array_field line , <v4l2_mpeg_vbi_itv0_line>+#stoptype+#num V4L2_MPEG_VBI_IVTV_MAGIC0+#num V4L2_MPEG_VBI_IVTV_MAGIC1+#starttype union v4l2_mpeg_vbi_fmt_ivtv_u+#union_field itv0 , <v4l2_mpeg_vbi_itv0>+#union_field ITV0 , <v4l2_mpeg_vbi_ITV0>+#stoptype+#starttype struct v4l2_mpeg_vbi_fmt_ivtv+#array_field magic , Word8+#field u , <v4l2_mpeg_vbi_fmt_ivtv_u>+#stoptype+#starttype union v4l2_format_u+#union_field pix , <v4l2_pix_format>+#union_field win , <v4l2_window>+#union_field vbi , <v4l2_vbi_format>+#union_field sliced , <v4l2_sliced_vbi_format>+#union_array_field raw_data , Word8+#stoptype+#starttype struct v4l2_format+#field type , <v4l2_buf_type>+#field fmt , <v4l2_format_u>+#stoptype+#starttype union v4l2_streamparm_u+#union_field capture , <v4l2_captureparm>+#union_field output , <v4l2_outputparm>+#union_array_field raw_data , Word8+#stoptype+#starttype struct v4l2_streamparm+#field type , <v4l2_buf_type>+#field parm , <v4l2_streamparm_u>+#stoptype+#num V4L2_CHIP_MATCH_HOST+#num V4L2_CHIP_MATCH_I2C_DRIVER+#num V4L2_CHIP_MATCH_I2C_ADDR+#num V4L2_CHIP_MATCH_AC97+#starttype union v4l2_dbg_match_u+#union_field addr , Word32+#union_array_field name , CChar+#stoptype+#starttype struct v4l2_dbg_match+#field type , Word32+#field u , <v4l2_dbg_match_u>+#stoptype+#starttype struct v4l2_dbg_register+#field match , <v4l2_dbg_match>+#field size , Word32+#field reg , Word64+#field val , Word64+#stoptype+#starttype struct v4l2_dbg_chip_ident+#field match , <v4l2_dbg_match>+#field ident , Word32+#field revision , Word32+#stoptype+#num VIDIOC_QUERYCAP+#opaque_t VIDIOC_QUERYCAP+instance IOControl C'VIDIOC_QUERYCAP C'v4l2_capability where ioctlReq _ = c'VIDIOC_QUERYCAP+#num VIDIOC_RESERVED+#opaque_t VIDIOC_RESERVED+instance IOControl C'VIDIOC_RESERVED CInt where ioctlReq _ = c'VIDIOC_RESERVED+#num VIDIOC_ENUM_FMT+#opaque_t VIDIOC_ENUM_FMT+instance IOControl C'VIDIOC_ENUM_FMT C'v4l2_fmtdesc where ioctlReq _ = c'VIDIOC_ENUM_FMT+#num VIDIOC_G_FMT+#opaque_t VIDIOC_G_FMT+instance IOControl C'VIDIOC_G_FMT C'v4l2_format where ioctlReq _ = c'VIDIOC_G_FMT+#num VIDIOC_S_FMT+#opaque_t VIDIOC_S_FMT+instance IOControl C'VIDIOC_S_FMT C'v4l2_format where ioctlReq _ = c'VIDIOC_S_FMT+#num VIDIOC_REQBUFS+#opaque_t VIDIOC_REQBUFS+instance IOControl C'VIDIOC_REQBUFS C'v4l2_requestbuffers where ioctlReq _ = c'VIDIOC_REQBUFS+#num VIDIOC_QUERYBUF+#opaque_t VIDIOC_QUERYBUF+instance IOControl C'VIDIOC_QUERYBUF C'v4l2_buffer where ioctlReq _ = c'VIDIOC_QUERYBUF+#num VIDIOC_G_FBUF+#opaque_t VIDIOC_G_FBUF+instance IOControl C'VIDIOC_G_FBUF C'v4l2_framebuffer where ioctlReq _ = c'VIDIOC_G_FBUF+#num VIDIOC_S_FBUF+#opaque_t VIDIOC_S_FBUF+instance IOControl C'VIDIOC_S_FBUF C'v4l2_framebuffer where ioctlReq _ = c'VIDIOC_S_FBUF+#num VIDIOC_OVERLAY+#opaque_t VIDIOC_OVERLAY+instance IOControl C'VIDIOC_OVERLAY CInt where ioctlReq _ = c'VIDIOC_OVERLAY+#num VIDIOC_QBUF+#opaque_t VIDIOC_QBUF+instance IOControl C'VIDIOC_QBUF C'v4l2_buffer where ioctlReq _ = c'VIDIOC_QBUF+#num VIDIOC_DQBUF+#opaque_t VIDIOC_DQBUF+instance IOControl C'VIDIOC_DQBUF C'v4l2_buffer where ioctlReq _ = c'VIDIOC_DQBUF+#num VIDIOC_STREAMON+#opaque_t VIDIOC_STREAMON+instance IOControl C'VIDIOC_STREAMON CInt where ioctlReq _ = c'VIDIOC_STREAMON+#num VIDIOC_STREAMOFF+#opaque_t VIDIOC_STREAMOFF+instance IOControl C'VIDIOC_STREAMOFF CInt where ioctlReq _ = c'VIDIOC_STREAMOFF+#num VIDIOC_G_PARM+#opaque_t VIDIOC_G_PARM+instance IOControl C'VIDIOC_G_PARM C'v4l2_streamparm where ioctlReq _ = c'VIDIOC_G_PARM+#num VIDIOC_S_PARM+#opaque_t VIDIOC_S_PARM+instance IOControl C'VIDIOC_S_PARM C'v4l2_streamparm where ioctlReq _ = c'VIDIOC_S_PARM+#num VIDIOC_G_STD+#opaque_t VIDIOC_G_STD+instance IOControl C'VIDIOC_G_STD C'v4l2_std_id where ioctlReq _ = c'VIDIOC_G_STD+#num VIDIOC_S_STD+#opaque_t VIDIOC_S_STD+instance IOControl C'VIDIOC_S_STD C'v4l2_std_id where ioctlReq _ = c'VIDIOC_S_STD+#num VIDIOC_ENUMSTD+#opaque_t VIDIOC_ENUMSTD+instance IOControl C'VIDIOC_ENUMSTD C'v4l2_standard where ioctlReq _ = c'VIDIOC_ENUMSTD+#num VIDIOC_ENUMINPUT+#opaque_t VIDIOC_ENUMINPUT+instance IOControl C'VIDIOC_ENUMINPUT C'v4l2_input where ioctlReq _ = c'VIDIOC_ENUMINPUT+#num VIDIOC_G_CTRL+#opaque_t VIDIOC_G_CTRL+instance IOControl C'VIDIOC_G_CTRL C'v4l2_control where ioctlReq _ = c'VIDIOC_G_CTRL+#num VIDIOC_S_CTRL+#opaque_t VIDIOC_S_CTRL+instance IOControl C'VIDIOC_S_CTRL C'v4l2_control where ioctlReq _ = c'VIDIOC_S_CTRL+#num VIDIOC_G_TUNER+#opaque_t VIDIOC_G_TUNER+instance IOControl C'VIDIOC_G_TUNER C'v4l2_tuner where ioctlReq _ = c'VIDIOC_G_TUNER+#num VIDIOC_S_TUNER+#opaque_t VIDIOC_S_TUNER+instance IOControl C'VIDIOC_S_TUNER C'v4l2_tuner where ioctlReq _ = c'VIDIOC_S_TUNER+#num VIDIOC_G_AUDIO+#opaque_t VIDIOC_G_AUDIO+instance IOControl C'VIDIOC_G_AUDIO C'v4l2_audio where ioctlReq _ = c'VIDIOC_G_AUDIO+#num VIDIOC_S_AUDIO+#opaque_t VIDIOC_S_AUDIO+instance IOControl C'VIDIOC_S_AUDIO C'v4l2_audio where ioctlReq _ = c'VIDIOC_S_AUDIO+#num VIDIOC_QUERYCTRL+#opaque_t VIDIOC_QUERYCTRL+instance IOControl C'VIDIOC_QUERYCTRL C'v4l2_queryctrl where ioctlReq _ = c'VIDIOC_QUERYCTRL+#num VIDIOC_QUERYMENU+#opaque_t VIDIOC_QUERYMENU+instance IOControl C'VIDIOC_QUERYMENU C'v4l2_querymenu where ioctlReq _ = c'VIDIOC_QUERYMENU+#num VIDIOC_G_INPUT+#opaque_t VIDIOC_G_INPUT+instance IOControl C'VIDIOC_G_INPUT CInt where ioctlReq _ = c'VIDIOC_G_INPUT+#num VIDIOC_S_INPUT+#opaque_t VIDIOC_S_INPUT+instance IOControl C'VIDIOC_S_INPUT CInt where ioctlReq _ = c'VIDIOC_S_INPUT+#num VIDIOC_G_OUTPUT+#opaque_t VIDIOC_G_OUTPUT+instance IOControl C'VIDIOC_G_OUTPUT CInt where ioctlReq _ = c'VIDIOC_G_OUTPUT+#num VIDIOC_S_OUTPUT+#opaque_t VIDIOC_S_OUTPUT+instance IOControl C'VIDIOC_S_OUTPUT CInt where ioctlReq _ = c'VIDIOC_S_OUTPUT+#num VIDIOC_ENUMOUTPUT+#opaque_t VIDIOC_ENUMOUTPUT+instance IOControl C'VIDIOC_ENUMOUTPUT C'v4l2_output where ioctlReq _ = c'VIDIOC_ENUMOUTPUT+#num VIDIOC_G_AUDOUT+#opaque_t VIDIOC_G_AUDOUT+instance IOControl C'VIDIOC_G_AUDOUT C'v4l2_audioout where ioctlReq _ = c'VIDIOC_G_AUDOUT+#num VIDIOC_S_AUDOUT+#opaque_t VIDIOC_S_AUDOUT+instance IOControl C'VIDIOC_S_AUDOUT C'v4l2_audioout where ioctlReq _ = c'VIDIOC_S_AUDOUT+#num VIDIOC_G_MODULATOR+#opaque_t VIDIOC_G_MODULATOR+instance IOControl C'VIDIOC_G_MODULATOR C'v4l2_modulator where ioctlReq _ = c'VIDIOC_G_MODULATOR+#num VIDIOC_S_MODULATOR+#opaque_t VIDIOC_S_MODULATOR+instance IOControl C'VIDIOC_S_MODULATOR C'v4l2_modulator where ioctlReq _ = c'VIDIOC_S_MODULATOR+#num VIDIOC_G_FREQUENCY+#opaque_t VIDIOC_G_FREQUENCY+instance IOControl C'VIDIOC_G_FREQUENCY C'v4l2_frequency where ioctlReq _ = c'VIDIOC_G_FREQUENCY+#num VIDIOC_S_FREQUENCY+#opaque_t VIDIOC_S_FREQUENCY+instance IOControl C'VIDIOC_S_FREQUENCY C'v4l2_frequency where ioctlReq _ = c'VIDIOC_S_FREQUENCY+#num VIDIOC_CROPCAP+#opaque_t VIDIOC_CROPCAP+instance IOControl C'VIDIOC_CROPCAP C'v4l2_cropcap where ioctlReq _ = c'VIDIOC_CROPCAP+#num VIDIOC_G_CROP+#opaque_t VIDIOC_G_CROP+instance IOControl C'VIDIOC_G_CROP C'v4l2_crop where ioctlReq _ = c'VIDIOC_G_CROP+#num VIDIOC_S_CROP+#opaque_t VIDIOC_S_CROP+instance IOControl C'VIDIOC_S_CROP C'v4l2_crop where ioctlReq _ = c'VIDIOC_S_CROP+#num VIDIOC_G_JPEGCOMP+#opaque_t VIDIOC_G_JPEGCOMP+instance IOControl C'VIDIOC_G_JPEGCOMP C'v4l2_jpegcompression where ioctlReq _ = c'VIDIOC_G_JPEGCOMP+#num VIDIOC_S_JPEGCOMP+#opaque_t VIDIOC_S_JPEGCOMP+instance IOControl C'VIDIOC_S_JPEGCOMP C'v4l2_jpegcompression where ioctlReq _ = c'VIDIOC_S_JPEGCOMP+#num VIDIOC_QUERYSTD+#opaque_t VIDIOC_QUERYSTD+instance IOControl C'VIDIOC_QUERYSTD C'v4l2_std_id where ioctlReq _ = c'VIDIOC_QUERYSTD+#num VIDIOC_TRY_FMT+#opaque_t VIDIOC_TRY_FMT+instance IOControl C'VIDIOC_TRY_FMT C'v4l2_format where ioctlReq _ = c'VIDIOC_TRY_FMT+#num VIDIOC_ENUMAUDIO+#opaque_t VIDIOC_ENUMAUDIO+instance IOControl C'VIDIOC_ENUMAUDIO C'v4l2_audio where ioctlReq _ = c'VIDIOC_ENUMAUDIO+#num VIDIOC_ENUMAUDOUT+#opaque_t VIDIOC_ENUMAUDOUT+instance IOControl C'VIDIOC_ENUMAUDOUT C'v4l2_audioout where ioctlReq _ = c'VIDIOC_ENUMAUDOUT+#num VIDIOC_G_PRIORITY+#opaque_t VIDIOC_G_PRIORITY+instance IOControl C'VIDIOC_G_PRIORITY C'v4l2_priority where ioctlReq _ = c'VIDIOC_G_PRIORITY+#num VIDIOC_S_PRIORITY+#opaque_t VIDIOC_S_PRIORITY+instance IOControl C'VIDIOC_S_PRIORITY C'v4l2_priority where ioctlReq _ = c'VIDIOC_S_PRIORITY+#num VIDIOC_G_SLICED_VBI_CAP+#opaque_t VIDIOC_G_SLICED_VBI_CAP+instance IOControl C'VIDIOC_G_SLICED_VBI_CAP C'v4l2_sliced_vbi_cap where ioctlReq _ = c'VIDIOC_G_SLICED_VBI_CAP+#num VIDIOC_LOG_STATUS+#opaque_t VIDIOC_LOG_STATUS+instance IOControl C'VIDIOC_LOG_STATUS CInt where ioctlReq _ = c'VIDIOC_LOG_STATUS+#num VIDIOC_G_EXT_CTRLS+#opaque_t VIDIOC_G_EXT_CTRLS+instance IOControl C'VIDIOC_G_EXT_CTRLS C'v4l2_ext_controls where ioctlReq _ = c'VIDIOC_G_EXT_CTRLS+#num VIDIOC_S_EXT_CTRLS+#opaque_t VIDIOC_S_EXT_CTRLS+instance IOControl C'VIDIOC_S_EXT_CTRLS C'v4l2_ext_controls where ioctlReq _ = c'VIDIOC_S_EXT_CTRLS+#num VIDIOC_TRY_EXT_CTRLS+#opaque_t VIDIOC_TRY_EXT_CTRLS+instance IOControl C'VIDIOC_TRY_EXT_CTRLS C'v4l2_ext_controls where ioctlReq _ = c'VIDIOC_TRY_EXT_CTRLS+#num VIDIOC_ENUM_FRAMESIZES+#opaque_t VIDIOC_ENUM_FRAMESIZES+instance IOControl C'VIDIOC_ENUM_FRAMESIZES C'v4l2_frmsizeenum where ioctlReq _ = c'VIDIOC_ENUM_FRAMESIZES+#num VIDIOC_ENUM_FRAMEINTERVALS+#opaque_t VIDIOC_ENUM_FRAMEINTERVALS+instance IOControl C'VIDIOC_ENUM_FRAMEINTERVALS C'v4l2_frmivalenum where ioctlReq _ = c'VIDIOC_ENUM_FRAMEINTERVALS+#num VIDIOC_G_ENC_INDEX+#opaque_t VIDIOC_G_ENC_INDEX+instance IOControl C'VIDIOC_G_ENC_INDEX C'v4l2_enc_idx where ioctlReq _ = c'VIDIOC_G_ENC_INDEX+#num VIDIOC_ENCODER_CMD+#opaque_t VIDIOC_ENCODER_CMD+instance IOControl C'VIDIOC_ENCODER_CMD C'v4l2_encoder_cmd where ioctlReq _ = c'VIDIOC_ENCODER_CMD+#num VIDIOC_TRY_ENCODER_CMD+#opaque_t VIDIOC_TRY_ENCODER_CMD+instance IOControl C'VIDIOC_TRY_ENCODER_CMD C'v4l2_encoder_cmd where ioctlReq _ = c'VIDIOC_TRY_ENCODER_CMD+#num VIDIOC_DBG_S_REGISTER+#opaque_t VIDIOC_DBG_S_REGISTER+instance IOControl C'VIDIOC_DBG_S_REGISTER C'v4l2_dbg_register where ioctlReq _ = c'VIDIOC_DBG_S_REGISTER+#num VIDIOC_DBG_G_REGISTER+#opaque_t VIDIOC_DBG_G_REGISTER+instance IOControl C'VIDIOC_DBG_G_REGISTER C'v4l2_dbg_register where ioctlReq _ = c'VIDIOC_DBG_G_REGISTER+#num VIDIOC_DBG_G_CHIP_IDENT+#opaque_t VIDIOC_DBG_G_CHIP_IDENT+instance IOControl C'VIDIOC_DBG_G_CHIP_IDENT C'v4l2_dbg_chip_ident where ioctlReq _ = c'VIDIOC_DBG_G_CHIP_IDENT+#num VIDIOC_S_HW_FREQ_SEEK+#opaque_t VIDIOC_S_HW_FREQ_SEEK+instance IOControl C'VIDIOC_S_HW_FREQ_SEEK C'v4l2_hw_freq_seek where ioctlReq _ = c'VIDIOC_S_HW_FREQ_SEEK+#num VIDIOC_OVERLAY_OLD+#opaque_t VIDIOC_OVERLAY_OLD+instance IOControl C'VIDIOC_OVERLAY_OLD CInt where ioctlReq _ = c'VIDIOC_OVERLAY_OLD+#num VIDIOC_S_PARM_OLD+#opaque_t VIDIOC_S_PARM_OLD+instance IOControl C'VIDIOC_S_PARM_OLD C'v4l2_streamparm where ioctlReq _ = c'VIDIOC_S_PARM_OLD+#num VIDIOC_S_CTRL_OLD+#opaque_t VIDIOC_S_CTRL_OLD+instance IOControl C'VIDIOC_S_CTRL_OLD C'v4l2_control where ioctlReq _ = c'VIDIOC_S_CTRL_OLD+#num VIDIOC_G_AUDIO_OLD+#opaque_t VIDIOC_G_AUDIO_OLD+instance IOControl C'VIDIOC_G_AUDIO_OLD C'v4l2_audio where ioctlReq _ = c'VIDIOC_G_AUDIO_OLD+#num VIDIOC_G_AUDOUT_OLD+#opaque_t VIDIOC_G_AUDOUT_OLD+instance IOControl C'VIDIOC_G_AUDOUT_OLD C'v4l2_audioout where ioctlReq _ = c'VIDIOC_G_AUDOUT_OLD+#num VIDIOC_CROPCAP_OLD+#opaque_t VIDIOC_CROPCAP_OLD+instance IOControl C'VIDIOC_CROPCAP_OLD C'v4l2_cropcap where ioctlReq _ = c'VIDIOC_CROPCAP_OLD+#num BASE_VIDIOC_PRIVATE
+ Bindings/Linux/videodev2.h view
@@ -0,0 +1,1638 @@+/*+ *  Video for Linux Two header file+ *+ *  Copyright (C) 1999-2007 the contributors+ *+ *  This program is free software; you can redistribute it and/or modify+ *  it under the terms of the GNU General Public License as published by+ *  the Free Software Foundation; either version 2 of the License, or+ *  (at your option) any later version.+ *+ *  This program 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 General Public License for more details.+ *+ *  Alternatively you can redistribute this file under the terms of the+ *  BSD license as stated below:+ *+ *  Redistribution and use in source and binary forms, with or without+ *  modification, are permitted provided that the following conditions+ *  are met:+ *  1. Redistributions of source code must retain the above copyright+ *     notice, this list of conditions and the following disclaimer.+ *  2. Redistributions in binary form must reproduce the above copyright+ *     notice, this list of conditions and the following disclaimer in+ *     the documentation and/or other materials provided with the+ *     distribution.+ *  3. The names of its contributors may not be used to endorse or promote+ *     products derived from this software without specific prior written+ *     permission.+ *+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.+ *+ *	Header file for v4l or V4L2 drivers and applications+ * with public API.+ * All kernel-specific stuff were moved to media/v4l2-dev.h, so+ * no #if __KERNEL tests are allowed here+ *+ *	See http://linuxtv.org for more info+ *+ *	Author: Bill Dirks <bill@thedirks.org>+ *		Justin Schoeman+ *              Hans Verkuil <hverkuil@xs4all.nl>+ *		et al.+ */+#ifndef __LINUX_VIDEODEV2_H+#define __LINUX_VIDEODEV2_H++#include <sys/time.h>++#include <linux/ioctl.h>+#include <linux/types.h>++/*+ * Common stuff for both V4L1 and V4L2+ * Moved from videodev.h+ */+#define VIDEO_MAX_FRAME               32+++/* These defines are V4L1 specific and should not be used with the V4L2 API!+   They will be removed from this header in the future. */++#define VID_TYPE_CAPTURE	1	/* Can capture */+#define VID_TYPE_TUNER		2	/* Can tune */+#define VID_TYPE_TELETEXT	4	/* Does teletext */+#define VID_TYPE_OVERLAY	8	/* Overlay onto frame buffer */+#define VID_TYPE_CHROMAKEY	16	/* Overlay by chromakey */+#define VID_TYPE_CLIPPING	32	/* Can clip */+#define VID_TYPE_FRAMERAM	64	/* Uses the frame buffer memory */+#define VID_TYPE_SCALES		128	/* Scalable */+#define VID_TYPE_MONOCHROME	256	/* Monochrome only */+#define VID_TYPE_SUBCAPTURE	512	/* Can capture subareas of the image */+#define VID_TYPE_MPEG_DECODER	1024	/* Can decode MPEG streams */+#define VID_TYPE_MPEG_ENCODER	2048	/* Can encode MPEG streams */+#define VID_TYPE_MJPEG_DECODER	4096	/* Can decode MJPEG streams */+#define VID_TYPE_MJPEG_ENCODER	8192	/* Can encode MJPEG streams */++/*+ *	M I S C E L L A N E O U S+ */++/*  Four-character-code (FOURCC) */+#define v4l2_fourcc(a, b, c, d)\+	((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))++/*+ *	E N U M S+ */+enum v4l2_field {+	V4L2_FIELD_ANY           = 0, /* driver can choose from none,+					 top, bottom, interlaced+					 depending on whatever it thinks+					 is approximate ... */+	V4L2_FIELD_NONE          = 1, /* this device has no fields ... */+	V4L2_FIELD_TOP           = 2, /* top field only */+	V4L2_FIELD_BOTTOM        = 3, /* bottom field only */+	V4L2_FIELD_INTERLACED    = 4, /* both fields interlaced */+	V4L2_FIELD_SEQ_TB        = 5, /* both fields sequential into one+					 buffer, top-bottom order */+	V4L2_FIELD_SEQ_BT        = 6, /* same as above + bottom-top order */+	V4L2_FIELD_ALTERNATE     = 7, /* both fields alternating into+					 separate buffers */+	V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field+					 first and the top field is+					 transmitted first */+	V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field+					 first and the bottom field is+					 transmitted first */+};+#define V4L2_FIELD_HAS_TOP(field)	\+	((field) == V4L2_FIELD_TOP 	||\+	 (field) == V4L2_FIELD_INTERLACED ||\+	 (field) == V4L2_FIELD_INTERLACED_TB ||\+	 (field) == V4L2_FIELD_INTERLACED_BT ||\+	 (field) == V4L2_FIELD_SEQ_TB	||\+	 (field) == V4L2_FIELD_SEQ_BT)+#define V4L2_FIELD_HAS_BOTTOM(field)	\+	((field) == V4L2_FIELD_BOTTOM 	||\+	 (field) == V4L2_FIELD_INTERLACED ||\+	 (field) == V4L2_FIELD_INTERLACED_TB ||\+	 (field) == V4L2_FIELD_INTERLACED_BT ||\+	 (field) == V4L2_FIELD_SEQ_TB	||\+	 (field) == V4L2_FIELD_SEQ_BT)+#define V4L2_FIELD_HAS_BOTH(field)	\+	((field) == V4L2_FIELD_INTERLACED ||\+	 (field) == V4L2_FIELD_INTERLACED_TB ||\+	 (field) == V4L2_FIELD_INTERLACED_BT ||\+	 (field) == V4L2_FIELD_SEQ_TB ||\+	 (field) == V4L2_FIELD_SEQ_BT)++enum v4l2_buf_type {+	V4L2_BUF_TYPE_VIDEO_CAPTURE        = 1,+	V4L2_BUF_TYPE_VIDEO_OUTPUT         = 2,+	V4L2_BUF_TYPE_VIDEO_OVERLAY        = 3,+	V4L2_BUF_TYPE_VBI_CAPTURE          = 4,+	V4L2_BUF_TYPE_VBI_OUTPUT           = 5,+	V4L2_BUF_TYPE_SLICED_VBI_CAPTURE   = 6,+	V4L2_BUF_TYPE_SLICED_VBI_OUTPUT    = 7,+#if 1+	/* Experimental */+	V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,+#endif+	V4L2_BUF_TYPE_PRIVATE              = 0x80,+};++enum v4l2_ctrl_type {+	V4L2_CTRL_TYPE_INTEGER	     = 1,+	V4L2_CTRL_TYPE_BOOLEAN	     = 2,+	V4L2_CTRL_TYPE_MENU	     = 3,+	V4L2_CTRL_TYPE_BUTTON	     = 4,+	V4L2_CTRL_TYPE_INTEGER64     = 5,+	V4L2_CTRL_TYPE_CTRL_CLASS    = 6,+	V4L2_CTRL_TYPE_STRING        = 7,+};++enum v4l2_tuner_type {+	V4L2_TUNER_RADIO	     = 1,+	V4L2_TUNER_ANALOG_TV	     = 2,+	V4L2_TUNER_DIGITAL_TV	     = 3,+};++enum v4l2_memory {+	V4L2_MEMORY_MMAP             = 1,+	V4L2_MEMORY_USERPTR          = 2,+	V4L2_MEMORY_OVERLAY          = 3,+};++/* see also http://vektor.theorem.ca/graphics/ycbcr/ */+enum v4l2_colorspace {+	/* ITU-R 601 -- broadcast NTSC/PAL */+	V4L2_COLORSPACE_SMPTE170M     = 1,++	/* 1125-Line (US) HDTV */+	V4L2_COLORSPACE_SMPTE240M     = 2,++	/* HD and modern captures. */+	V4L2_COLORSPACE_REC709        = 3,++	/* broken BT878 extents (601, luma range 16-253 instead of 16-235) */+	V4L2_COLORSPACE_BT878         = 4,++	/* These should be useful.  Assume 601 extents. */+	V4L2_COLORSPACE_470_SYSTEM_M  = 5,+	V4L2_COLORSPACE_470_SYSTEM_BG = 6,++	/* I know there will be cameras that send this.  So, this is+	 * unspecified chromaticities and full 0-255 on each of the+	 * Y'CbCr components+	 */+	V4L2_COLORSPACE_JPEG          = 7,++	/* For RGB colourspaces, this is probably a good start. */+	V4L2_COLORSPACE_SRGB          = 8,+};++enum v4l2_priority {+	V4L2_PRIORITY_UNSET       = 0,  /* not initialized */+	V4L2_PRIORITY_BACKGROUND  = 1,+	V4L2_PRIORITY_INTERACTIVE = 2,+	V4L2_PRIORITY_RECORD      = 3,+	V4L2_PRIORITY_DEFAULT     = V4L2_PRIORITY_INTERACTIVE,+};++struct v4l2_rect {+	__s32   left;+	__s32   top;+	__s32   width;+	__s32   height;+};++struct v4l2_fract {+	__u32   numerator;+	__u32   denominator;+};++/*+ *	D R I V E R   C A P A B I L I T I E S+ */+struct v4l2_capability {+	__u8	driver[16];	/* i.e. "bttv" */+	__u8	card[32];	/* i.e. "Hauppauge WinTV" */+	__u8	bus_info[32];	/* "PCI:" + pci_name(pci_dev) */+	__u32   version;        /* should use KERNEL_VERSION() */+	__u32	capabilities;	/* Device capabilities */+	__u32	reserved[4];+};++/* Values for 'capabilities' field */+#define V4L2_CAP_VIDEO_CAPTURE		0x00000001  /* Is a video capture device */+#define V4L2_CAP_VIDEO_OUTPUT		0x00000002  /* Is a video output device */+#define V4L2_CAP_VIDEO_OVERLAY		0x00000004  /* Can do video overlay */+#define V4L2_CAP_VBI_CAPTURE		0x00000010  /* Is a raw VBI capture device */+#define V4L2_CAP_VBI_OUTPUT		0x00000020  /* Is a raw VBI output device */+#define V4L2_CAP_SLICED_VBI_CAPTURE	0x00000040  /* Is a sliced VBI capture device */+#define V4L2_CAP_SLICED_VBI_OUTPUT	0x00000080  /* Is a sliced VBI output device */+#define V4L2_CAP_RDS_CAPTURE		0x00000100  /* RDS data capture */+#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY	0x00000200  /* Can do video output overlay */+#define V4L2_CAP_HW_FREQ_SEEK		0x00000400  /* Can do hardware frequency seek  */+#define V4L2_CAP_RDS_OUTPUT		0x00000800  /* Is an RDS encoder */++#define V4L2_CAP_TUNER			0x00010000  /* has a tuner */+#define V4L2_CAP_AUDIO			0x00020000  /* has audio support */+#define V4L2_CAP_RADIO			0x00040000  /* is a radio device */+#define V4L2_CAP_MODULATOR		0x00080000  /* has a modulator */++#define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */+#define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */+#define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */++/*+ *	V I D E O   I M A G E   F O R M A T+ */+struct v4l2_pix_format {+	__u32         		width;+	__u32			height;+	__u32			pixelformat;+	enum v4l2_field  	field;+	__u32            	bytesperline;	/* for padding, zero if unused */+	__u32          		sizeimage;+	enum v4l2_colorspace	colorspace;+	__u32			priv;		/* private data, depends on pixelformat */+};++/*      Pixel format         FOURCC                          depth  Description  */++/* RGB formats */+#define V4L2_PIX_FMT_RGB332  v4l2_fourcc('R', 'G', 'B', '1') /*  8  RGB-3-3-2     */+#define V4L2_PIX_FMT_RGB444  v4l2_fourcc('R', '4', '4', '4') /* 16  xxxxrrrr ggggbbbb */+#define V4L2_PIX_FMT_RGB555  v4l2_fourcc('R', 'G', 'B', 'O') /* 16  RGB-5-5-5     */+#define V4L2_PIX_FMT_RGB565  v4l2_fourcc('R', 'G', 'B', 'P') /* 16  RGB-5-6-5     */+#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16  RGB-5-5-5 BE  */+#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16  RGB-5-6-5 BE  */+#define V4L2_PIX_FMT_BGR24   v4l2_fourcc('B', 'G', 'R', '3') /* 24  BGR-8-8-8     */+#define V4L2_PIX_FMT_RGB24   v4l2_fourcc('R', 'G', 'B', '3') /* 24  RGB-8-8-8     */+#define V4L2_PIX_FMT_BGR32   v4l2_fourcc('B', 'G', 'R', '4') /* 32  BGR-8-8-8-8   */+#define V4L2_PIX_FMT_RGB32   v4l2_fourcc('R', 'G', 'B', '4') /* 32  RGB-8-8-8-8   */++/* Grey formats */+#define V4L2_PIX_FMT_GREY    v4l2_fourcc('G', 'R', 'E', 'Y') /*  8  Greyscale     */+#define V4L2_PIX_FMT_Y16     v4l2_fourcc('Y', '1', '6', ' ') /* 16  Greyscale     */++/* Palette formats */+#define V4L2_PIX_FMT_PAL8    v4l2_fourcc('P', 'A', 'L', '8') /*  8  8-bit palette */++/* Luminance+Chrominance formats */+#define V4L2_PIX_FMT_YVU410  v4l2_fourcc('Y', 'V', 'U', '9') /*  9  YVU 4:1:0     */+#define V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y', 'V', '1', '2') /* 12  YVU 4:2:0     */+#define V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16  YUV 4:2:2     */+#define V4L2_PIX_FMT_YYUV    v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16  YUV 4:2:2     */+#define V4L2_PIX_FMT_YVYU    v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */+#define V4L2_PIX_FMT_UYVY    v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16  YUV 4:2:2     */+#define V4L2_PIX_FMT_VYUY    v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16  YUV 4:2:2     */+#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16  YVU422 planar */+#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 16  YVU411 planar */+#define V4L2_PIX_FMT_Y41P    v4l2_fourcc('Y', '4', '1', 'P') /* 12  YUV 4:1:1     */+#define V4L2_PIX_FMT_YUV444  v4l2_fourcc('Y', '4', '4', '4') /* 16  xxxxyyyy uuuuvvvv */+#define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O') /* 16  YUV-5-5-5     */+#define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y', 'U', 'V', 'P') /* 16  YUV-5-6-5     */+#define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  YUV-8-8-8-8   */+#define V4L2_PIX_FMT_YUV410  v4l2_fourcc('Y', 'U', 'V', '9') /*  9  YUV 4:1:0     */+#define V4L2_PIX_FMT_YUV420  v4l2_fourcc('Y', 'U', '1', '2') /* 12  YUV 4:2:0     */+#define V4L2_PIX_FMT_HI240   v4l2_fourcc('H', 'I', '2', '4') /*  8  8-bit color   */+#define V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2') /*  8  YUV 4:2:0 16x16 macroblocks */++/* two planes -- one Y, one Cr + Cb interleaved  */+#define V4L2_PIX_FMT_NV12    v4l2_fourcc('N', 'V', '1', '2') /* 12  Y/CbCr 4:2:0  */+#define V4L2_PIX_FMT_NV21    v4l2_fourcc('N', 'V', '2', '1') /* 12  Y/CrCb 4:2:0  */+#define V4L2_PIX_FMT_NV16    v4l2_fourcc('N', 'V', '1', '6') /* 16  Y/CbCr 4:2:2  */+#define V4L2_PIX_FMT_NV61    v4l2_fourcc('N', 'V', '6', '1') /* 16  Y/CrCb 4:2:2  */++/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */+#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B', 'A', '8', '1') /*  8  BGBG.. GRGR.. */+#define V4L2_PIX_FMT_SGBRG8  v4l2_fourcc('G', 'B', 'R', 'G') /*  8  GBGB.. RGRG.. */+#define V4L2_PIX_FMT_SGRBG8  v4l2_fourcc('G', 'R', 'B', 'G') /*  8  GRGR.. BGBG.. */+#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10bit raw bayer */+	/* 10bit raw bayer DPCM compressed to 8 bits */+#define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')+	/*+	 * 10bit raw bayer, expanded to 16 bits+	 * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb...+	 */+#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16  BGBG.. GRGR.. */++/* compressed formats */+#define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG   */+#define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG     */+#define V4L2_PIX_FMT_DV       v4l2_fourcc('d', 'v', 's', 'd') /* 1394          */+#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4    */++/*  Vendor-specific formats   */+#define V4L2_PIX_FMT_WNVA     v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */+#define V4L2_PIX_FMT_SN9C10X  v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */+#define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */+#define V4L2_PIX_FMT_PWC1     v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */+#define V4L2_PIX_FMT_PWC2     v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */+#define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */+#define V4L2_PIX_FMT_SPCA501  v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */+#define V4L2_PIX_FMT_SPCA505  v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */+#define V4L2_PIX_FMT_SPCA508  v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */+#define V4L2_PIX_FMT_SPCA561  v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */+#define V4L2_PIX_FMT_PAC207   v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */+#define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */+#define V4L2_PIX_FMT_SQ905C   v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */+#define V4L2_PIX_FMT_PJPG     v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */+#define V4L2_PIX_FMT_OV511    v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */+#define V4L2_PIX_FMT_OV518    v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */++/*+ *	F O R M A T   E N U M E R A T I O N+ */+struct v4l2_fmtdesc {+	__u32		    index;             /* Format number      */+	enum v4l2_buf_type  type;              /* buffer type        */+	__u32               flags;+	__u8		    description[32];   /* Description string */+	__u32		    pixelformat;       /* Format fourcc      */+	__u32		    reserved[4];+};++#define V4L2_FMT_FLAG_COMPRESSED 0x0001+#define V4L2_FMT_FLAG_EMULATED   0x0002++#if 1+	/* Experimental Frame Size and frame rate enumeration */+/*+ *	F R A M E   S I Z E   E N U M E R A T I O N+ */+enum v4l2_frmsizetypes {+	V4L2_FRMSIZE_TYPE_DISCRETE	= 1,+	V4L2_FRMSIZE_TYPE_CONTINUOUS	= 2,+	V4L2_FRMSIZE_TYPE_STEPWISE	= 3,+};++struct v4l2_frmsize_discrete {+	__u32			width;		/* Frame width [pixel] */+	__u32			height;		/* Frame height [pixel] */+};++struct v4l2_frmsize_stepwise {+	__u32			min_width;	/* Minimum frame width [pixel] */+	__u32			max_width;	/* Maximum frame width [pixel] */+	__u32			step_width;	/* Frame width step size [pixel] */+	__u32			min_height;	/* Minimum frame height [pixel] */+	__u32			max_height;	/* Maximum frame height [pixel] */+	__u32			step_height;	/* Frame height step size [pixel] */+};++union v4l2_frmsizeenum_u {					/* Frame size */+	struct v4l2_frmsize_discrete	discrete;+	struct v4l2_frmsize_stepwise	stepwise;+};+struct v4l2_frmsizeenum {+	__u32			index;		/* Frame size number */+	__u32			pixel_format;	/* Pixel format */+	__u32			type;		/* Frame size type the device supports. */+	union v4l2_frmsizeenum_u u;+	__u32   reserved[2];			/* Reserved space for future use */+};++/*+ *	F R A M E   R A T E   E N U M E R A T I O N+ */+enum v4l2_frmivaltypes {+	V4L2_FRMIVAL_TYPE_DISCRETE	= 1,+	V4L2_FRMIVAL_TYPE_CONTINUOUS	= 2,+	V4L2_FRMIVAL_TYPE_STEPWISE	= 3,+};++struct v4l2_frmival_stepwise {+	struct v4l2_fract	min;		/* Minimum frame interval [s] */+	struct v4l2_fract	max;		/* Maximum frame interval [s] */+	struct v4l2_fract	step;		/* Frame interval step size [s] */+};++union v4l2_frmivalenum_u {					/* Frame interval */+		struct v4l2_fract		discrete;+		struct v4l2_frmival_stepwise	stepwise;+};+struct v4l2_frmivalenum {+	__u32			index;		/* Frame format index */+	__u32			pixel_format;	/* Pixel format */+	__u32			width;		/* Frame width */+	__u32			height;		/* Frame height */+	__u32			type;		/* Frame interval type the device supports. */+	union v4l2_frmivalenum_u u;+	__u32	reserved[2];			/* Reserved space for future use */+};+#endif++/*+ *	T I M E C O D E+ */+struct v4l2_timecode {+	__u32	type;+	__u32	flags;+	__u8	frames;+	__u8	seconds;+	__u8	minutes;+	__u8	hours;+	__u8	userbits[4];+};++/*  Type  */+#define V4L2_TC_TYPE_24FPS		1+#define V4L2_TC_TYPE_25FPS		2+#define V4L2_TC_TYPE_30FPS		3+#define V4L2_TC_TYPE_50FPS		4+#define V4L2_TC_TYPE_60FPS		5++/*  Flags  */+#define V4L2_TC_FLAG_DROPFRAME		0x0001 /* "drop-frame" mode */+#define V4L2_TC_FLAG_COLORFRAME		0x0002+#define V4L2_TC_USERBITS_field		0x000C+#define V4L2_TC_USERBITS_USERDEFINED	0x0000+#define V4L2_TC_USERBITS_8BITCHARS	0x0008+/* The above is based on SMPTE timecodes */++struct v4l2_jpegcompression {+	int quality;++	int  APPn;              /* Number of APP segment to be written,+				 * must be 0..15 */+	int  APP_len;           /* Length of data in JPEG APPn segment */+	char APP_data[60];      /* Data in the JPEG APPn segment. */++	int  COM_len;           /* Length of data in JPEG COM segment */+	char COM_data[60];      /* Data in JPEG COM segment */++	__u32 jpeg_markers;     /* Which markers should go into the JPEG+				 * output. Unless you exactly know what+				 * you do, leave them untouched.+				 * Inluding less markers will make the+				 * resulting code smaller, but there will+				 * be fewer aplications which can read it.+				 * The presence of the APP and COM marker+				 * is influenced by APP_len and COM_len+				 * ONLY, not by this property! */+};++#define V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */+#define V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */+#define V4L2_JPEG_MARKER_DRI (1<<5)    /* Define Restart Interval */+#define V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */+#define V4L2_JPEG_MARKER_APP (1<<7)    /* App segment, driver will+					* allways use APP0 */++/*+ *	M E M O R Y - M A P P I N G   B U F F E R S+ */+struct v4l2_requestbuffers {+	__u32			count;+	enum v4l2_buf_type      type;+	enum v4l2_memory        memory;+	__u32			reserved[2];+};++union v4l2_buffer_u {+		__u32           offset;+		unsigned long   userptr;+};+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 v4l2_buffer_u u;+	__u32			length;+	__u32			input;+	__u32			reserved;+};++/*  Flags for 'flags' field */+#define V4L2_BUF_FLAG_MAPPED	0x0001  /* Buffer is mapped (flag) */+#define V4L2_BUF_FLAG_QUEUED	0x0002	/* Buffer is queued for processing */+#define V4L2_BUF_FLAG_DONE	0x0004	/* Buffer is ready */+#define V4L2_BUF_FLAG_KEYFRAME	0x0008	/* Image is a keyframe (I-frame) */+#define V4L2_BUF_FLAG_PFRAME	0x0010	/* Image is a P-frame */+#define V4L2_BUF_FLAG_BFRAME	0x0020	/* Image is a B-frame */+#define V4L2_BUF_FLAG_TIMECODE	0x0100	/* timecode field is valid */+#define V4L2_BUF_FLAG_INPUT     0x0200  /* input field is valid */++/*+ *	O V E R L A Y   P R E V I E W+ */+struct v4l2_framebuffer {+	__u32			capability;+	__u32			flags;+/* FIXME: in theory we should pass something like PCI device + memory+ * region + offset instead of some physical address */+	void                    *base;+	struct v4l2_pix_format	fmt;+};+/*  Flags for the 'capability' field. Read only */+#define V4L2_FBUF_CAP_EXTERNOVERLAY	0x0001+#define V4L2_FBUF_CAP_CHROMAKEY		0x0002+#define V4L2_FBUF_CAP_LIST_CLIPPING     0x0004+#define V4L2_FBUF_CAP_BITMAP_CLIPPING	0x0008+#define V4L2_FBUF_CAP_LOCAL_ALPHA	0x0010+#define V4L2_FBUF_CAP_GLOBAL_ALPHA	0x0020+#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA	0x0040+/*  Flags for the 'flags' field. */+#define V4L2_FBUF_FLAG_PRIMARY		0x0001+#define V4L2_FBUF_FLAG_OVERLAY		0x0002+#define V4L2_FBUF_FLAG_CHROMAKEY	0x0004+#define V4L2_FBUF_FLAG_LOCAL_ALPHA	0x0008+#define V4L2_FBUF_FLAG_GLOBAL_ALPHA	0x0010+#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA	0x0020++struct v4l2_clip {+	struct v4l2_rect        c;+	struct v4l2_clip	*next;+};++struct v4l2_window {+	struct v4l2_rect        w;+	enum v4l2_field  	field;+	__u32			chromakey;+	struct v4l2_clip	*clips;+	__u32			clipcount;+	void			*bitmap;+	__u8                    global_alpha;+};++/*+ *	C A P T U R E   P A R A M E T E R S+ */+struct v4l2_captureparm {+	__u32		   capability;	  /*  Supported modes */+	__u32		   capturemode;	  /*  Current mode */+	struct v4l2_fract  timeperframe;  /*  Time per frame in .1us units */+	__u32		   extendedmode;  /*  Driver-specific extensions */+	__u32              readbuffers;   /*  # of buffers for read */+	__u32		   reserved[4];+};++/*  Flags for 'capability' and 'capturemode' fields */+#define V4L2_MODE_HIGHQUALITY	0x0001	/*  High quality imaging mode */+#define V4L2_CAP_TIMEPERFRAME	0x1000	/*  timeperframe field is supported */++struct v4l2_outputparm {+	__u32		   capability;	 /*  Supported modes */+	__u32		   outputmode;	 /*  Current mode */+	struct v4l2_fract  timeperframe; /*  Time per frame in seconds */+	__u32		   extendedmode; /*  Driver-specific extensions */+	__u32              writebuffers; /*  # of buffers for write */+	__u32		   reserved[4];+};++/*+ *	I N P U T   I M A G E   C R O P P I N G+ */+struct v4l2_cropcap {+	enum v4l2_buf_type      type;+	struct v4l2_rect        bounds;+	struct v4l2_rect        defrect;+	struct v4l2_fract       pixelaspect;+};++struct v4l2_crop {+	enum v4l2_buf_type      type;+	struct v4l2_rect        c;+};++/*+ *      A N A L O G   V I D E O   S T A N D A R D+ */++typedef __u64 v4l2_std_id;++/* one bit for each */+#define V4L2_STD_PAL_B          ((v4l2_std_id)0x00000001)+#define V4L2_STD_PAL_B1         ((v4l2_std_id)0x00000002)+#define V4L2_STD_PAL_G          ((v4l2_std_id)0x00000004)+#define V4L2_STD_PAL_H          ((v4l2_std_id)0x00000008)+#define V4L2_STD_PAL_I          ((v4l2_std_id)0x00000010)+#define V4L2_STD_PAL_D          ((v4l2_std_id)0x00000020)+#define V4L2_STD_PAL_D1         ((v4l2_std_id)0x00000040)+#define V4L2_STD_PAL_K          ((v4l2_std_id)0x00000080)++#define V4L2_STD_PAL_M          ((v4l2_std_id)0x00000100)+#define V4L2_STD_PAL_N          ((v4l2_std_id)0x00000200)+#define V4L2_STD_PAL_Nc         ((v4l2_std_id)0x00000400)+#define V4L2_STD_PAL_60         ((v4l2_std_id)0x00000800)++#define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000)+#define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000)+#define V4L2_STD_NTSC_443       ((v4l2_std_id)0x00004000)+#define V4L2_STD_NTSC_M_KR      ((v4l2_std_id)0x00008000)++#define V4L2_STD_SECAM_B        ((v4l2_std_id)0x00010000)+#define V4L2_STD_SECAM_D        ((v4l2_std_id)0x00020000)+#define V4L2_STD_SECAM_G        ((v4l2_std_id)0x00040000)+#define V4L2_STD_SECAM_H        ((v4l2_std_id)0x00080000)+#define V4L2_STD_SECAM_K        ((v4l2_std_id)0x00100000)+#define V4L2_STD_SECAM_K1       ((v4l2_std_id)0x00200000)+#define V4L2_STD_SECAM_L        ((v4l2_std_id)0x00400000)+#define V4L2_STD_SECAM_LC       ((v4l2_std_id)0x00800000)++/* ATSC/HDTV */+#define V4L2_STD_ATSC_8_VSB     ((v4l2_std_id)0x01000000)+#define V4L2_STD_ATSC_16_VSB    ((v4l2_std_id)0x02000000)++/* FIXME:+   Although std_id is 64 bits, there is an issue on PPC32 architecture that+   makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding+   this value to 32 bits.+   As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide),+   it should work fine. However, if needed to add more than two standards,+   v4l2-common.c should be fixed.+ */++/* some merged standards */+#define V4L2_STD_MN	(V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC)+#define V4L2_STD_B	(V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B)+#define V4L2_STD_GH	(V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H)+#define V4L2_STD_DK	(V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK)++/* some common needed stuff */+#define V4L2_STD_PAL_BG		(V4L2_STD_PAL_B		|\+				 V4L2_STD_PAL_B1	|\+				 V4L2_STD_PAL_G)+#define V4L2_STD_PAL_DK		(V4L2_STD_PAL_D		|\+				 V4L2_STD_PAL_D1	|\+				 V4L2_STD_PAL_K)+#define V4L2_STD_PAL		(V4L2_STD_PAL_BG	|\+				 V4L2_STD_PAL_DK	|\+				 V4L2_STD_PAL_H		|\+				 V4L2_STD_PAL_I)+#define V4L2_STD_NTSC           (V4L2_STD_NTSC_M	|\+				 V4L2_STD_NTSC_M_JP     |\+				 V4L2_STD_NTSC_M_KR)+#define V4L2_STD_SECAM_DK      	(V4L2_STD_SECAM_D	|\+				 V4L2_STD_SECAM_K	|\+				 V4L2_STD_SECAM_K1)+#define V4L2_STD_SECAM		(V4L2_STD_SECAM_B	|\+				 V4L2_STD_SECAM_G	|\+				 V4L2_STD_SECAM_H	|\+				 V4L2_STD_SECAM_DK	|\+				 V4L2_STD_SECAM_L       |\+				 V4L2_STD_SECAM_LC)++#define V4L2_STD_525_60		(V4L2_STD_PAL_M		|\+				 V4L2_STD_PAL_60	|\+				 V4L2_STD_NTSC		|\+				 V4L2_STD_NTSC_443)+#define V4L2_STD_625_50		(V4L2_STD_PAL		|\+				 V4L2_STD_PAL_N		|\+				 V4L2_STD_PAL_Nc	|\+				 V4L2_STD_SECAM)+#define V4L2_STD_ATSC           (V4L2_STD_ATSC_8_VSB    |\+				 V4L2_STD_ATSC_16_VSB)++#define V4L2_STD_UNKNOWN        0+#define V4L2_STD_ALL            (V4L2_STD_525_60	|\+				 V4L2_STD_625_50)++struct v4l2_standard {+	__u32		     index;+	v4l2_std_id          id;+	__u8		     name[24];+	struct v4l2_fract    frameperiod; /* Frames, not fields */+	__u32		     framelines;+	__u32		     reserved[4];+};++/*+ *	V I D E O   I N P U T S+ */+struct v4l2_input {+	__u32	     index;		/*  Which input */+	__u8	     name[32];		/*  Label */+	__u32	     type;		/*  Type of input */+	__u32	     audioset;		/*  Associated audios (bitfield) */+	__u32        tuner;             /*  Associated tuner */+	v4l2_std_id  std;+	__u32	     status;+	__u32	     reserved[4];+};++/*  Values for the 'type' field */+#define V4L2_INPUT_TYPE_TUNER		1+#define V4L2_INPUT_TYPE_CAMERA		2++/* field 'status' - general */+#define V4L2_IN_ST_NO_POWER    0x00000001  /* Attached device is off */+#define V4L2_IN_ST_NO_SIGNAL   0x00000002+#define V4L2_IN_ST_NO_COLOR    0x00000004++/* field 'status' - sensor orientation */+/* If sensor is mounted upside down set both bits */+#define V4L2_IN_ST_HFLIP       0x00000010 /* Frames are flipped horizontally */+#define V4L2_IN_ST_VFLIP       0x00000020 /* Frames are flipped vertically */++/* field 'status' - analog */+#define V4L2_IN_ST_NO_H_LOCK   0x00000100  /* No horizontal sync lock */+#define V4L2_IN_ST_COLOR_KILL  0x00000200  /* Color killer is active */++/* field 'status' - digital */+#define V4L2_IN_ST_NO_SYNC     0x00010000  /* No synchronization lock */+#define V4L2_IN_ST_NO_EQU      0x00020000  /* No equalizer lock */+#define V4L2_IN_ST_NO_CARRIER  0x00040000  /* Carrier recovery failed */++/* field 'status' - VCR and set-top box */+#define V4L2_IN_ST_MACROVISION 0x01000000  /* Macrovision detected */+#define V4L2_IN_ST_NO_ACCESS   0x02000000  /* Conditional access denied */+#define V4L2_IN_ST_VTR         0x04000000  /* VTR time constant */++/*+ *	V I D E O   O U T P U T S+ */+struct v4l2_output {+	__u32	     index;		/*  Which output */+	__u8	     name[32];		/*  Label */+	__u32	     type;		/*  Type of output */+	__u32	     audioset;		/*  Associated audios (bitfield) */+	__u32	     modulator;         /*  Associated modulator */+	v4l2_std_id  std;+	__u32	     reserved[4];+};+/*  Values for the 'type' field */+#define V4L2_OUTPUT_TYPE_MODULATOR		1+#define V4L2_OUTPUT_TYPE_ANALOG			2+#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY	3++/*+ *	C O N T R O L S+ */+struct v4l2_control {+	__u32		     id;+	__s32		     value;+};++union v4l2_ext_control_u {+	__s32 value;+	__s64 value64;+	char *string;+} __attribute__ ((packed));+struct v4l2_ext_control {+	__u32 id;+	__u32 size;+	__u32 reserved2[1];+  union v4l2_ext_control_u u;+} __attribute__ ((packed));++struct v4l2_ext_controls {+	__u32 ctrl_class;+	__u32 count;+	__u32 error_idx;+	__u32 reserved[2];+	struct v4l2_ext_control *controls;+};++/*  Values for ctrl_class field */+#define V4L2_CTRL_CLASS_USER 0x00980000	/* Old-style 'user' controls */+#define V4L2_CTRL_CLASS_MPEG 0x00990000	/* MPEG-compression controls */+#define V4L2_CTRL_CLASS_CAMERA 0x009a0000	/* Camera class controls */+#define V4L2_CTRL_CLASS_FM_TX 0x009b0000	/* FM Modulator control class */++#define V4L2_CTRL_ID_MASK      	  (0x0fffffff)+#define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)+#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)++/*  Used in the VIDIOC_QUERYCTRL ioctl for querying controls */+struct v4l2_queryctrl {+	__u32		     id;+	enum v4l2_ctrl_type  type;+	__u8		     name[32];	/* Whatever */+	__s32		     minimum;	/* Note signedness */+	__s32		     maximum;+	__s32		     step;+	__s32		     default_value;+	__u32                flags;+	__u32		     reserved[2];+};++/*  Used in the VIDIOC_QUERYMENU ioctl for querying menu items */+struct v4l2_querymenu {+	__u32		id;+	__u32		index;+	__u8		name[32];	/* Whatever */+	__u32		reserved;+};++/*  Control flags  */+#define V4L2_CTRL_FLAG_DISABLED		0x0001+#define V4L2_CTRL_FLAG_GRABBED		0x0002+#define V4L2_CTRL_FLAG_READ_ONLY 	0x0004+#define V4L2_CTRL_FLAG_UPDATE 		0x0008+#define V4L2_CTRL_FLAG_INACTIVE 	0x0010+#define V4L2_CTRL_FLAG_SLIDER 		0x0020+#define V4L2_CTRL_FLAG_WRITE_ONLY 	0x0040++/*  Query flag, to be ORed with the control ID */+#define V4L2_CTRL_FLAG_NEXT_CTRL	0x80000000++/*  User-class control IDs defined by V4L2 */+#define V4L2_CID_BASE			(V4L2_CTRL_CLASS_USER | 0x900)+#define V4L2_CID_USER_BASE 		V4L2_CID_BASE+/*  IDs reserved for driver specific controls */+#define V4L2_CID_PRIVATE_BASE		0x08000000++#define V4L2_CID_USER_CLASS 		(V4L2_CTRL_CLASS_USER | 1)+#define V4L2_CID_BRIGHTNESS		(V4L2_CID_BASE+0)+#define V4L2_CID_CONTRAST		(V4L2_CID_BASE+1)+#define V4L2_CID_SATURATION		(V4L2_CID_BASE+2)+#define V4L2_CID_HUE			(V4L2_CID_BASE+3)+#define V4L2_CID_AUDIO_VOLUME		(V4L2_CID_BASE+5)+#define V4L2_CID_AUDIO_BALANCE		(V4L2_CID_BASE+6)+#define V4L2_CID_AUDIO_BASS		(V4L2_CID_BASE+7)+#define V4L2_CID_AUDIO_TREBLE		(V4L2_CID_BASE+8)+#define V4L2_CID_AUDIO_MUTE		(V4L2_CID_BASE+9)+#define V4L2_CID_AUDIO_LOUDNESS		(V4L2_CID_BASE+10)+#define V4L2_CID_BLACK_LEVEL		(V4L2_CID_BASE+11) /* Deprecated */+#define V4L2_CID_AUTO_WHITE_BALANCE	(V4L2_CID_BASE+12)+#define V4L2_CID_DO_WHITE_BALANCE	(V4L2_CID_BASE+13)+#define V4L2_CID_RED_BALANCE		(V4L2_CID_BASE+14)+#define V4L2_CID_BLUE_BALANCE		(V4L2_CID_BASE+15)+#define V4L2_CID_GAMMA			(V4L2_CID_BASE+16)+#define V4L2_CID_WHITENESS		(V4L2_CID_GAMMA) /* Deprecated */+#define V4L2_CID_EXPOSURE		(V4L2_CID_BASE+17)+#define V4L2_CID_AUTOGAIN		(V4L2_CID_BASE+18)+#define V4L2_CID_GAIN			(V4L2_CID_BASE+19)+#define V4L2_CID_HFLIP			(V4L2_CID_BASE+20)+#define V4L2_CID_VFLIP			(V4L2_CID_BASE+21)++/* Deprecated; use V4L2_CID_PAN_RESET and V4L2_CID_TILT_RESET */+#define V4L2_CID_HCENTER		(V4L2_CID_BASE+22)+#define V4L2_CID_VCENTER		(V4L2_CID_BASE+23)++#define V4L2_CID_POWER_LINE_FREQUENCY	(V4L2_CID_BASE+24)+enum v4l2_power_line_frequency {+	V4L2_CID_POWER_LINE_FREQUENCY_DISABLED	= 0,+	V4L2_CID_POWER_LINE_FREQUENCY_50HZ	= 1,+	V4L2_CID_POWER_LINE_FREQUENCY_60HZ	= 2,+};+#define V4L2_CID_HUE_AUTO			(V4L2_CID_BASE+25)+#define V4L2_CID_WHITE_BALANCE_TEMPERATURE	(V4L2_CID_BASE+26)+#define V4L2_CID_SHARPNESS			(V4L2_CID_BASE+27)+#define V4L2_CID_BACKLIGHT_COMPENSATION 	(V4L2_CID_BASE+28)+#define V4L2_CID_CHROMA_AGC                     (V4L2_CID_BASE+29)+#define V4L2_CID_COLOR_KILLER                   (V4L2_CID_BASE+30)+#define V4L2_CID_COLORFX			(V4L2_CID_BASE+31)+enum v4l2_colorfx {+	V4L2_COLORFX_NONE	= 0,+	V4L2_COLORFX_BW		= 1,+	V4L2_COLORFX_SEPIA	= 2,+};+#define V4L2_CID_AUTOBRIGHTNESS			(V4L2_CID_BASE+32)+#define V4L2_CID_BAND_STOP_FILTER		(V4L2_CID_BASE+33)++/* last CID + 1 */+#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+34)++/*  MPEG-class control IDs defined by V4L2 */+#define V4L2_CID_MPEG_BASE 			(V4L2_CTRL_CLASS_MPEG | 0x900)+#define V4L2_CID_MPEG_CLASS 			(V4L2_CTRL_CLASS_MPEG | 1)++/*  MPEG streams */+#define V4L2_CID_MPEG_STREAM_TYPE 		(V4L2_CID_MPEG_BASE+0)+enum v4l2_mpeg_stream_type {+	V4L2_MPEG_STREAM_TYPE_MPEG2_PS   = 0, /* MPEG-2 program stream */+	V4L2_MPEG_STREAM_TYPE_MPEG2_TS   = 1, /* MPEG-2 transport stream */+	V4L2_MPEG_STREAM_TYPE_MPEG1_SS   = 2, /* MPEG-1 system stream */+	V4L2_MPEG_STREAM_TYPE_MPEG2_DVD  = 3, /* MPEG-2 DVD-compatible stream */+	V4L2_MPEG_STREAM_TYPE_MPEG1_VCD  = 4, /* MPEG-1 VCD-compatible stream */+	V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */+};+#define V4L2_CID_MPEG_STREAM_PID_PMT 		(V4L2_CID_MPEG_BASE+1)+#define V4L2_CID_MPEG_STREAM_PID_AUDIO 		(V4L2_CID_MPEG_BASE+2)+#define V4L2_CID_MPEG_STREAM_PID_VIDEO 		(V4L2_CID_MPEG_BASE+3)+#define V4L2_CID_MPEG_STREAM_PID_PCR 		(V4L2_CID_MPEG_BASE+4)+#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO 	(V4L2_CID_MPEG_BASE+5)+#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO 	(V4L2_CID_MPEG_BASE+6)+#define V4L2_CID_MPEG_STREAM_VBI_FMT 		(V4L2_CID_MPEG_BASE+7)+enum v4l2_mpeg_stream_vbi_fmt {+	V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,  /* No VBI in the MPEG stream */+	V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,  /* VBI in private packets, IVTV format */+};++/*  MPEG audio */+#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ 	(V4L2_CID_MPEG_BASE+100)+enum v4l2_mpeg_audio_sampling_freq {+	V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,+	V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,+	V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,+};+#define V4L2_CID_MPEG_AUDIO_ENCODING 		(V4L2_CID_MPEG_BASE+101)+enum v4l2_mpeg_audio_encoding {+	V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,+	V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,+	V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,+	V4L2_MPEG_AUDIO_ENCODING_AAC     = 3,+	V4L2_MPEG_AUDIO_ENCODING_AC3     = 4,+};+#define V4L2_CID_MPEG_AUDIO_L1_BITRATE 		(V4L2_CID_MPEG_BASE+102)+enum v4l2_mpeg_audio_l1_bitrate {+	V4L2_MPEG_AUDIO_L1_BITRATE_32K  = 0,+	V4L2_MPEG_AUDIO_L1_BITRATE_64K  = 1,+	V4L2_MPEG_AUDIO_L1_BITRATE_96K  = 2,+	V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,+	V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,+	V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,+	V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,+	V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,+	V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,+	V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,+	V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,+	V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,+	V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,+	V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,+};+#define V4L2_CID_MPEG_AUDIO_L2_BITRATE 		(V4L2_CID_MPEG_BASE+103)+enum v4l2_mpeg_audio_l2_bitrate {+	V4L2_MPEG_AUDIO_L2_BITRATE_32K  = 0,+	V4L2_MPEG_AUDIO_L2_BITRATE_48K  = 1,+	V4L2_MPEG_AUDIO_L2_BITRATE_56K  = 2,+	V4L2_MPEG_AUDIO_L2_BITRATE_64K  = 3,+	V4L2_MPEG_AUDIO_L2_BITRATE_80K  = 4,+	V4L2_MPEG_AUDIO_L2_BITRATE_96K  = 5,+	V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,+	V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,+	V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,+	V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,+	V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,+	V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,+	V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,+	V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,+};+#define V4L2_CID_MPEG_AUDIO_L3_BITRATE 		(V4L2_CID_MPEG_BASE+104)+enum v4l2_mpeg_audio_l3_bitrate {+	V4L2_MPEG_AUDIO_L3_BITRATE_32K  = 0,+	V4L2_MPEG_AUDIO_L3_BITRATE_40K  = 1,+	V4L2_MPEG_AUDIO_L3_BITRATE_48K  = 2,+	V4L2_MPEG_AUDIO_L3_BITRATE_56K  = 3,+	V4L2_MPEG_AUDIO_L3_BITRATE_64K  = 4,+	V4L2_MPEG_AUDIO_L3_BITRATE_80K  = 5,+	V4L2_MPEG_AUDIO_L3_BITRATE_96K  = 6,+	V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,+	V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,+	V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,+	V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,+	V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,+	V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,+	V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,+};+#define V4L2_CID_MPEG_AUDIO_MODE 		(V4L2_CID_MPEG_BASE+105)+enum v4l2_mpeg_audio_mode {+	V4L2_MPEG_AUDIO_MODE_STEREO       = 0,+	V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,+	V4L2_MPEG_AUDIO_MODE_DUAL         = 2,+	V4L2_MPEG_AUDIO_MODE_MONO         = 3,+};+#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION 	(V4L2_CID_MPEG_BASE+106)+enum v4l2_mpeg_audio_mode_extension {+	V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4  = 0,+	V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8  = 1,+	V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,+	V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,+};+#define V4L2_CID_MPEG_AUDIO_EMPHASIS 		(V4L2_CID_MPEG_BASE+107)+enum v4l2_mpeg_audio_emphasis {+	V4L2_MPEG_AUDIO_EMPHASIS_NONE         = 0,+	V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,+	V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17    = 2,+};+#define V4L2_CID_MPEG_AUDIO_CRC 		(V4L2_CID_MPEG_BASE+108)+enum v4l2_mpeg_audio_crc {+	V4L2_MPEG_AUDIO_CRC_NONE  = 0,+	V4L2_MPEG_AUDIO_CRC_CRC16 = 1,+};+#define V4L2_CID_MPEG_AUDIO_MUTE 		(V4L2_CID_MPEG_BASE+109)+#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE		(V4L2_CID_MPEG_BASE+110)+#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE		(V4L2_CID_MPEG_BASE+111)+enum v4l2_mpeg_audio_ac3_bitrate {+	V4L2_MPEG_AUDIO_AC3_BITRATE_32K  = 0,+	V4L2_MPEG_AUDIO_AC3_BITRATE_40K  = 1,+	V4L2_MPEG_AUDIO_AC3_BITRATE_48K  = 2,+	V4L2_MPEG_AUDIO_AC3_BITRATE_56K  = 3,+	V4L2_MPEG_AUDIO_AC3_BITRATE_64K  = 4,+	V4L2_MPEG_AUDIO_AC3_BITRATE_80K  = 5,+	V4L2_MPEG_AUDIO_AC3_BITRATE_96K  = 6,+	V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,+	V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,+	V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,+	V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,+	V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,+	V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,+	V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,+	V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,+	V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,+	V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,+	V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,+	V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,+};++/*  MPEG video */+#define V4L2_CID_MPEG_VIDEO_ENCODING 		(V4L2_CID_MPEG_BASE+200)+enum v4l2_mpeg_video_encoding {+	V4L2_MPEG_VIDEO_ENCODING_MPEG_1     = 0,+	V4L2_MPEG_VIDEO_ENCODING_MPEG_2     = 1,+	V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,+};+#define V4L2_CID_MPEG_VIDEO_ASPECT 		(V4L2_CID_MPEG_BASE+201)+enum v4l2_mpeg_video_aspect {+	V4L2_MPEG_VIDEO_ASPECT_1x1     = 0,+	V4L2_MPEG_VIDEO_ASPECT_4x3     = 1,+	V4L2_MPEG_VIDEO_ASPECT_16x9    = 2,+	V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,+};+#define V4L2_CID_MPEG_VIDEO_B_FRAMES 		(V4L2_CID_MPEG_BASE+202)+#define V4L2_CID_MPEG_VIDEO_GOP_SIZE 		(V4L2_CID_MPEG_BASE+203)+#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE 	(V4L2_CID_MPEG_BASE+204)+#define V4L2_CID_MPEG_VIDEO_PULLDOWN 		(V4L2_CID_MPEG_BASE+205)+#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE 	(V4L2_CID_MPEG_BASE+206)+enum v4l2_mpeg_video_bitrate_mode {+	V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,+	V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,+};+#define V4L2_CID_MPEG_VIDEO_BITRATE 		(V4L2_CID_MPEG_BASE+207)+#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK 	(V4L2_CID_MPEG_BASE+208)+#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)+#define V4L2_CID_MPEG_VIDEO_MUTE 		(V4L2_CID_MPEG_BASE+210)+#define V4L2_CID_MPEG_VIDEO_MUTE_YUV 		(V4L2_CID_MPEG_BASE+211)++/*  MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */+#define V4L2_CID_MPEG_CX2341X_BASE 				(V4L2_CTRL_CLASS_MPEG | 0x1000)+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE 	(V4L2_CID_MPEG_CX2341X_BASE+0)+enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {+	V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,+	V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO   = 1,+};+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER 		(V4L2_CID_MPEG_CX2341X_BASE+1)+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE 	(V4L2_CID_MPEG_CX2341X_BASE+2)+enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {+	V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF                  = 0,+	V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR               = 1,+	V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT              = 2,+	V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE      = 3,+	V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,+};+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE 	(V4L2_CID_MPEG_CX2341X_BASE+3)+enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {+	V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF    = 0,+	V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,+};+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE 	(V4L2_CID_MPEG_CX2341X_BASE+4)+enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {+	V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,+	V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO   = 1,+};+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER 		(V4L2_CID_MPEG_CX2341X_BASE+5)+#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE 		(V4L2_CID_MPEG_CX2341X_BASE+6)+enum v4l2_mpeg_cx2341x_video_median_filter_type {+	V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF      = 0,+	V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR      = 1,+	V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT     = 2,+	V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,+	V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG     = 4,+};+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM 	(V4L2_CID_MPEG_CX2341X_BASE+7)+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP 	(V4L2_CID_MPEG_CX2341X_BASE+8)+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM	(V4L2_CID_MPEG_CX2341X_BASE+9)+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP 	(V4L2_CID_MPEG_CX2341X_BASE+10)+#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS 	(V4L2_CID_MPEG_CX2341X_BASE+11)++/*  Camera class control IDs */+#define V4L2_CID_CAMERA_CLASS_BASE 	(V4L2_CTRL_CLASS_CAMERA | 0x900)+#define V4L2_CID_CAMERA_CLASS 		(V4L2_CTRL_CLASS_CAMERA | 1)++#define V4L2_CID_EXPOSURE_AUTO			(V4L2_CID_CAMERA_CLASS_BASE+1)+enum  v4l2_exposure_auto_type {+	V4L2_EXPOSURE_AUTO = 0,+	V4L2_EXPOSURE_MANUAL = 1,+	V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,+	V4L2_EXPOSURE_APERTURE_PRIORITY = 3+};+#define V4L2_CID_EXPOSURE_ABSOLUTE		(V4L2_CID_CAMERA_CLASS_BASE+2)+#define V4L2_CID_EXPOSURE_AUTO_PRIORITY		(V4L2_CID_CAMERA_CLASS_BASE+3)++#define V4L2_CID_PAN_RELATIVE			(V4L2_CID_CAMERA_CLASS_BASE+4)+#define V4L2_CID_TILT_RELATIVE			(V4L2_CID_CAMERA_CLASS_BASE+5)+#define V4L2_CID_PAN_RESET			(V4L2_CID_CAMERA_CLASS_BASE+6)+#define V4L2_CID_TILT_RESET			(V4L2_CID_CAMERA_CLASS_BASE+7)++#define V4L2_CID_PAN_ABSOLUTE			(V4L2_CID_CAMERA_CLASS_BASE+8)+#define V4L2_CID_TILT_ABSOLUTE			(V4L2_CID_CAMERA_CLASS_BASE+9)++#define V4L2_CID_FOCUS_ABSOLUTE			(V4L2_CID_CAMERA_CLASS_BASE+10)+#define V4L2_CID_FOCUS_RELATIVE			(V4L2_CID_CAMERA_CLASS_BASE+11)+#define V4L2_CID_FOCUS_AUTO			(V4L2_CID_CAMERA_CLASS_BASE+12)++#define V4L2_CID_ZOOM_ABSOLUTE			(V4L2_CID_CAMERA_CLASS_BASE+13)+#define V4L2_CID_ZOOM_RELATIVE			(V4L2_CID_CAMERA_CLASS_BASE+14)+#define V4L2_CID_ZOOM_CONTINUOUS		(V4L2_CID_CAMERA_CLASS_BASE+15)++#define V4L2_CID_PRIVACY			(V4L2_CID_CAMERA_CLASS_BASE+16)++/* FM Modulator class control IDs */+#define V4L2_CID_FM_TX_CLASS_BASE		(V4L2_CTRL_CLASS_FM_TX | 0x900)+#define V4L2_CID_FM_TX_CLASS			(V4L2_CTRL_CLASS_FM_TX | 1)++#define V4L2_CID_RDS_TX_DEVIATION		(V4L2_CID_FM_TX_CLASS_BASE + 1)+#define V4L2_CID_RDS_TX_PI			(V4L2_CID_FM_TX_CLASS_BASE + 2)+#define V4L2_CID_RDS_TX_PTY			(V4L2_CID_FM_TX_CLASS_BASE + 3)+#define V4L2_CID_RDS_TX_PS_NAME			(V4L2_CID_FM_TX_CLASS_BASE + 5)+#define V4L2_CID_RDS_TX_RADIO_TEXT		(V4L2_CID_FM_TX_CLASS_BASE + 6)++#define V4L2_CID_AUDIO_LIMITER_ENABLED		(V4L2_CID_FM_TX_CLASS_BASE + 64)+#define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME	(V4L2_CID_FM_TX_CLASS_BASE + 65)+#define V4L2_CID_AUDIO_LIMITER_DEVIATION	(V4L2_CID_FM_TX_CLASS_BASE + 66)++#define V4L2_CID_AUDIO_COMPRESSION_ENABLED	(V4L2_CID_FM_TX_CLASS_BASE + 80)+#define V4L2_CID_AUDIO_COMPRESSION_GAIN		(V4L2_CID_FM_TX_CLASS_BASE + 81)+#define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD	(V4L2_CID_FM_TX_CLASS_BASE + 82)+#define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME	(V4L2_CID_FM_TX_CLASS_BASE + 83)+#define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME	(V4L2_CID_FM_TX_CLASS_BASE + 84)++#define V4L2_CID_PILOT_TONE_ENABLED		(V4L2_CID_FM_TX_CLASS_BASE + 96)+#define V4L2_CID_PILOT_TONE_DEVIATION		(V4L2_CID_FM_TX_CLASS_BASE + 97)+#define V4L2_CID_PILOT_TONE_FREQUENCY		(V4L2_CID_FM_TX_CLASS_BASE + 98)++#define V4L2_CID_TUNE_PREEMPHASIS		(V4L2_CID_FM_TX_CLASS_BASE + 112)+enum v4l2_preemphasis {+	V4L2_PREEMPHASIS_DISABLED	= 0,+	V4L2_PREEMPHASIS_50_uS		= 1,+	V4L2_PREEMPHASIS_75_uS		= 2,+};+#define V4L2_CID_TUNE_POWER_LEVEL		(V4L2_CID_FM_TX_CLASS_BASE + 113)+#define V4L2_CID_TUNE_ANTENNA_CAPACITOR		(V4L2_CID_FM_TX_CLASS_BASE + 114)++/*+ *	T U N I N G+ */+struct v4l2_tuner {+	__u32                   index;+	__u8			name[32];+	enum v4l2_tuner_type    type;+	__u32			capability;+	__u32			rangelow;+	__u32			rangehigh;+	__u32			rxsubchans;+	__u32			audmode;+	__s32			signal;+	__s32			afc;+	__u32			reserved[4];+};++struct v4l2_modulator {+	__u32			index;+	__u8			name[32];+	__u32			capability;+	__u32			rangelow;+	__u32			rangehigh;+	__u32			txsubchans;+	__u32			reserved[4];+};++/*  Flags for the 'capability' field */+#define V4L2_TUNER_CAP_LOW		0x0001+#define V4L2_TUNER_CAP_NORM		0x0002+#define V4L2_TUNER_CAP_STEREO		0x0010+#define V4L2_TUNER_CAP_LANG2		0x0020+#define V4L2_TUNER_CAP_SAP		0x0020+#define V4L2_TUNER_CAP_LANG1		0x0040+#define V4L2_TUNER_CAP_RDS		0x0080++/*  Flags for the 'rxsubchans' field */+#define V4L2_TUNER_SUB_MONO		0x0001+#define V4L2_TUNER_SUB_STEREO		0x0002+#define V4L2_TUNER_SUB_LANG2		0x0004+#define V4L2_TUNER_SUB_SAP		0x0004+#define V4L2_TUNER_SUB_LANG1		0x0008+#define V4L2_TUNER_SUB_RDS		0x0010++/*  Values for the 'audmode' field */+#define V4L2_TUNER_MODE_MONO		0x0000+#define V4L2_TUNER_MODE_STEREO		0x0001+#define V4L2_TUNER_MODE_LANG2		0x0002+#define V4L2_TUNER_MODE_SAP		0x0002+#define V4L2_TUNER_MODE_LANG1		0x0003+#define V4L2_TUNER_MODE_LANG1_LANG2	0x0004++struct v4l2_frequency {+	__u32		      tuner;+	enum v4l2_tuner_type  type;+	__u32		      frequency;+	__u32		      reserved[8];+};++struct v4l2_hw_freq_seek {+	__u32		      tuner;+	enum v4l2_tuner_type  type;+	__u32		      seek_upward;+	__u32		      wrap_around;+	__u32		      reserved[8];+};++/*+ *	R D S+ */++struct v4l2_rds_data {+	__u8 	lsb;+	__u8 	msb;+	__u8 	block;+} __attribute__ ((packed));++#define V4L2_RDS_BLOCK_MSK 	 0x7+#define V4L2_RDS_BLOCK_A 	 0+#define V4L2_RDS_BLOCK_B 	 1+#define V4L2_RDS_BLOCK_C 	 2+#define V4L2_RDS_BLOCK_D 	 3+#define V4L2_RDS_BLOCK_C_ALT 	 4+#define V4L2_RDS_BLOCK_INVALID 	 7++#define V4L2_RDS_BLOCK_CORRECTED 0x40+#define V4L2_RDS_BLOCK_ERROR 	 0x80++/*+ *	A U D I O+ */+struct v4l2_audio {+	__u32	index;+	__u8	name[32];+	__u32	capability;+	__u32	mode;+	__u32	reserved[2];+};++/*  Flags for the 'capability' field */+#define V4L2_AUDCAP_STEREO		0x00001+#define V4L2_AUDCAP_AVL			0x00002++/*  Flags for the 'mode' field */+#define V4L2_AUDMODE_AVL		0x00001++struct v4l2_audioout {+	__u32	index;+	__u8	name[32];+	__u32	capability;+	__u32	mode;+	__u32	reserved[2];+};++/*+ *	M P E G   S E R V I C E S+ *+ *	NOTE: EXPERIMENTAL API+ */+#if 1+#define V4L2_ENC_IDX_FRAME_I    (0)+#define V4L2_ENC_IDX_FRAME_P    (1)+#define V4L2_ENC_IDX_FRAME_B    (2)+#define V4L2_ENC_IDX_FRAME_MASK (0xf)++struct v4l2_enc_idx_entry {+	__u64 offset;+	__u64 pts;+	__u32 length;+	__u32 flags;+	__u32 reserved[2];+};++#define V4L2_ENC_IDX_ENTRIES (64)+struct v4l2_enc_idx {+	__u32 entries;+	__u32 entries_cap;+	__u32 reserved[4];+	struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];+};+++#define V4L2_ENC_CMD_START      (0)+#define V4L2_ENC_CMD_STOP       (1)+#define V4L2_ENC_CMD_PAUSE      (2)+#define V4L2_ENC_CMD_RESUME     (3)++/* Flags for V4L2_ENC_CMD_STOP */+#define V4L2_ENC_CMD_STOP_AT_GOP_END    (1 << 0)++struct v4l2_encoder_cmd_u_s {+			__u32 data[8];+};+union v4l2_encoder_cmd_u {+	struct v4l2_encoder_cmd_u_s raw;+};+struct v4l2_encoder_cmd {+	__u32 cmd;+	__u32 flags;+  union v4l2_encoder_cmd_u u;+};++#endif+++/*+ *	D A T A   S E R V I C E S   ( V B I )+ *+ *	Data services API by Michael Schimek+ */++/* Raw VBI */+struct v4l2_vbi_format {+	__u32	sampling_rate;		/* in 1 Hz */+	__u32	offset;+	__u32	samples_per_line;+	__u32	sample_format;		/* V4L2_PIX_FMT_* */+	__s32	start[2];+	__u32	count[2];+	__u32	flags;			/* V4L2_VBI_* */+	__u32	reserved[2];		/* must be zero */+};++/*  VBI flags  */+#define V4L2_VBI_UNSYNC		(1 << 0)+#define V4L2_VBI_INTERLACED	(1 << 1)++/* Sliced VBI+ *+ *    This implements is a proposal V4L2 API to allow SLICED VBI+ * required for some hardware encoders. It should change without+ * notice in the definitive implementation.+ */++struct v4l2_sliced_vbi_format {+	__u16   service_set;+	/* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field+	   service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field+				 (equals frame lines 313-336 for 625 line video+				  standards, 263-286 for 525 line standards) */+	__u16   service_lines[2][24];+	__u32   io_size;+	__u32   reserved[2];            /* must be zero */+};++/* Teletext World System Teletext+   (WST), defined on ITU-R BT.653-2 */+#define V4L2_SLICED_TELETEXT_B          (0x0001)+/* Video Program System, defined on ETS 300 231*/+#define V4L2_SLICED_VPS                 (0x0400)+/* Closed Caption, defined on EIA-608 */+#define V4L2_SLICED_CAPTION_525         (0x1000)+/* Wide Screen System, defined on ITU-R BT1119.1 */+#define V4L2_SLICED_WSS_625             (0x4000)++#define V4L2_SLICED_VBI_525             (V4L2_SLICED_CAPTION_525)+#define V4L2_SLICED_VBI_625             (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)++struct v4l2_sliced_vbi_cap {+	__u16   service_set;+	/* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field+	   service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field+				 (equals frame lines 313-336 for 625 line video+				  standards, 263-286 for 525 line standards) */+	__u16   service_lines[2][24];+	enum v4l2_buf_type type;+	__u32   reserved[3];    /* must be 0 */+};++struct v4l2_sliced_vbi_data {+	__u32   id;+	__u32   field;          /* 0: first field, 1: second field */+	__u32   line;           /* 1-23 */+	__u32   reserved;       /* must be 0 */+	__u8    data[48];+};++/*+ * Sliced VBI data inserted into MPEG Streams+ */++/*+ * V4L2_MPEG_STREAM_VBI_FMT_IVTV:+ *+ * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an+ * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI+ * data+ *+ * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header+ * definitions are not included here.  See the MPEG-2 specifications for details+ * on these headers.+ */++/* Line type IDs */+#define V4L2_MPEG_VBI_IVTV_TELETEXT_B     (1)+#define V4L2_MPEG_VBI_IVTV_CAPTION_525    (4)+#define V4L2_MPEG_VBI_IVTV_WSS_625        (5)+#define V4L2_MPEG_VBI_IVTV_VPS            (7)++struct v4l2_mpeg_vbi_itv0_line {+	__u8 id;	/* One of V4L2_MPEG_VBI_IVTV_* above */+	__u8 data[42];	/* Sliced VBI data for the line */+} __attribute__ ((packed));++struct v4l2_mpeg_vbi_itv0 {+	__le32 linemask[2]; /* Bitmasks of VBI service lines present */+	struct v4l2_mpeg_vbi_itv0_line line[35];+} __attribute__ ((packed));++struct v4l2_mpeg_vbi_ITV0 {+	struct v4l2_mpeg_vbi_itv0_line line[36];+} __attribute__ ((packed));++#define V4L2_MPEG_VBI_IVTV_MAGIC0	"itv0"+#define V4L2_MPEG_VBI_IVTV_MAGIC1	"ITV0"++union v4l2_mpeg_vbi_fmt_ivtv_u {+		struct v4l2_mpeg_vbi_itv0 itv0;+		struct v4l2_mpeg_vbi_ITV0 ITV0;+} __attribute__ ((packed));+struct v4l2_mpeg_vbi_fmt_ivtv {+	__u8 magic[4];+	union v4l2_mpeg_vbi_fmt_ivtv_u u;+} __attribute__ ((packed));++/*+ *	A G G R E G A T E   S T R U C T U R E S+ */++/*	Stream data format+ */+union v4l2_format_u {+		struct v4l2_pix_format		pix;     /* V4L2_BUF_TYPE_VIDEO_CAPTURE */+		struct v4l2_window		win;     /* V4L2_BUF_TYPE_VIDEO_OVERLAY */+		struct v4l2_vbi_format		vbi;     /* V4L2_BUF_TYPE_VBI_CAPTURE */+		struct v4l2_sliced_vbi_format	sliced;  /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */+		__u8	raw_data[200];                   /* user-defined */+};++struct v4l2_format {+	enum v4l2_buf_type type;+	union v4l2_format_u fmt;+};+++/*	Stream type-dependent parameters+ */+union v4l2_streamparm_u {+		struct v4l2_captureparm	capture;+		struct v4l2_outputparm	output;+		__u8	raw_data[200];  /* user-defined */+};+struct v4l2_streamparm {+	enum v4l2_buf_type type;+	union v4l2_streamparm_u parm;+};++/*+ *	A D V A N C E D   D E B U G G I N G+ *+ *	NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS!+ *	FOR DEBUGGING, TESTING AND INTERNAL USE ONLY!+ */++/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */++#define V4L2_CHIP_MATCH_HOST       0  /* Match against chip ID on host (0 for the host) */+#define V4L2_CHIP_MATCH_I2C_DRIVER 1  /* Match against I2C driver name */+#define V4L2_CHIP_MATCH_I2C_ADDR   2  /* Match against I2C 7-bit address */+#define V4L2_CHIP_MATCH_AC97       3  /* Match against anciliary AC97 chip */++union v4l2_dbg_match_u {     /* Match this chip, meaning determined by type */+		__u32 addr;+		char name[32];+} __attribute__ ((packed));+struct v4l2_dbg_match {+	__u32 type; /* Match type */+  union v4l2_dbg_match_u u;+} __attribute__ ((packed));++struct v4l2_dbg_register {+	struct v4l2_dbg_match match;+	__u32 size;	/* register size in bytes */+	__u64 reg;+	__u64 val;+} __attribute__ ((packed));++/* VIDIOC_DBG_G_CHIP_IDENT */+struct v4l2_dbg_chip_ident {+	struct v4l2_dbg_match match;+	__u32 ident;       /* chip identifier as specified in <media/v4l2-chip-ident.h> */+	__u32 revision;    /* chip revision, chip specific */+} __attribute__ ((packed));++/*+ *	I O C T L   C O D E S   F O R   V I D E O   D E V I C E S+ *+ */+#define VIDIOC_QUERYCAP		 _IOR('V',  0, struct v4l2_capability)+#define VIDIOC_RESERVED		  _IO('V',  1)+#define VIDIOC_ENUM_FMT         _IOWR('V',  2, struct v4l2_fmtdesc)+#define VIDIOC_G_FMT		_IOWR('V',  4, struct v4l2_format)+#define VIDIOC_S_FMT		_IOWR('V',  5, struct v4l2_format)+#define VIDIOC_REQBUFS		_IOWR('V',  8, struct v4l2_requestbuffers)+#define VIDIOC_QUERYBUF		_IOWR('V',  9, struct v4l2_buffer)+#define VIDIOC_G_FBUF		 _IOR('V', 10, struct v4l2_framebuffer)+#define VIDIOC_S_FBUF		 _IOW('V', 11, struct v4l2_framebuffer)+#define VIDIOC_OVERLAY		 _IOW('V', 14, int)+#define VIDIOC_QBUF		_IOWR('V', 15, struct v4l2_buffer)+#define VIDIOC_DQBUF		_IOWR('V', 17, struct v4l2_buffer)+#define VIDIOC_STREAMON		 _IOW('V', 18, int)+#define VIDIOC_STREAMOFF	 _IOW('V', 19, int)+#define VIDIOC_G_PARM		_IOWR('V', 21, struct v4l2_streamparm)+#define VIDIOC_S_PARM		_IOWR('V', 22, struct v4l2_streamparm)+#define VIDIOC_G_STD		 _IOR('V', 23, v4l2_std_id)+#define VIDIOC_S_STD		 _IOW('V', 24, v4l2_std_id)+#define VIDIOC_ENUMSTD		_IOWR('V', 25, struct v4l2_standard)+#define VIDIOC_ENUMINPUT	_IOWR('V', 26, struct v4l2_input)+#define VIDIOC_G_CTRL		_IOWR('V', 27, struct v4l2_control)+#define VIDIOC_S_CTRL		_IOWR('V', 28, struct v4l2_control)+#define VIDIOC_G_TUNER		_IOWR('V', 29, struct v4l2_tuner)+#define VIDIOC_S_TUNER		 _IOW('V', 30, struct v4l2_tuner)+#define VIDIOC_G_AUDIO		 _IOR('V', 33, struct v4l2_audio)+#define VIDIOC_S_AUDIO		 _IOW('V', 34, struct v4l2_audio)+#define VIDIOC_QUERYCTRL	_IOWR('V', 36, struct v4l2_queryctrl)+#define VIDIOC_QUERYMENU	_IOWR('V', 37, struct v4l2_querymenu)+#define VIDIOC_G_INPUT		 _IOR('V', 38, int)+#define VIDIOC_S_INPUT		_IOWR('V', 39, int)+#define VIDIOC_G_OUTPUT		 _IOR('V', 46, int)+#define VIDIOC_S_OUTPUT		_IOWR('V', 47, int)+#define VIDIOC_ENUMOUTPUT	_IOWR('V', 48, struct v4l2_output)+#define VIDIOC_G_AUDOUT		 _IOR('V', 49, struct v4l2_audioout)+#define VIDIOC_S_AUDOUT		 _IOW('V', 50, struct v4l2_audioout)+#define VIDIOC_G_MODULATOR	_IOWR('V', 54, struct v4l2_modulator)+#define VIDIOC_S_MODULATOR	 _IOW('V', 55, struct v4l2_modulator)+#define VIDIOC_G_FREQUENCY	_IOWR('V', 56, struct v4l2_frequency)+#define VIDIOC_S_FREQUENCY	 _IOW('V', 57, struct v4l2_frequency)+#define VIDIOC_CROPCAP		_IOWR('V', 58, struct v4l2_cropcap)+#define VIDIOC_G_CROP		_IOWR('V', 59, struct v4l2_crop)+#define VIDIOC_S_CROP		 _IOW('V', 60, struct v4l2_crop)+#define VIDIOC_G_JPEGCOMP	 _IOR('V', 61, struct v4l2_jpegcompression)+#define VIDIOC_S_JPEGCOMP	 _IOW('V', 62, struct v4l2_jpegcompression)+#define VIDIOC_QUERYSTD      	 _IOR('V', 63, v4l2_std_id)+#define VIDIOC_TRY_FMT      	_IOWR('V', 64, struct v4l2_format)+#define VIDIOC_ENUMAUDIO	_IOWR('V', 65, struct v4l2_audio)+#define VIDIOC_ENUMAUDOUT	_IOWR('V', 66, struct v4l2_audioout)+#define VIDIOC_G_PRIORITY        _IOR('V', 67, enum v4l2_priority)+#define VIDIOC_S_PRIORITY        _IOW('V', 68, enum v4l2_priority)+#define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)+#define VIDIOC_LOG_STATUS         _IO('V', 70)+#define VIDIOC_G_EXT_CTRLS	_IOWR('V', 71, struct v4l2_ext_controls)+#define VIDIOC_S_EXT_CTRLS	_IOWR('V', 72, struct v4l2_ext_controls)+#define VIDIOC_TRY_EXT_CTRLS	_IOWR('V', 73, struct v4l2_ext_controls)+#if 1+#define VIDIOC_ENUM_FRAMESIZES	_IOWR('V', 74, struct v4l2_frmsizeenum)+#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)+#define VIDIOC_G_ENC_INDEX       _IOR('V', 76, struct v4l2_enc_idx)+#define VIDIOC_ENCODER_CMD      _IOWR('V', 77, struct v4l2_encoder_cmd)+#define VIDIOC_TRY_ENCODER_CMD  _IOWR('V', 78, struct v4l2_encoder_cmd)+#endif++#if 1+/* Experimental, meant for debugging, testing and internal use.+   Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.+   You must be root to use these ioctls. Never use these in applications! */+#define	VIDIOC_DBG_S_REGISTER 	 _IOW('V', 79, struct v4l2_dbg_register)+#define	VIDIOC_DBG_G_REGISTER 	_IOWR('V', 80, struct v4l2_dbg_register)++/* Experimental, meant for debugging, testing and internal use.+   Never use this ioctl in applications! */+#define VIDIOC_DBG_G_CHIP_IDENT _IOWR('V', 81, struct v4l2_dbg_chip_ident)+#endif++#define VIDIOC_S_HW_FREQ_SEEK	 _IOW('V', 82, struct v4l2_hw_freq_seek)+/* Reminder: when adding new ioctls please add support for them to+   drivers/media/video/v4l2-compat-ioctl32.c as well! */++#ifdef __OLD_VIDIOC_+/* for compatibility, will go away some day */+#define VIDIOC_OVERLAY_OLD     	_IOWR('V', 14, int)+#define VIDIOC_S_PARM_OLD      	 _IOW('V', 22, struct v4l2_streamparm)+#define VIDIOC_S_CTRL_OLD      	 _IOW('V', 28, struct v4l2_control)+#define VIDIOC_G_AUDIO_OLD     	_IOWR('V', 33, struct v4l2_audio)+#define VIDIOC_G_AUDOUT_OLD    	_IOWR('V', 49, struct v4l2_audioout)+#define VIDIOC_CROPCAP_OLD     	 _IOR('V', 58, struct v4l2_cropcap)+#endif++#define BASE_VIDIOC_PRIVATE	192		/* 192-255 are private */++#endif /* __LINUX_VIDEODEV2_H */
+ Bindings/Linux/videodev2_cinline.c view
@@ -0,0 +1,9 @@+#include <bindings.cmacros.h>+#define __OLD_VIDIOC_+#include "videodev2.h"+BC_INLINE4(v4l2_fourcc,__u8,__u8,__u8,__u8,__u32)+BC_INLINE1(V4L2_FIELD_HAS_TOP,enum v4l2_field,int)+BC_INLINE1(V4L2_FIELD_HAS_BOTTOM,enum v4l2_field,int)+BC_INLINE1(V4L2_FIELD_HAS_BOTH,enum v4l2_field,int)+BC_INLINE1(V4L2_CTRL_ID2CLASS,__u32,__u32)+BC_INLINE1(V4L2_CTRL_DRIVER_PRIV,__u32,__u32)
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c)2011, Claude Heiland-Allen++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of Claude Heiland-Allen nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ README view
@@ -0,0 +1,2 @@+These bindings are semi-automatically generated, see:+./generate/generate.sh
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ bindings-linux-videodev2.cabal view
@@ -0,0 +1,36 @@+Name:                bindings-linux-videodev2+Version:             0.1+Synopsis:            bindings to Video For Linux Two (v4l2) kernel interfaces++Description:+  Bindings for Video For Linux Two (v4l2), wrapping:+  <file:///usr/include/linux/videodev2.h>+  Upstream documentation at:+  <http://linuxtv.org/downloads/v4l-dvb-apis/>++Homepage:            https://gitorious.org/hsv4l2+License:             BSD3+License-file:        LICENSE+Author:              Claude Heiland-Allen+Maintainer:          claudiusmaximus@goto10.org+Category:            Graphics++Build-type:          Simple++Extra-source-files:+  README+  generate/generate.sh+  generate/videodev2.h.diff+  Bindings/Linux/videodev2.h++Cabal-version:       >=1.2++Library+  Exposed-modules:     Bindings.Linux.VideoDev2+  C-sources:           Bindings/Linux/videodev2_cinline.c+  Include-dirs:        Bindings/Linux/+  Build-depends:+    base >= 3 && < 5,+    bindings-DSL >= 1.0.7 && < 1.1,+    ioctl >= 0.0.1 && < 0.1+  Build-tools:         hsc2hs
+ generate/generate.sh view
@@ -0,0 +1,195 @@+#!/bin/bash+ME="$(dirname "$(readlink -f "$0")")"+mkdir -p "${ME}/../Bindings/Linux"+patch -s -p0 -o "${ME}/../Bindings/Linux/videodev2.h" "/usr/include/linux/videodev2.h" "${ME}/videodev2.h.diff"+(+cat <<EOF+#include <bindings.cmacros.h>+#define __OLD_VIDIOC_+#include "videodev2.h"+BC_INLINE4(v4l2_fourcc,__u8,__u8,__u8,__u8,__u32)+BC_INLINE1(V4L2_FIELD_HAS_TOP,enum v4l2_field,int)+BC_INLINE1(V4L2_FIELD_HAS_BOTTOM,enum v4l2_field,int)+BC_INLINE1(V4L2_FIELD_HAS_BOTH,enum v4l2_field,int)+BC_INLINE1(V4L2_CTRL_ID2CLASS,__u32,__u32)+BC_INLINE1(V4L2_CTRL_DRIVER_PRIV,__u32,__u32)+EOF+) > "${ME}/../Bindings/Linux/videodev2_cinline.c"+(+( cat <<EOF+{-# LANGUAGE DeriveDataTypeable, ForeignFunctionInterface, MultiParamTypeClasses, StandaloneDeriving, TypeSynonymInstances #-}+-- ...edit the generating script instead of this machine-generated file...+#include <bindings.dsl.h>+#include <sys/time.h>+#define __OLD_VIDIOC_+#include "videodev2.h"+-- | Bindings for Video For Linux Two (v4l2), wrapping:+--   <file:///usr/include/linux/videodev2.h>+--   Upstream documentation at:+--   <http://linuxtv.org/downloads/v4l-dvb-apis/>+module Bindings.Linux.VideoDev2 where+import System.Posix.IOCtl+#strict_import+import Foreign(unsafePerformIO)+import Data.Typeable (Typeable)+deriving instance Typeable C'timeval+deriving instance Typeable C'v4l2_rect+deriving instance Typeable C'v4l2_fract+deriving instance Typeable C'v4l2_capability+deriving instance Typeable C'v4l2_pix_format+deriving instance Typeable C'v4l2_fmtdesc+deriving instance Typeable C'v4l2_frmsize_discrete+deriving instance Typeable C'v4l2_frmsize_stepwise+deriving instance Typeable C'v4l2_frmsizeenum+deriving instance Typeable C'v4l2_frmsizeenum_u+deriving instance Typeable C'v4l2_frmival_stepwise+deriving instance Typeable C'v4l2_frmivalenum+deriving instance Typeable C'v4l2_frmivalenum_u+deriving instance Typeable C'v4l2_timecode+deriving instance Typeable C'v4l2_jpegcompression+deriving instance Typeable C'v4l2_requestbuffers+deriving instance Typeable C'v4l2_buffer_u+deriving instance Typeable C'v4l2_buffer+deriving instance Typeable C'v4l2_framebuffer+deriving instance Typeable C'v4l2_clip+deriving instance Typeable C'v4l2_window+deriving instance Typeable C'v4l2_captureparm+deriving instance Typeable C'v4l2_outputparm+deriving instance Typeable C'v4l2_cropcap+deriving instance Typeable C'v4l2_crop+deriving instance Typeable C'v4l2_standard+deriving instance Typeable C'v4l2_input+deriving instance Typeable C'v4l2_output+deriving instance Typeable C'v4l2_control+deriving instance Typeable C'v4l2_ext_control+deriving instance Typeable C'v4l2_ext_controls+deriving instance Typeable C'v4l2_ext_control_u+deriving instance Typeable C'v4l2_queryctrl+deriving instance Typeable C'v4l2_querymenu+deriving instance Typeable C'v4l2_tuner+deriving instance Typeable C'v4l2_modulator+deriving instance Typeable C'v4l2_frequency+deriving instance Typeable C'v4l2_hw_freq_seek+deriving instance Typeable C'v4l2_rds_data+deriving instance Typeable C'v4l2_audio+deriving instance Typeable C'v4l2_audioout+deriving instance Typeable C'v4l2_enc_idx_entry+deriving instance Typeable C'v4l2_enc_idx+deriving instance Typeable C'v4l2_vbi_format+deriving instance Typeable C'v4l2_sliced_vbi_format+deriving instance Typeable C'v4l2_sliced_vbi_cap+deriving instance Typeable C'v4l2_sliced_vbi_data+deriving instance Typeable C'v4l2_mpeg_vbi_itv0_line+deriving instance Typeable C'v4l2_mpeg_vbi_fmt_ivtv+deriving instance Typeable C'v4l2_format+deriving instance Typeable C'v4l2_mpeg_vbi_fmt_ivtv_u+deriving instance Typeable C'v4l2_streamparm+deriving instance Typeable C'v4l2_dbg_match+deriving instance Typeable C'v4l2_dbg_register+deriving instance Typeable C'v4l2_dbg_chip_ident+deriving instance Typeable C'v4l2_format_u+deriving instance Typeable C'v4l2_encoder_cmd_u+deriving instance Typeable C'v4l2_encoder_cmd+deriving instance Typeable C'v4l2_dbg_match_u+deriving instance Typeable C'v4l2_streamparm_u+#starttype struct timeval+#field tv_sec , CLong+#field tv_usec , CLong+#stoptype+#synonym_t v4l2_std_id , Word64+#cinline v4l2_fourcc , Word8 -> Word8 -> Word8 -> Word8 -> IO Word32+#cinline V4L2_FIELD_HAS_TOP , <v4l2_field> -> IO CInt+#cinline V4L2_FIELD_HAS_BOTTOM , <v4l2_field> -> IO CInt+#cinline V4L2_FIELD_HAS_BOTH , <v4l2_field> -> IO CInt+#cinline V4L2_CTRL_ID2CLASS , Word32 -> IO Word32+#cinline V4L2_CTRL_DRIVER_PRIV , Word32 -> IO Word32+EOF+cat "${ME}/../Bindings/Linux/videodev2.h" |+tr '\n' '?' |+sed 's|\\?||g' |+sed 's|/\*|\n/\*|g' |+sed 's|\*/|\*/\n|g' |+sed 's|^/\*.*\*/$||g' |+tr '?' '\n' |+tr '\t' ' ' |+tr -s ' \n' |+grep -v '^#if' |+grep -v '^#else' |+grep -v '^#endif' |+grep -v '^#include' |+grep -v '^typedef' |+sed 's|^#define \([A-Z0-9_]*\) \(_IO[RW]*([^,]*, [0-9]*, struct \([A-Z0-9a-z_]*\))\)$|#num \1\n#opaque_t \1\ninstance IOControl C'"'"'\1 C'"'"'\3 where ioctlReq _ = c'"'"'\1|g' |+sed 's|^#define \([A-Z0-9_]*\) \(_IO[RW]*([^,]*, [0-9]*, enum \([A-Z0-9a-z_]*\))\)$|#num \1\n#opaque_t \1\ninstance IOControl C'"'"'\1 C'"'"'\3 where ioctlReq _ = c'"'"'\1|g' |+sed 's|^#define \([A-Z0-9_]*\) \(_IO[RW]*([^,]*, [0-9]*, \(v4l2_std_id\))\)$|#num \1\n#opaque_t \1\ninstance IOControl C'"'"'\1 C'"'"'\3 where ioctlReq _ = c'"'"'\1|g' |+sed 's|^#define \([A-Z0-9_]*\) \(_IO[RW]*([^,]*, [0-9]*, int)\)$|#num \1\n#opaque_t \1\ninstance IOControl C'"'"'\1 CInt where ioctlReq _ = c'"'"'\1|g' |+sed 's|^#define \([A-Z0-9_]*\) \(_IO[RW]*([^,]*, [0-9]*)\)$|#num \1\n#opaque_t \1\ninstance IOControl C'"'"'\1 CInt where ioctlReq _ = c'"'"'\1|g' |+sed 's|^enum \([a-z0-9_]*\).*$|#integral_t enum \1|g' |+sed 's|^ \([A-Z0-9a-z_]*\) = .*$|#num \1|g' |+sed 's|^#define \([A-Z0-9a-z_]*\)(.*$||g' |+sed 's|^#define \([A-Z0-9a-z_]*\).*$|#num \1|g' |+grep -v '^#num __' |+while read line ; do+  if [[ "${line}" =~ 'struct' || "${line}" =~ 'union' ]] ; then+    u=""+    if [[ "${line}" =~ 'union' ]] ; then+      u="union_"+      echo "${line}" | sed 's|^union \([A-Za-z0-9_]*\).*$|#starttype union \1|g'+    else+      echo "${line}" | sed 's|^struct \([A-Za-z0-9_]*\).*$|#starttype struct \1|g'+    fi+    while read line ; do+      if [[ "${line}" =~ '}' ]] ; then+        echo '#stoptype'+        break+      else+        f=""+        if [[ "${line}" =~ '[' ]] ; then+          f="${u}array_field"+        else+          f="${u}field"+        fi+        if [[ "${line}" =~ '__s32' ]] ; then+          t="Int32"+        elif [[ "${line}" =~ '__u32' ]] ; then+          t="Word32"+        elif [[ "${line}" =~ '__le32' ]] ; then+          t="Word32"+        elif [[ "${line}" =~ '__s64' ]] ; then+          t="Int64"+        elif [[ "${line}" =~ '__u64' ]] ; then+          t="Word64"+        elif [[ "${line}" =~ '__u16' ]] ; then+          t="Word16"+        elif [[ "${line}" =~ '__u8' ]] ; then+          t="Word8"+        elif [[ "${line}" =~ 'int' ]] ; then+          t="CInt"+        elif [[ "${line}" =~ 'char' ]] ; then+          t="CChar"+        elif [[ "${line}" =~ 'unsigned long' ]] ; then+          t="CULong"+        elif [[ "${line}" =~ 'v4l2_std_id' ]] ; then+          t="<v4l2_std_id>"+        elif [[ "${line}" =~ 'struct' ]] ; then+          t="$(echo "${line}" | sed 's|^.*struct \([A-Za-z0-9_]*\) .*$|<\1>|g')"+        elif [[ "${line}" =~ 'union' ]] ; then+          t="$(echo "${line}" | sed 's|^.*union \([A-Za-z0-9_]*\) .*$|<\1>|g')"+        elif [[ "${line}" =~ 'enum' ]] ; then+          t="$(echo "${line}" | sed 's|^.*enum \([A-Za-z0-9_]*\) .*$|<\1>|g')"+        elif [[ "${line}" =~ 'void' ]] ; then+          t="()"+        else+          t="FIXME"+        fi+        if [[ "${line}" =~ '*' ]] ; then+          t="Ptr ${t}"+        fi+        echo "${line}" | sed 's|.*[ *]\([A-Za-z0-9_]*\).*$|#'"$f"' \1 , '"${t}"'|g'+      fi+    done+  elif [[ ! "${line}" =~ '};' ]] ; then+    echo "${line}"+  fi+done ) |+tr -s "\n"+) > "${ME}/../Bindings/Linux/VideoDev2.hsc"
+ generate/videodev2.h.diff view
@@ -0,0 +1,206 @@+--- /usr/include/linux/videodev2.h	2011-04-21 00:30:06.000000000 +0100++++ ../bindings-linux-videodev2/Bindings/Linux/videodev2.h	2011-07-03 14:35:44.000000000 +0100+@@ -396,16 +396,15 @@+ 	__u32			step_height;	/* Frame height step size [pixel] */+ };+ ++union v4l2_frmsizeenum_u {					/* Frame size */++	struct v4l2_frmsize_discrete	discrete;++	struct v4l2_frmsize_stepwise	stepwise;++};+ struct v4l2_frmsizeenum {+ 	__u32			index;		/* Frame size number */+ 	__u32			pixel_format;	/* Pixel format */+ 	__u32			type;		/* Frame size type the device supports. */+-+-	union {					/* Frame size */+-		struct v4l2_frmsize_discrete	discrete;+-		struct v4l2_frmsize_stepwise	stepwise;+-	};+-++	union v4l2_frmsizeenum_u u;+ 	__u32   reserved[2];			/* Reserved space for future use */+ };+ +@@ -424,18 +423,17 @@+ 	struct v4l2_fract	step;		/* Frame interval step size [s] */+ };+ ++union v4l2_frmivalenum_u {					/* Frame interval */++		struct v4l2_fract		discrete;++		struct v4l2_frmival_stepwise	stepwise;++};+ struct v4l2_frmivalenum {+ 	__u32			index;		/* Frame format index */+ 	__u32			pixel_format;	/* Pixel format */+ 	__u32			width;		/* Frame width */+ 	__u32			height;		/* Frame height */+ 	__u32			type;		/* Frame interval type the device supports. */+-+-	union {					/* Frame interval */+-		struct v4l2_fract		discrete;+-		struct v4l2_frmival_stepwise	stepwise;+-	};+-++	union v4l2_frmivalenum_u u;+ 	__u32	reserved[2];			/* Reserved space for future use */+ };+ #endif+@@ -488,6 +486,7 @@+ 				 * The presence of the APP and COM marker+ 				 * is influenced by APP_len and COM_len+ 				 * ONLY, not by this property! */++};+ + #define V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */+ #define V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */+@@ -495,7 +494,6 @@+ #define V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */+ #define V4L2_JPEG_MARKER_APP (1<<7)    /* App segment, driver will+ 					* allways use APP0 */+-};+ + /*+  *	M E M O R Y - M A P P I N G   B U F F E R S+@@ -507,6 +505,10 @@+ 	__u32			reserved[2];+ };+ ++union v4l2_buffer_u {++		__u32           offset;++		unsigned long   userptr;++};+ struct v4l2_buffer {+ 	__u32			index;+ 	enum v4l2_buf_type      type;+@@ -519,10 +521,7 @@+ + 	/* memory location */+ 	enum v4l2_memory        memory;+-	union {+-		__u32           offset;+-		unsigned long   userptr;+-	} m;++	union v4l2_buffer_u u;+ 	__u32			length;+ 	__u32			input;+ 	__u32			reserved;+@@ -789,15 +788,16 @@+ 	__s32		     value;+ };+ ++union v4l2_ext_control_u {++	__s32 value;++	__s64 value64;++	char *string;++} __attribute__ ((packed));+ struct v4l2_ext_control {+ 	__u32 id;+ 	__u32 size;+ 	__u32 reserved2[1];+-	union {+-		__s32 value;+-		__s64 value64;+-		char *string;+-	};++  union v4l2_ext_control_u u;+ } __attribute__ ((packed));+ + struct v4l2_ext_controls {+@@ -1336,14 +1336,16 @@+ /* Flags for V4L2_ENC_CMD_STOP */+ #define V4L2_ENC_CMD_STOP_AT_GOP_END    (1 << 0)+ ++struct v4l2_encoder_cmd_u_s {++			__u32 data[8];++};++union v4l2_encoder_cmd_u {++	struct v4l2_encoder_cmd_u_s raw;++};+ struct v4l2_encoder_cmd {+ 	__u32 cmd;+ 	__u32 flags;+-	union {+-		struct {+-			__u32 data[8];+-		} raw;+-	};++  union v4l2_encoder_cmd_u u;+ };+ + #endif+@@ -1460,12 +1462,13 @@+ #define V4L2_MPEG_VBI_IVTV_MAGIC0	"itv0"+ #define V4L2_MPEG_VBI_IVTV_MAGIC1	"ITV0"+ +-struct v4l2_mpeg_vbi_fmt_ivtv {+-	__u8 magic[4];+-	union {++union v4l2_mpeg_vbi_fmt_ivtv_u {+ 		struct v4l2_mpeg_vbi_itv0 itv0;+ 		struct v4l2_mpeg_vbi_ITV0 ITV0;+-	};++} __attribute__ ((packed));++struct v4l2_mpeg_vbi_fmt_ivtv {++	__u8 magic[4];++	union v4l2_mpeg_vbi_fmt_ivtv_u u;+ } __attribute__ ((packed));+ + /*+@@ -1474,27 +1477,30 @@+ + /*	Stream data format+  */+-struct v4l2_format {+-	enum v4l2_buf_type type;+-	union {++union v4l2_format_u {+ 		struct v4l2_pix_format		pix;     /* V4L2_BUF_TYPE_VIDEO_CAPTURE */+ 		struct v4l2_window		win;     /* V4L2_BUF_TYPE_VIDEO_OVERLAY */+ 		struct v4l2_vbi_format		vbi;     /* V4L2_BUF_TYPE_VBI_CAPTURE */+ 		struct v4l2_sliced_vbi_format	sliced;  /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */+ 		__u8	raw_data[200];                   /* user-defined */+-	} fmt;++};++++struct v4l2_format {++	enum v4l2_buf_type type;++	union v4l2_format_u fmt;+ };+ + + /*	Stream type-dependent parameters+  */+-struct v4l2_streamparm {+-	enum v4l2_buf_type type;+-	union {++union v4l2_streamparm_u {+ 		struct v4l2_captureparm	capture;+ 		struct v4l2_outputparm	output;+ 		__u8	raw_data[200];  /* user-defined */+-	} parm;++};++struct v4l2_streamparm {++	enum v4l2_buf_type type;++	union v4l2_streamparm_u parm;+ };+ + /*+@@ -1511,12 +1517,13 @@+ #define V4L2_CHIP_MATCH_I2C_ADDR   2  /* Match against I2C 7-bit address */+ #define V4L2_CHIP_MATCH_AC97       3  /* Match against anciliary AC97 chip */+ +-struct v4l2_dbg_match {+-	__u32 type; /* Match type */+-	union {     /* Match this chip, meaning determined by type */++union v4l2_dbg_match_u {     /* Match this chip, meaning determined by type */+ 		__u32 addr;+ 		char name[32];+-	};++} __attribute__ ((packed));++struct v4l2_dbg_match {++	__u32 type; /* Match type */++  union v4l2_dbg_match_u u;+ } __attribute__ ((packed));+ + struct v4l2_dbg_register {