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 +1295/−0
- Bindings/Linux/videodev2.h +1638/−0
- Bindings/Linux/videodev2_cinline.c +9/−0
- LICENSE +30/−0
- README +2/−0
- Setup.hs +2/−0
- bindings-linux-videodev2.cabal +36/−0
- generate/generate.sh +195/−0
- generate/videodev2.h.diff +206/−0
+ 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 {