• Skip to content
  • Skip to link menu
KDE 3.5 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

kstars

videodev2.h

Go to the documentation of this file.
00001 #ifndef __LINUX_VIDEODEV2_H
00002 #define __LINUX_VIDEODEV2_H
00003 /*
00004  *  Video for Linux Two
00005  *
00006  *  Header file for v4l or V4L2 drivers and applications, for
00007  *  Linux kernels 2.2.x or 2.4.x.
00008  *
00009  *  See http://bytesex.org/v4l/ for API specs and other
00010  *  v4l2 documentation.
00011  *
00012  *  Author: Bill Dirks <bdirks@pacbell.net>
00013  *      Justin Schoeman
00014  *      et al.
00015  */
00016 /*
00017  *  M I S C E L L A N E O U S
00018  */
00019 
00020 /*  Four-character-code (FOURCC) */
00021 #define v4l2_fourcc(a,b,c,d)\
00022         (((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24))
00023 
00024 /*
00025  *  E N U M S
00026  */
00027 enum v4l2_field {
00028     V4L2_FIELD_ANY        = 0, /* driver can choose from none,
00029                       top, bottom, interlaced
00030                       depending on whatever it thinks
00031                       is approximate ... */
00032     V4L2_FIELD_NONE       = 1, /* this device has no fields ... */
00033     V4L2_FIELD_TOP        = 2, /* top field only */
00034     V4L2_FIELD_BOTTOM     = 3, /* bottom field only */
00035     V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */
00036     V4L2_FIELD_SEQ_TB     = 5, /* both fields sequential into one
00037                       buffer, top-bottom order */
00038     V4L2_FIELD_SEQ_BT     = 6, /* same as above + bottom-top order */
00039     V4L2_FIELD_ALTERNATE  = 7  /* both fields alternating into
00040                       separate buffers */
00041 };
00042 #define V4L2_FIELD_HAS_TOP(field)   \
00043     ((field) == V4L2_FIELD_TOP  ||\
00044      (field) == V4L2_FIELD_INTERLACED ||\
00045      (field) == V4L2_FIELD_SEQ_TB   ||\
00046      (field) == V4L2_FIELD_SEQ_BT)
00047 #define V4L2_FIELD_HAS_BOTTOM(field)    \
00048     ((field) == V4L2_FIELD_BOTTOM   ||\
00049      (field) == V4L2_FIELD_INTERLACED ||\
00050      (field) == V4L2_FIELD_SEQ_TB   ||\
00051      (field) == V4L2_FIELD_SEQ_BT)
00052 #define V4L2_FIELD_HAS_BOTH(field)  \
00053     ((field) == V4L2_FIELD_INTERLACED ||\
00054      (field) == V4L2_FIELD_SEQ_TB   ||\
00055      (field) == V4L2_FIELD_SEQ_BT)
00056 
00057 enum v4l2_buf_type {
00058     V4L2_BUF_TYPE_VIDEO_CAPTURE  = 1,
00059     V4L2_BUF_TYPE_VIDEO_OUTPUT   = 2,
00060     V4L2_BUF_TYPE_VIDEO_OVERLAY  = 3,
00061     V4L2_BUF_TYPE_VBI_CAPTURE    = 4,
00062     V4L2_BUF_TYPE_VBI_OUTPUT     = 5,
00063     V4L2_BUF_TYPE_PRIVATE        = 0x80
00064 };
00065 
00066 enum v4l2_ctrl_type {
00067     V4L2_CTRL_TYPE_INTEGER       = 1,
00068     V4L2_CTRL_TYPE_BOOLEAN       = 2,
00069     V4L2_CTRL_TYPE_MENU      = 3,
00070     V4L2_CTRL_TYPE_BUTTON        = 4
00071 };
00072 
00073 enum v4l2_tuner_type {
00074     V4L2_TUNER_RADIO         = 1,
00075     V4L2_TUNER_ANALOG_TV         = 2
00076 };
00077 
00078 enum v4l2_memory {
00079     V4L2_MEMORY_MMAP             = 1,
00080     V4L2_MEMORY_USERPTR          = 2,
00081     V4L2_MEMORY_OVERLAY          = 3
00082 };
00083 
00084 /* see also http://vektor.theorem.ca/graphics/ycbcr/ */
00085 enum v4l2_colorspace {
00086     /* ITU-R 601 -- broadcast NTSC/PAL */
00087     V4L2_COLORSPACE_SMPTE170M     = 1,
00088 
00089     /* 1125-Line (US) HDTV */
00090     V4L2_COLORSPACE_SMPTE240M     = 2,
00091 
00092     /* HD and modern captures. */
00093     V4L2_COLORSPACE_REC709        = 3,
00094     
00095     /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */
00096     V4L2_COLORSPACE_BT878         = 4,
00097     
00098     /* These should be useful.  Assume 601 extents. */
00099     V4L2_COLORSPACE_470_SYSTEM_M  = 5,
00100     V4L2_COLORSPACE_470_SYSTEM_BG = 6,
00101     
00102     /* I know there will be cameras that send this.  So, this is
00103      * unspecified chromaticities and full 0-255 on each of the
00104      * Y'CbCr components
00105      */
00106     V4L2_COLORSPACE_JPEG          = 7,
00107     
00108     /* For RGB colourspaces, this is probably a good start. */
00109     V4L2_COLORSPACE_SRGB          = 8
00110 };
00111 
00112 enum v4l2_priority {
00113     V4L2_PRIORITY_UNSET       = 0,  /* not initialized */
00114     V4L2_PRIORITY_BACKGROUND  = 1,
00115     V4L2_PRIORITY_INTERACTIVE = 2,
00116     V4L2_PRIORITY_RECORD      = 3,
00117     V4L2_PRIORITY_DEFAULT     = V4L2_PRIORITY_INTERACTIVE
00118 };
00119 
00120 struct v4l2_rect {
00121     __s32   left;
00122     __s32   top;
00123     __s32   width;
00124     __s32   height;
00125 };
00126 
00127 struct v4l2_fract {
00128     __u32   numerator;
00129     __u32   denominator;
00130 };
00131 
00132 /*
00133  *  D R I V E R   C A P A B I L I T I E S
00134  */
00135 struct v4l2_capability
00136 {
00137     __u8    driver[16]; /* i.e. "bttv" */
00138     __u8    card[32];   /* i.e. "Hauppauge WinTV" */
00139     __u8    bus_info[32];   /* "PCI:" + pci_name(pci_dev) */
00140     __u32   version;        /* should use KERNEL_VERSION() */
00141     __u32   capabilities;   /* Device capabilities */
00142     __u32   reserved[4];
00143 };
00144 
00145 /* Values for 'capabilities' field */
00146 #define V4L2_CAP_VIDEO_CAPTURE  0x00000001  /* Is a video capture device */
00147 #define V4L2_CAP_VIDEO_OUTPUT   0x00000002  /* Is a video output device */
00148 #define V4L2_CAP_VIDEO_OVERLAY  0x00000004  /* Can do video overlay */
00149 #define V4L2_CAP_VBI_CAPTURE    0x00000010  /* Is a VBI capture device */
00150 #define V4L2_CAP_VBI_OUTPUT 0x00000020  /* Is a VBI output device */
00151 #define V4L2_CAP_RDS_CAPTURE    0x00000100  /* RDS data capture */
00152 
00153 #define V4L2_CAP_TUNER      0x00010000  /* has a tuner */
00154 #define V4L2_CAP_AUDIO      0x00020000  /* has audio support */
00155 #define V4L2_CAP_RADIO      0x00040000  /* is a radio device */
00156 
00157 #define V4L2_CAP_READWRITE      0x01000000  /* read/write systemcalls */
00158 #define V4L2_CAP_ASYNCIO        0x02000000  /* async I/O */
00159 #define V4L2_CAP_STREAMING      0x04000000  /* streaming I/O ioctls */
00160 
00161 /*
00162  *  V I D E O   I M A G E   F O R M A T
00163  */
00164 
00165 struct v4l2_pix_format
00166 {
00167     __u32               width;
00168     __u32               height;
00169     __u32               pixelformat;
00170     enum v4l2_field     field;
00171     __u32               bytesperline;   /* for padding, zero if unused */
00172     __u32               sizeimage;
00173         enum v4l2_colorspace    colorspace;
00174     __u32           priv;       /* private data, depends on pixelformat */
00175 };
00176 
00177 /*           Pixel format    FOURCC                  depth  Description   */
00178 #define V4L2_PIX_FMT_RGB332  v4l2_fourcc('R','G','B','1') /*  8  RGB-3-3-2     */
00179 #define V4L2_PIX_FMT_RGB555  v4l2_fourcc('R','G','B','O') /* 16  RGB-5-5-5     */
00180 #define V4L2_PIX_FMT_RGB565  v4l2_fourcc('R','G','B','P') /* 16  RGB-5-6-5     */
00181 #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R','G','B','Q') /* 16  RGB-5-5-5 BE  */
00182 #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R','G','B','R') /* 16  RGB-5-6-5 BE  */
00183 #define V4L2_PIX_FMT_BGR24   v4l2_fourcc('B','G','R','3') /* 24  BGR-8-8-8     */
00184 #define V4L2_PIX_FMT_RGB24   v4l2_fourcc('R','G','B','3') /* 24  RGB-8-8-8     */
00185 #define V4L2_PIX_FMT_BGR32   v4l2_fourcc('B','G','R','4') /* 32  BGR-8-8-8-8   */
00186 #define V4L2_PIX_FMT_RGB32   v4l2_fourcc('R','G','B','4') /* 32  RGB-8-8-8-8   */
00187 #define V4L2_PIX_FMT_GREY    v4l2_fourcc('G','R','E','Y') /*  8  Greyscale     */
00188 #define V4L2_PIX_FMT_YVU410  v4l2_fourcc('Y','V','U','9') /*  9  YVU 4:1:0     */
00189 #define V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y','V','1','2') /* 12  YVU 4:2:0     */
00190 #define V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y','U','Y','V') /* 16  YUV 4:2:2     */
00191 #define V4L2_PIX_FMT_UYVY    v4l2_fourcc('U','Y','V','Y') /* 16  YUV 4:2:2     */
00192 #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4','2','2','P') /* 16  YVU422 planar */
00193 #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4','1','1','P') /* 16  YVU411 planar */
00194 #define V4L2_PIX_FMT_Y41P    v4l2_fourcc('Y','4','1','P') /* 12  YUV 4:1:1     */
00195 
00196 /* two planes -- one Y, one Cr + Cb interleaved  */
00197 #define V4L2_PIX_FMT_NV12    v4l2_fourcc('N','V','1','2') /* 12  Y/CbCr 4:2:0  */
00198 #define V4L2_PIX_FMT_NV21    v4l2_fourcc('N','V','2','1') /* 12  Y/CrCb 4:2:0  */
00199 
00200 /*  The following formats are not defined in the V4L2 specification */
00201 #define V4L2_PIX_FMT_YUV410  v4l2_fourcc('Y','U','V','9') /*  9  YUV 4:1:0     */
00202 #define V4L2_PIX_FMT_YUV420  v4l2_fourcc('Y','U','1','2') /* 12  YUV 4:2:0     */
00203 #define V4L2_PIX_FMT_YYUV    v4l2_fourcc('Y','Y','U','V') /* 16  YUV 4:2:2     */
00204 #define V4L2_PIX_FMT_HI240   v4l2_fourcc('H','I','2','4') /*  8  8-bit color   */
00205 
00206 /* see http://www.siliconimaging.com/RGB%20Bayer.htm */
00207 #define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B','A','8','1') /*  8  BGBG.. GRGR.. */
00208 
00209 /* compressed formats */
00210 #define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M','J','P','G') /* Motion-JPEG   */
00211 #define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J','P','E','G') /* JFIF JPEG     */
00212 #define V4L2_PIX_FMT_DV       v4l2_fourcc('d','v','s','d') /* 1394          */
00213 #define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M','P','E','G') /* MPEG          */
00214 
00215 /*  Vendor-specific formats   */
00216 #define V4L2_PIX_FMT_WNVA     v4l2_fourcc('W','N','V','A') /* Winnov hw compress */
00217 
00218 /*
00219  *  F O R M A T   E N U M E R A T I O N
00220  */
00221 struct v4l2_fmtdesc
00222 {
00223     __u32               index;             /* Format number      */
00224     enum v4l2_buf_type  type;              /* buffer type        */
00225     __u32               flags;
00226     __u8                description[32];   /* Description string */
00227     __u32               pixelformat;       /* Format fourcc      */
00228     __u32               reserved[4];
00229 };
00230 
00231 #define V4L2_FMT_FLAG_COMPRESSED 0x0001
00232 
00233 
00234 /*
00235  *  T I M E C O D E
00236  */
00237 struct v4l2_timecode
00238 {
00239     __u32   type;
00240     __u32   flags;
00241     __u8    frames;
00242     __u8    seconds;
00243     __u8    minutes;
00244     __u8    hours;
00245     __u8    userbits[4];
00246 };
00247 
00248 /*  Type  */
00249 #define V4L2_TC_TYPE_24FPS      1
00250 #define V4L2_TC_TYPE_25FPS      2
00251 #define V4L2_TC_TYPE_30FPS      3
00252 #define V4L2_TC_TYPE_50FPS      4
00253 #define V4L2_TC_TYPE_60FPS      5
00254 
00255 /*  Flags  */
00256 #define V4L2_TC_FLAG_DROPFRAME      0x0001 /* "drop-frame" mode */
00257 #define V4L2_TC_FLAG_COLORFRAME     0x0002
00258 #define V4L2_TC_USERBITS_field      0x000C
00259 #define V4L2_TC_USERBITS_USERDEFINED    0x0000
00260 #define V4L2_TC_USERBITS_8BITCHARS  0x0008
00261 /* The above is based on SMPTE timecodes */
00262 
00263 
00264 /*
00265  *  C O M P R E S S I O N   P A R A M E T E R S
00266  */
00267 #if 0
00268 /* ### generic compression settings don't work, there is too much
00269  * ### codec-specific stuff.  Maybe reuse that for MPEG codec settings
00270  * ### later ... */
00271 struct v4l2_compression
00272 {
00273     __u32   quality;
00274     __u32   keyframerate;
00275     __u32   pframerate;
00276     __u32   reserved[5];
00277 
00278 /*  what we'll need for MPEG, extracted from some postings on
00279     the v4l list (Gert Vervoort, PlasmaJohn).
00280 
00281 system stream:
00282   - type: elementary stream(ES), packatised elementary stream(s) (PES)
00283     program stream(PS), transport stream(TS)
00284   - system bitrate
00285   - PS packet size (DVD: 2048 bytes, VCD: 2324 bytes)
00286   - TS video PID
00287   - TS audio PID
00288   - TS PCR PID
00289   - TS system information tables (PAT, PMT, CAT, NIT and SIT)
00290   - (MPEG-1 systems stream vs. MPEG-2 program stream (TS not supported
00291     by MPEG-1 systems)
00292 
00293 audio:
00294   - type: MPEG (+Layer I,II,III), AC-3, LPCM
00295   - bitrate
00296   - sampling frequency (DVD: 48 Khz, VCD: 44.1 KHz, 32 kHz)
00297   - Trick Modes? (ff, rew)
00298   - Copyright
00299   - Inverse Telecine
00300 
00301 video:
00302   - picturesize (SIF, 1/2 D1, 2/3 D1, D1) and PAL/NTSC norm can be set
00303     through excisting V4L2 controls
00304   - noise reduction, parameters encoder specific?
00305   - MPEG video version: MPEG-1, MPEG-2
00306   - GOP (Group Of Pictures) definition:
00307     - N: number of frames per GOP
00308     - M: distance between reference (I,P) frames
00309     - open/closed GOP
00310   - quantiser matrix: inter Q matrix (64 bytes) and intra Q matrix (64 bytes)
00311   - quantiser scale: linear or logarithmic
00312   - scanning: alternate or zigzag
00313   - bitrate mode: CBR (constant bitrate) or VBR (variable bitrate).
00314   - target video bitrate for CBR
00315   - target video bitrate for VBR
00316   - maximum video bitrate for VBR - min. quantiser value for VBR
00317   - max. quantiser value for VBR
00318   - adaptive quantisation value
00319   - return the number of bytes per GOP or bitrate for bitrate monitoring
00320 
00321 */
00322 };
00323 #endif
00324 
00325 struct v4l2_jpegcompression
00326 {
00327     int quality;
00328 
00329     int  APPn;              /* Number of APP segment to be written,
00330                  * must be 0..15 */
00331     int  APP_len;           /* Length of data in JPEG APPn segment */
00332     char APP_data[60];      /* Data in the JPEG APPn segment. */
00333     
00334     int  COM_len;           /* Length of data in JPEG COM segment */
00335     char COM_data[60];      /* Data in JPEG COM segment */
00336     
00337     __u32 jpeg_markers;     /* Which markers should go into the JPEG
00338                  * output. Unless you exactly know what
00339                  * you do, leave them untouched.
00340                  * Inluding less markers will make the
00341                  * resulting code smaller, but there will
00342                  * be fewer aplications which can read it.
00343                  * The presence of the APP and COM marker
00344                  * is influenced by APP_len and COM_len
00345                  * ONLY, not by this property! */
00346     
00347 #define V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */
00348 #define V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */
00349 #define V4L2_JPEG_MARKER_DRI (1<<5)    /* Define Restart Interval */
00350 #define V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */
00351 #define V4L2_JPEG_MARKER_APP (1<<7)    /* App segment, driver will
00352                                         * allways use APP0 */
00353 };
00354 
00355 
00356 /*
00357  *  M E M O R Y - M A P P I N G   B U F F E R S
00358  */
00359 struct v4l2_requestbuffers
00360 {
00361     __u32                   count;
00362     enum v4l2_buf_type      type;
00363     enum v4l2_memory        memory;
00364     __u32                   reserved[2];
00365 };
00366 
00367 struct v4l2_buffer
00368 {
00369     __u32           index;
00370     enum v4l2_buf_type      type;
00371     __u32           bytesused;
00372     __u32           flags;
00373     enum v4l2_field     field;
00374     struct timeval      timestamp;
00375     struct v4l2_timecode    timecode;
00376     __u32           sequence;
00377 
00378     /* memory location */
00379     enum v4l2_memory        memory;
00380     union {
00381         __u32           offset;
00382         unsigned long   userptr;
00383     } m;
00384     __u32           length;
00385     __u32           input;
00386     __u32           reserved;
00387 };
00388 
00389 /*  Flags for 'flags' field */
00390 #define V4L2_BUF_FLAG_MAPPED    0x0001  /* Buffer is mapped (flag) */
00391 #define V4L2_BUF_FLAG_QUEUED    0x0002  /* Buffer is queued for processing */
00392 #define V4L2_BUF_FLAG_DONE  0x0004  /* Buffer is ready */
00393 #define V4L2_BUF_FLAG_KEYFRAME  0x0008  /* Image is a keyframe (I-frame) */
00394 #define V4L2_BUF_FLAG_PFRAME    0x0010  /* Image is a P-frame */
00395 #define V4L2_BUF_FLAG_BFRAME    0x0020  /* Image is a B-frame */
00396 #define V4L2_BUF_FLAG_TIMECODE  0x0100  /* timecode field is valid */
00397 #define V4L2_BUF_FLAG_INPUT     0x0200  /* input field is valid */
00398 
00399 /*
00400  *  O V E R L A Y   P R E V I E W
00401  */
00402 struct v4l2_framebuffer
00403 {
00404     __u32           capability;
00405     __u32           flags;
00406 /* FIXME: in theory we should pass something like PCI device + memory
00407  * region + offset instead of some physical address */
00408     void*                   base;
00409     struct v4l2_pix_format  fmt;
00410 };
00411 /*  Flags for the 'capability' field. Read only */
00412 #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
00413 #define V4L2_FBUF_CAP_CHROMAKEY     0x0002
00414 #define V4L2_FBUF_CAP_LIST_CLIPPING     0x0004
00415 #define V4L2_FBUF_CAP_BITMAP_CLIPPING   0x0008
00416 /*  Flags for the 'flags' field. */
00417 #define V4L2_FBUF_FLAG_PRIMARY      0x0001
00418 #define V4L2_FBUF_FLAG_OVERLAY      0x0002
00419 #define V4L2_FBUF_FLAG_CHROMAKEY    0x0004
00420 
00421 struct v4l2_clip
00422 {
00423     struct v4l2_rect        c;
00424     struct v4l2_clip    *next;
00425 };
00426 
00427 struct v4l2_window
00428 {
00429     struct v4l2_rect        w;
00430     enum v4l2_field     field;
00431     __u32           chromakey;
00432     struct v4l2_clip    *clips;
00433     __u32           clipcount;
00434     void            *bitmap;
00435 };
00436 
00437 
00438 /*
00439  *  C A P T U R E   P A R A M E T E R S
00440  */
00441 struct v4l2_captureparm
00442 {
00443     __u32          capability;    /*  Supported modes */
00444     __u32          capturemode;   /*  Current mode */
00445     struct v4l2_fract  timeperframe;  /*  Time per frame in .1us units */
00446     __u32          extendedmode;  /*  Driver-specific extensions */
00447     __u32              readbuffers;   /*  # of buffers for read */
00448     __u32          reserved[4];
00449 };
00450 /*  Flags for 'capability' and 'capturemode' fields */
00451 #define V4L2_MODE_HIGHQUALITY   0x0001  /*  High quality imaging mode */
00452 #define V4L2_CAP_TIMEPERFRAME   0x1000  /*  timeperframe field is supported */
00453 
00454 struct v4l2_outputparm
00455 {
00456     __u32          capability;   /*  Supported modes */
00457     __u32          outputmode;   /*  Current mode */
00458     struct v4l2_fract  timeperframe; /*  Time per frame in seconds */
00459     __u32          extendedmode; /*  Driver-specific extensions */
00460     __u32              writebuffers; /*  # of buffers for write */
00461     __u32          reserved[4];
00462 };
00463 
00464 /*
00465  *  I N P U T   I M A G E   C R O P P I N G
00466  */
00467 
00468 struct v4l2_cropcap {
00469     enum v4l2_buf_type      type;   
00470         struct v4l2_rect        bounds;
00471         struct v4l2_rect        defrect;
00472         struct v4l2_fract       pixelaspect;
00473 };
00474 
00475 struct v4l2_crop {
00476     enum v4l2_buf_type      type;
00477     struct v4l2_rect        c;
00478 };
00479 
00480 /*
00481  *      A N A L O G   V I D E O   S T A N D A R D
00482  */
00483 
00484 typedef __u64 v4l2_std_id;
00485 
00486 /* one bit for each */
00487 #define V4L2_STD_PAL_B          ((v4l2_std_id)0x00000001)
00488 #define V4L2_STD_PAL_B1         ((v4l2_std_id)0x00000002)
00489 #define V4L2_STD_PAL_G          ((v4l2_std_id)0x00000004)
00490 #define V4L2_STD_PAL_H          ((v4l2_std_id)0x00000008)
00491 #define V4L2_STD_PAL_I          ((v4l2_std_id)0x00000010)
00492 #define V4L2_STD_PAL_D          ((v4l2_std_id)0x00000020)
00493 #define V4L2_STD_PAL_D1         ((v4l2_std_id)0x00000040)
00494 #define V4L2_STD_PAL_K          ((v4l2_std_id)0x00000080)
00495 
00496 #define V4L2_STD_PAL_M          ((v4l2_std_id)0x00000100)
00497 #define V4L2_STD_PAL_N          ((v4l2_std_id)0x00000200)
00498 #define V4L2_STD_PAL_Nc         ((v4l2_std_id)0x00000400)
00499 #define V4L2_STD_PAL_60         ((v4l2_std_id)0x00000800)
00500 
00501 #define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000)
00502 #define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000)
00503 
00504 #define V4L2_STD_SECAM_B        ((v4l2_std_id)0x00010000)
00505 #define V4L2_STD_SECAM_D        ((v4l2_std_id)0x00020000)
00506 #define V4L2_STD_SECAM_G        ((v4l2_std_id)0x00040000)
00507 #define V4L2_STD_SECAM_H        ((v4l2_std_id)0x00080000)
00508 #define V4L2_STD_SECAM_K        ((v4l2_std_id)0x00100000)
00509 #define V4L2_STD_SECAM_K1       ((v4l2_std_id)0x00200000)
00510 #define V4L2_STD_SECAM_L        ((v4l2_std_id)0x00400000)
00511 
00512 /* ATSC/HDTV */
00513 #define V4L2_STD_ATSC_8_VSB     ((v4l2_std_id)0x01000000)
00514 #define V4L2_STD_ATSC_16_VSB    ((v4l2_std_id)0x02000000)
00515 
00516 /* some common needed stuff */
00517 #define V4L2_STD_PAL_BG     (V4L2_STD_PAL_B     |\
00518                  V4L2_STD_PAL_B1    |\
00519                  V4L2_STD_PAL_G)
00520 #define V4L2_STD_PAL_DK     (V4L2_STD_PAL_D     |\
00521                  V4L2_STD_PAL_D1    |\
00522                  V4L2_STD_PAL_K)
00523 #define V4L2_STD_PAL        (V4L2_STD_PAL_BG    |\
00524                  V4L2_STD_PAL_DK    |\
00525                  V4L2_STD_PAL_H     |\
00526                  V4L2_STD_PAL_I)
00527 #define V4L2_STD_NTSC           (V4L2_STD_NTSC_M    |\
00528                  V4L2_STD_NTSC_M_JP)
00529 #define V4L2_STD_SECAM_DK       (V4L2_STD_SECAM_D   |\
00530                  V4L2_STD_SECAM_K   |\
00531                  V4L2_STD_SECAM_K1)
00532 #define V4L2_STD_SECAM      (V4L2_STD_SECAM_B   |\
00533                  V4L2_STD_SECAM_G   |\
00534                  V4L2_STD_SECAM_H   |\
00535                  V4L2_STD_SECAM_DK  |\
00536                  V4L2_STD_SECAM_L)
00537 
00538 #define V4L2_STD_525_60     (V4L2_STD_PAL_M     |\
00539                  V4L2_STD_PAL_60    |\
00540                  V4L2_STD_NTSC)
00541 #define V4L2_STD_625_50     (V4L2_STD_PAL       |\
00542                  V4L2_STD_PAL_N     |\
00543                  V4L2_STD_PAL_Nc    |\
00544                  V4L2_STD_SECAM)
00545 #define V4L2_STD_ATSC           (V4L2_STD_ATSC_8_VSB    |\
00546                          V4L2_STD_ATSC_16_VSB)
00547 
00548 #define V4L2_STD_UNKNOWN        0
00549 #define V4L2_STD_ALL            (V4L2_STD_525_60    |\
00550                  V4L2_STD_625_50)
00551 
00552 struct v4l2_standard
00553 {
00554     __u32                index;
00555     v4l2_std_id          id;
00556     __u8             name[24];
00557     struct v4l2_fract    frameperiod; /* Frames, not fields */
00558     __u32            framelines;
00559     __u32            reserved[4];
00560 };
00561 
00562 
00563 /*
00564  *  V I D E O   I N P U T S
00565  */
00566 struct v4l2_input
00567 {
00568     __u32        index;     /*  Which input */
00569     __u8         name[32];          /*  Label */
00570     __u32        type;      /*  Type of input */
00571     __u32        audioset;          /*  Associated audios (bitfield) */
00572     __u32        tuner;             /*  Associated tuner */
00573     v4l2_std_id  std;
00574     __u32        status;
00575     __u32        reserved[4];
00576 };
00577 /*  Values for the 'type' field */
00578 #define V4L2_INPUT_TYPE_TUNER       1
00579 #define V4L2_INPUT_TYPE_CAMERA      2
00580 
00581 /* field 'status' - general */
00582 #define V4L2_IN_ST_NO_POWER    0x00000001  /* Attached device is off */
00583 #define V4L2_IN_ST_NO_SIGNAL   0x00000002
00584 #define V4L2_IN_ST_NO_COLOR    0x00000004
00585 
00586 /* field 'status' - analog */
00587 #define V4L2_IN_ST_NO_H_LOCK   0x00000100  /* No horizontal sync lock */
00588 #define V4L2_IN_ST_COLOR_KILL  0x00000200  /* Color killer is active */
00589 
00590 /* field 'status' - digital */
00591 #define V4L2_IN_ST_NO_SYNC     0x00010000  /* No synchronization lock */
00592 #define V4L2_IN_ST_NO_EQU      0x00020000  /* No equalizer lock */
00593 #define V4L2_IN_ST_NO_CARRIER  0x00040000  /* Carrier recovery failed */
00594 
00595 /* field 'status' - VCR and set-top box */
00596 #define V4L2_IN_ST_MACROVISION 0x01000000  /* Macrovision detected */
00597 #define V4L2_IN_ST_NO_ACCESS   0x02000000  /* Conditional access denied */
00598 #define V4L2_IN_ST_VTR         0x04000000  /* VTR time constant */
00599 
00600 /*
00601  *  V I D E O   O U T P U T S
00602  */
00603 struct v4l2_output
00604 {
00605     __u32        index;     /*  Which output */
00606     __u8         name[32];          /*  Label */
00607     __u32        type;      /*  Type of output */
00608     __u32        audioset;          /*  Associated audios (bitfield) */
00609     __u32        modulator;         /*  Associated modulator */
00610     v4l2_std_id  std;
00611     __u32        reserved[4];
00612 };
00613 /*  Values for the 'type' field */
00614 #define V4L2_OUTPUT_TYPE_MODULATOR      1
00615 #define V4L2_OUTPUT_TYPE_ANALOG         2
00616 #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY   3
00617 
00618 /*
00619  *  C O N T R O L S
00620  */
00621 struct v4l2_control
00622 {
00623     __u32            id;
00624     __s32            value;
00625 };
00626 
00627 /*  Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
00628 struct v4l2_queryctrl
00629 {
00630     __u32                id;
00631     enum v4l2_ctrl_type  type;
00632     __u8             name[32];  /* Whatever */
00633     __s32            minimum;   /* Note signedness */
00634     __s32            maximum;
00635     __s32                step;
00636     __s32            default_value;
00637     __u32                flags;
00638     __u32            reserved[2];
00639 };
00640 
00641 /*  Used in the VIDIOC_QUERYMENU ioctl for querying menu items */
00642 struct v4l2_querymenu
00643 {
00644     __u32       id;
00645     __u32       index;
00646     __u8        name[32];   /* Whatever */
00647     __u32       reserved;
00648 };
00649 
00650 /*  Control flags  */
00651 #define V4L2_CTRL_FLAG_DISABLED     0x0001
00652 #define V4L2_CTRL_FLAG_GRABBED      0x0002
00653 
00654 /*  Control IDs defined by V4L2 */
00655 #define V4L2_CID_BASE           0x00980900
00656 /*  IDs reserved for driver specific controls */
00657 #define V4L2_CID_PRIVATE_BASE       0x08000000
00658 
00659 #define V4L2_CID_BRIGHTNESS     (V4L2_CID_BASE+0)
00660 #define V4L2_CID_CONTRAST       (V4L2_CID_BASE+1)
00661 #define V4L2_CID_SATURATION     (V4L2_CID_BASE+2)
00662 #define V4L2_CID_HUE            (V4L2_CID_BASE+3)
00663 #define V4L2_CID_AUDIO_VOLUME       (V4L2_CID_BASE+5)
00664 #define V4L2_CID_AUDIO_BALANCE      (V4L2_CID_BASE+6)
00665 #define V4L2_CID_AUDIO_BASS     (V4L2_CID_BASE+7)
00666 #define V4L2_CID_AUDIO_TREBLE       (V4L2_CID_BASE+8)
00667 #define V4L2_CID_AUDIO_MUTE     (V4L2_CID_BASE+9)
00668 #define V4L2_CID_AUDIO_LOUDNESS     (V4L2_CID_BASE+10)
00669 #define V4L2_CID_BLACK_LEVEL        (V4L2_CID_BASE+11)
00670 #define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
00671 #define V4L2_CID_DO_WHITE_BALANCE   (V4L2_CID_BASE+13)
00672 #define V4L2_CID_RED_BALANCE        (V4L2_CID_BASE+14)
00673 #define V4L2_CID_BLUE_BALANCE       (V4L2_CID_BASE+15)
00674 #define V4L2_CID_GAMMA          (V4L2_CID_BASE+16)
00675 #define V4L2_CID_WHITENESS      (V4L2_CID_GAMMA) /* ? Not sure */
00676 #define V4L2_CID_EXPOSURE       (V4L2_CID_BASE+17)
00677 #define V4L2_CID_AUTOGAIN       (V4L2_CID_BASE+18)
00678 #define V4L2_CID_GAIN           (V4L2_CID_BASE+19)
00679 #define V4L2_CID_HFLIP          (V4L2_CID_BASE+20)
00680 #define V4L2_CID_VFLIP          (V4L2_CID_BASE+21)
00681 #define V4L2_CID_HCENTER        (V4L2_CID_BASE+22)
00682 #define V4L2_CID_VCENTER        (V4L2_CID_BASE+23)
00683 #define V4L2_CID_LASTP1         (V4L2_CID_BASE+24) /* last CID + 1 */
00684 
00685 /*
00686  *  T U N I N G
00687  */
00688 struct v4l2_tuner
00689 {
00690     __u32                   index;
00691     __u8            name[32];
00692     enum v4l2_tuner_type    type;
00693     __u32           capability;
00694     __u32           rangelow;
00695     __u32           rangehigh;
00696     __u32           rxsubchans;
00697     __u32           audmode;
00698     __s32           signal;
00699     __s32           afc;
00700     __u32           reserved[4];
00701 };
00702 
00703 struct v4l2_modulator
00704 {
00705     __u32           index;
00706     __u8            name[32];
00707     __u32           capability;
00708     __u32           rangelow;
00709     __u32           rangehigh;
00710     __u32           txsubchans;
00711     __u32           reserved[4];
00712 };
00713 
00714 /*  Flags for the 'capability' field */
00715 #define V4L2_TUNER_CAP_LOW      0x0001
00716 #define V4L2_TUNER_CAP_NORM     0x0002
00717 #define V4L2_TUNER_CAP_STEREO       0x0010
00718 #define V4L2_TUNER_CAP_LANG2        0x0020
00719 #define V4L2_TUNER_CAP_SAP      0x0020
00720 #define V4L2_TUNER_CAP_LANG1        0x0040
00721 
00722 /*  Flags for the 'rxsubchans' field */
00723 #define V4L2_TUNER_SUB_MONO     0x0001
00724 #define V4L2_TUNER_SUB_STEREO       0x0002
00725 #define V4L2_TUNER_SUB_LANG2        0x0004
00726 #define V4L2_TUNER_SUB_SAP      0x0004
00727 #define V4L2_TUNER_SUB_LANG1        0x0008
00728 
00729 /*  Values for the 'audmode' field */
00730 #define V4L2_TUNER_MODE_MONO        0x0000
00731 #define V4L2_TUNER_MODE_STEREO      0x0001
00732 #define V4L2_TUNER_MODE_LANG2       0x0002
00733 #define V4L2_TUNER_MODE_SAP     0x0002
00734 #define V4L2_TUNER_MODE_LANG1       0x0003
00735 
00736 struct v4l2_frequency
00737 {
00738     __u32                 tuner;
00739     enum v4l2_tuner_type  type;
00740         __u32                 frequency;
00741     __u32                 reserved[8];
00742 };
00743 
00744 /*
00745  *  A U D I O
00746  */
00747 struct v4l2_audio
00748 {
00749     __u32   index;
00750     __u8    name[32];
00751     __u32   capability;
00752     __u32   mode;
00753     __u32   reserved[2];
00754 };
00755 /*  Flags for the 'capability' field */
00756 #define V4L2_AUDCAP_STEREO      0x00001
00757 #define V4L2_AUDCAP_AVL         0x00002
00758 
00759 /*  Flags for the 'mode' field */
00760 #define V4L2_AUDMODE_AVL        0x00001
00761 
00762 struct v4l2_audioout
00763 {
00764     __u32   index;
00765     __u8    name[32];
00766     __u32   capability;
00767     __u32   mode;
00768     __u32   reserved[2];
00769 };
00770 
00771 /*
00772  *  D A T A   S E R V I C E S   ( V B I )
00773  *
00774  *  Data services API by Michael Schimek
00775  */
00776 
00777 struct v4l2_vbi_format
00778 {
00779     __u32   sampling_rate;      /* in 1 Hz */
00780     __u32   offset;
00781     __u32   samples_per_line;
00782     __u32   sample_format;      /* V4L2_PIX_FMT_* */
00783     __s32   start[2];
00784     __u32   count[2];
00785     __u32   flags;          /* V4L2_VBI_* */
00786     __u32   reserved[2];        /* must be zero */
00787 };
00788 
00789 /*  VBI flags  */
00790 #define V4L2_VBI_UNSYNC     (1<< 0)
00791 #define V4L2_VBI_INTERLACED (1<< 1)
00792 
00793 
00794 /*
00795  *  A G G R E G A T E   S T R U C T U R E S
00796  */
00797 
00798 /*  Stream data format
00799  */
00800 struct v4l2_format
00801 {
00802     enum v4l2_buf_type type;
00803     union
00804     {
00805         struct v4l2_pix_format  pix;  // V4L2_BUF_TYPE_VIDEO_CAPTURE
00806         struct v4l2_window  win;  // V4L2_BUF_TYPE_VIDEO_OVERLAY
00807         struct v4l2_vbi_format  vbi;  // V4L2_BUF_TYPE_VBI_CAPTURE
00808         __u8    raw_data[200];        // user-defined
00809     } fmt;
00810 };
00811 
00812 
00813 /*  Stream type-dependent parameters
00814  */
00815 struct v4l2_streamparm
00816 {
00817     enum v4l2_buf_type type;
00818     union
00819     {
00820         struct v4l2_captureparm capture;
00821         struct v4l2_outputparm  output;
00822         __u8    raw_data[200];  /* user-defined */
00823     } parm;
00824 };
00825 
00826 
00827 
00828 /*
00829  *  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
00830  *
00831  */
00832 #define VIDIOC_QUERYCAP     _IOR  ('V',  0, struct v4l2_capability)
00833 #define VIDIOC_RESERVED     _IO   ('V',  1)
00834 #define VIDIOC_ENUM_FMT         _IOWR ('V',  2, struct v4l2_fmtdesc)
00835 #define VIDIOC_G_FMT        _IOWR ('V',  4, struct v4l2_format)
00836 #define VIDIOC_S_FMT        _IOWR ('V',  5, struct v4l2_format)
00837 #if 0
00838 #define VIDIOC_G_COMP       _IOR  ('V',  6, struct v4l2_compression)
00839 #define VIDIOC_S_COMP       _IOW  ('V',  7, struct v4l2_compression)
00840 #endif
00841 #define VIDIOC_REQBUFS      _IOWR ('V',  8, struct v4l2_requestbuffers)
00842 #define VIDIOC_QUERYBUF     _IOWR ('V',  9, struct v4l2_buffer)
00843 #define VIDIOC_G_FBUF       _IOR  ('V', 10, struct v4l2_framebuffer)
00844 #define VIDIOC_S_FBUF       _IOW  ('V', 11, struct v4l2_framebuffer)
00845 #define VIDIOC_OVERLAY      _IOW  ('V', 14, int)
00846 #define VIDIOC_QBUF     _IOWR ('V', 15, struct v4l2_buffer)
00847 #define VIDIOC_DQBUF        _IOWR ('V', 17, struct v4l2_buffer)
00848 #define VIDIOC_STREAMON     _IOW  ('V', 18, int)
00849 #define VIDIOC_STREAMOFF    _IOW  ('V', 19, int)
00850 #define VIDIOC_G_PARM       _IOWR ('V', 21, struct v4l2_streamparm)
00851 #define VIDIOC_S_PARM       _IOWR ('V', 22, struct v4l2_streamparm)
00852 #define VIDIOC_G_STD        _IOR  ('V', 23, v4l2_std_id)
00853 #define VIDIOC_S_STD        _IOW  ('V', 24, v4l2_std_id)
00854 #define VIDIOC_ENUMSTD      _IOWR ('V', 25, struct v4l2_standard)
00855 #define VIDIOC_ENUMINPUT    _IOWR ('V', 26, struct v4l2_input)
00856 #define VIDIOC_G_CTRL       _IOWR ('V', 27, struct v4l2_control)
00857 #define VIDIOC_S_CTRL       _IOWR ('V', 28, struct v4l2_control)
00858 #define VIDIOC_G_TUNER      _IOWR ('V', 29, struct v4l2_tuner)
00859 #define VIDIOC_S_TUNER      _IOW  ('V', 30, struct v4l2_tuner)
00860 #define VIDIOC_G_AUDIO      _IOR  ('V', 33, struct v4l2_audio)
00861 #define VIDIOC_S_AUDIO      _IOW  ('V', 34, struct v4l2_audio)
00862 #define VIDIOC_QUERYCTRL    _IOWR ('V', 36, struct v4l2_queryctrl)
00863 #define VIDIOC_QUERYMENU    _IOWR ('V', 37, struct v4l2_querymenu)
00864 #define VIDIOC_G_INPUT      _IOR  ('V', 38, int)
00865 #define VIDIOC_S_INPUT      _IOWR ('V', 39, int)
00866 #define VIDIOC_G_OUTPUT     _IOR  ('V', 46, int)
00867 #define VIDIOC_S_OUTPUT     _IOWR ('V', 47, int)
00868 #define VIDIOC_ENUMOUTPUT   _IOWR ('V', 48, struct v4l2_output)
00869 #define VIDIOC_G_AUDOUT     _IOR  ('V', 49, struct v4l2_audioout)
00870 #define VIDIOC_S_AUDOUT     _IOW  ('V', 50, struct v4l2_audioout)
00871 #define VIDIOC_G_MODULATOR  _IOWR ('V', 54, struct v4l2_modulator)
00872 #define VIDIOC_S_MODULATOR  _IOW  ('V', 55, struct v4l2_modulator)
00873 #define VIDIOC_G_FREQUENCY  _IOWR ('V', 56, struct v4l2_frequency)
00874 #define VIDIOC_S_FREQUENCY  _IOW  ('V', 57, struct v4l2_frequency)
00875 #define VIDIOC_CROPCAP      _IOWR ('V', 58, struct v4l2_cropcap)
00876 #define VIDIOC_G_CROP       _IOWR ('V', 59, struct v4l2_crop)
00877 #define VIDIOC_S_CROP       _IOW  ('V', 60, struct v4l2_crop)
00878 #define VIDIOC_G_JPEGCOMP   _IOR  ('V', 61, struct v4l2_jpegcompression)
00879 #define VIDIOC_S_JPEGCOMP   _IOW  ('V', 62, struct v4l2_jpegcompression)
00880 #define VIDIOC_QUERYSTD         _IOR  ('V', 63, v4l2_std_id)
00881 #define VIDIOC_TRY_FMT          _IOWR ('V', 64, struct v4l2_format)
00882 #define VIDIOC_ENUMAUDIO    _IOWR ('V', 65, struct v4l2_audio)
00883 #define VIDIOC_ENUMAUDOUT   _IOWR ('V', 66, struct v4l2_audioout)
00884 #define VIDIOC_G_PRIORITY       _IOR  ('V', 67, enum v4l2_priority)
00885 #define VIDIOC_S_PRIORITY       _IOW  ('V', 68, enum v4l2_priority)
00886 
00887 /* for compatibility, will go away some day */
00888 #define VIDIOC_OVERLAY_OLD      _IOWR ('V', 14, int)
00889 #define VIDIOC_S_PARM_OLD       _IOW  ('V', 22, struct v4l2_streamparm)
00890 #define VIDIOC_S_CTRL_OLD       _IOW  ('V', 28, struct v4l2_control)
00891 #define VIDIOC_G_AUDIO_OLD      _IOWR ('V', 33, struct v4l2_audio)
00892 #define VIDIOC_G_AUDOUT_OLD     _IOWR ('V', 49, struct v4l2_audioout)
00893 #define VIDIOC_CROPCAP_OLD      _IOR  ('V', 58, struct v4l2_cropcap)
00894 
00895 #define BASE_VIDIOC_PRIVATE 192     /* 192-255 are private */
00896 
00897 #endif /* __LINUX_VIDEODEV2_H */
00898 
00899 /*
00900  * Local variables:
00901  * c-basic-offset: 8
00902  * End:
00903  */

kstars

Skip menu "kstars"
  • Main Page
  • Modules
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

API Reference

Skip menu "API Reference"
  • keduca
  • kstars
Generated for API Reference by doxygen 1.5.9
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal