00001 #ifndef __LINUX_VIDEODEV2_H
00002 #define __LINUX_VIDEODEV2_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifdef __KERNEL__
00017 #include <linux/time.h>
00018 #endif
00019
00020 #include "videodevfix.h"
00021
00022
00023
00024
00025
00026
00027 #define v4l2_fourcc(a,b,c,d)\
00028 (((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24))
00029
00030
00031
00032
00033 enum v4l2_field {
00034 V4L2_FIELD_ANY = 0,
00035
00036
00037
00038 V4L2_FIELD_NONE = 1,
00039 V4L2_FIELD_TOP = 2,
00040 V4L2_FIELD_BOTTOM = 3,
00041 V4L2_FIELD_INTERLACED = 4,
00042 V4L2_FIELD_SEQ_TB = 5,
00043
00044 V4L2_FIELD_SEQ_BT = 6,
00045 V4L2_FIELD_ALTERNATE = 7,
00046
00047 };
00048 #define V4L2_FIELD_HAS_TOP(field) \
00049 ((field) == V4L2_FIELD_TOP ||\
00050 (field) == V4L2_FIELD_INTERLACED ||\
00051 (field) == V4L2_FIELD_SEQ_TB ||\
00052 (field) == V4L2_FIELD_SEQ_BT)
00053 #define V4L2_FIELD_HAS_BOTTOM(field) \
00054 ((field) == V4L2_FIELD_BOTTOM ||\
00055 (field) == V4L2_FIELD_INTERLACED ||\
00056 (field) == V4L2_FIELD_SEQ_TB ||\
00057 (field) == V4L2_FIELD_SEQ_BT)
00058 #define V4L2_FIELD_HAS_BOTH(field) \
00059 ((field) == V4L2_FIELD_INTERLACED ||\
00060 (field) == V4L2_FIELD_SEQ_TB ||\
00061 (field) == V4L2_FIELD_SEQ_BT)
00062
00063 enum v4l2_buf_type {
00064 V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
00065 V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
00066 V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
00067 V4L2_BUF_TYPE_VBI_CAPTURE = 4,
00068 V4L2_BUF_TYPE_VBI_OUTPUT = 5,
00069 V4L2_BUF_TYPE_PRIVATE = 0x80,
00070 };
00071
00072 enum v4l2_ctrl_type {
00073 V4L2_CTRL_TYPE_INTEGER = 1,
00074 V4L2_CTRL_TYPE_BOOLEAN = 2,
00075 V4L2_CTRL_TYPE_MENU = 3,
00076 V4L2_CTRL_TYPE_BUTTON = 4,
00077 };
00078
00079 enum v4l2_tuner_type {
00080 V4L2_TUNER_RADIO = 1,
00081 V4L2_TUNER_ANALOG_TV = 2,
00082 };
00083
00084 enum v4l2_memory {
00085 V4L2_MEMORY_MMAP = 1,
00086 V4L2_MEMORY_USERPTR = 2,
00087 V4L2_MEMORY_OVERLAY = 3,
00088 };
00089
00090
00091 enum v4l2_colorspace {
00092
00093 V4L2_COLORSPACE_SMPTE170M = 1,
00094
00095
00096 V4L2_COLORSPACE_SMPTE240M = 2,
00097
00098
00099 V4L2_COLORSPACE_REC709 = 3,
00100
00101
00102 V4L2_COLORSPACE_BT878 = 4,
00103
00104
00105 V4L2_COLORSPACE_470_SYSTEM_M = 5,
00106 V4L2_COLORSPACE_470_SYSTEM_BG = 6,
00107
00108
00109
00110
00111
00112 V4L2_COLORSPACE_JPEG = 7,
00113
00114
00115 V4L2_COLORSPACE_SRGB = 8,
00116 };
00117
00118 enum v4l2_priority {
00119 V4L2_PRIORITY_UNSET = 0,
00120 V4L2_PRIORITY_BACKGROUND = 1,
00121 V4L2_PRIORITY_INTERACTIVE = 2,
00122 V4L2_PRIORITY_RECORD = 3,
00123 V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE,
00124 };
00125
00126 struct v4l2_rect {
00127 __s32 left;
00128 __s32 top;
00129 __s32 width;
00130 __s32 height;
00131 };
00132
00133 struct v4l2_fract {
00134 __u32 numerator;
00135 __u32 denominator;
00136 };
00137
00138
00139
00140
00141 struct v4l2_capability
00142 {
00143 __u8 driver[16];
00144 __u8 card[32];
00145 __u8 bus_info[32];
00146 __u32 version;
00147 __u32 capabilities;
00148 __u32 reserved[4];
00149 };
00150
00151
00152 #define V4L2_CAP_VIDEO_CAPTURE 0x00000001
00153 #define V4L2_CAP_VIDEO_OUTPUT 0x00000002
00154 #define V4L2_CAP_VIDEO_OVERLAY 0x00000004
00155 #define V4L2_CAP_VBI_CAPTURE 0x00000010
00156 #define V4L2_CAP_VBI_OUTPUT 0x00000020
00157 #define V4L2_CAP_RDS_CAPTURE 0x00000100
00158
00159 #define V4L2_CAP_TUNER 0x00010000
00160 #define V4L2_CAP_AUDIO 0x00020000
00161 #define V4L2_CAP_RADIO 0x00040000
00162
00163 #define V4L2_CAP_READWRITE 0x01000000
00164 #define V4L2_CAP_ASYNCIO 0x02000000
00165 #define V4L2_CAP_STREAMING 0x04000000
00166
00167
00168
00169
00170
00171 struct v4l2_pix_format
00172 {
00173 __u32 width;
00174 __u32 height;
00175 __u32 pixelformat;
00176 enum v4l2_field field;
00177 __u32 bytesperline;
00178 __u32 sizeimage;
00179 enum v4l2_colorspace colorspace;
00180 __u32 priv;
00181 };
00182
00183
00184 #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R','G','B','1')
00185 #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R','G','B','O')
00186 #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R','G','B','P')
00187 #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R','G','B','Q')
00188 #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R','G','B','R')
00189 #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B','G','R','3')
00190 #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R','G','B','3')
00191 #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B','G','R','4')
00192 #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R','G','B','4')
00193 #define V4L2_PIX_FMT_GREY v4l2_fourcc('G','R','E','Y')
00194 #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y','V','U','9')
00195 #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y','V','1','2')
00196 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y','U','Y','V')
00197 #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U','Y','V','Y')
00198 #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4','2','2','P')
00199 #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4','1','1','P')
00200 #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y','4','1','P')
00201
00202
00203 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N','V','1','2')
00204 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N','V','2','1')
00205
00206
00207 #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y','U','V','9')
00208 #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y','U','1','2')
00209 #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y','Y','U','V')
00210 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H','I','2','4')
00211
00212
00213 #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M','J','P','G')
00214 #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J','P','E','G')
00215 #define V4L2_PIX_FMT_DV v4l2_fourcc('d','v','s','d')
00216 #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M','P','E','G')
00217
00218
00219 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W','N','V','A')
00220
00221
00222
00223
00224 struct v4l2_fmtdesc
00225 {
00226 __u32 index;
00227 enum v4l2_buf_type type;
00228 __u32 flags;
00229 __u8 description[32];
00230 __u32 pixelformat;
00231 __u32 reserved[4];
00232 };
00233
00234 #define V4L2_FMT_FLAG_COMPRESSED 0x0001
00235
00236
00237
00238
00239
00240 struct v4l2_timecode
00241 {
00242 __u32 type;
00243 __u32 flags;
00244 __u8 frames;
00245 __u8 seconds;
00246 __u8 minutes;
00247 __u8 hours;
00248 __u8 userbits[4];
00249 };
00250
00251
00252 #define V4L2_TC_TYPE_24FPS 1
00253 #define V4L2_TC_TYPE_25FPS 2
00254 #define V4L2_TC_TYPE_30FPS 3
00255 #define V4L2_TC_TYPE_50FPS 4
00256 #define V4L2_TC_TYPE_60FPS 5
00257
00258
00259 #define V4L2_TC_FLAG_DROPFRAME 0x0001
00260 #define V4L2_TC_FLAG_COLORFRAME 0x0002
00261 #define V4L2_TC_USERBITS_field 0x000C
00262 #define V4L2_TC_USERBITS_USERDEFINED 0x0000
00263 #define V4L2_TC_USERBITS_8BITCHARS 0x0008
00264
00265
00266
00267
00268
00269
00270 #if 0
00271
00272
00273
00274 struct v4l2_compression
00275 {
00276 __u32 quality;
00277 __u32 keyframerate;
00278 __u32 pframerate;
00279 __u32 reserved[5];
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325 };
00326 #endif
00327
00328 struct v4l2_jpegcompression
00329 {
00330 int quality;
00331
00332 int APPn;
00333
00334 int APP_len;
00335 char APP_data[60];
00336
00337 int COM_len;
00338 char COM_data[60];
00339
00340 __u32 jpeg_markers;
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350 #define V4L2_JPEG_MARKER_DHT (1<<3)
00351 #define V4L2_JPEG_MARKER_DQT (1<<4)
00352 #define V4L2_JPEG_MARKER_DRI (1<<5)
00353 #define V4L2_JPEG_MARKER_COM (1<<6)
00354 #define V4L2_JPEG_MARKER_APP (1<<7)
00355
00356 };
00357
00358
00359
00360
00361
00362 struct v4l2_requestbuffers
00363 {
00364 __u32 count;
00365 enum v4l2_buf_type type;
00366 enum v4l2_memory memory;
00367 __u32 reserved[2];
00368 };
00369
00370 struct v4l2_buffer
00371 {
00372 __u32 index;
00373 enum v4l2_buf_type type;
00374 __u32 bytesused;
00375 __u32 flags;
00376 enum v4l2_field field;
00377 struct timeval timestamp;
00378 struct v4l2_timecode timecode;
00379 __u32 sequence;
00380
00381
00382 enum v4l2_memory memory;
00383 union {
00384 __u32 offset;
00385 unsigned long userptr;
00386 } m;
00387 __u32 length;
00388
00389 __u32 reserved[2];
00390 };
00391
00392
00393 #define V4L2_BUF_FLAG_MAPPED 0x0001
00394 #define V4L2_BUF_FLAG_QUEUED 0x0002
00395 #define V4L2_BUF_FLAG_DONE 0x0004
00396 #define V4L2_BUF_FLAG_KEYFRAME 0x0008
00397 #define V4L2_BUF_FLAG_PFRAME 0x0010
00398 #define V4L2_BUF_FLAG_BFRAME 0x0020
00399 #define V4L2_BUF_FLAG_TIMECODE 0x0100
00400
00401
00402
00403
00404 struct v4l2_framebuffer
00405 {
00406 __u32 capability;
00407 __u32 flags;
00408
00409
00410 void* base;
00411 struct v4l2_pix_format fmt;
00412 };
00413
00414 #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
00415 #define V4L2_FBUF_CAP_CHROMAKEY 0x0002
00416 #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
00417 #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
00418
00419 #define V4L2_FBUF_FLAG_PRIMARY 0x0001
00420 #define V4L2_FBUF_FLAG_OVERLAY 0x0002
00421 #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
00422
00423 struct v4l2_clip
00424 {
00425 struct v4l2_rect c;
00426 struct v4l2_clip *next;
00427 };
00428
00429 struct v4l2_window
00430 {
00431 struct v4l2_rect w;
00432 enum v4l2_field field;
00433 __u32 chromakey;
00434 struct v4l2_clip *clips;
00435 __u32 clipcount;
00436 void *bitmap;
00437 };
00438
00439
00440
00441
00442
00443 struct v4l2_captureparm
00444 {
00445 __u32 capability;
00446 __u32 capturemode;
00447 struct v4l2_fract timeperframe;
00448 __u32 extendedmode;
00449 __u32 readbuffers;
00450 __u32 reserved[4];
00451 };
00452
00453 #define V4L2_MODE_HIGHQUALITY 0x0001
00454 #define V4L2_CAP_TIMEPERFRAME 0x1000
00455
00456 struct v4l2_outputparm
00457 {
00458 __u32 capability;
00459 __u32 outputmode;
00460 struct v4l2_fract timeperframe;
00461 __u32 extendedmode;
00462 __u32 writebuffers;
00463 __u32 reserved[4];
00464 };
00465
00466
00467
00468
00469
00470 struct v4l2_cropcap {
00471 enum v4l2_buf_type type;
00472 struct v4l2_rect bounds;
00473 struct v4l2_rect defrect;
00474 struct v4l2_fract pixelaspect;
00475 };
00476
00477 struct v4l2_crop {
00478 enum v4l2_buf_type type;
00479 struct v4l2_rect c;
00480 };
00481
00482
00483
00484
00485
00486 typedef __u64 v4l2_std_id;
00487
00488
00489 #define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
00490 #define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
00491 #define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
00492 #define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
00493 #define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
00494 #define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
00495 #define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
00496 #define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
00497
00498 #define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
00499 #define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
00500 #define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
00501 #define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
00502
00503 #define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
00504 #define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
00505
00506 #define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
00507 #define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
00508 #define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
00509 #define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
00510 #define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
00511 #define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
00512 #define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
00513
00514
00515 #define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
00516 #define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
00517
00518
00519 #define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\
00520 V4L2_STD_PAL_B1 |\
00521 V4L2_STD_PAL_G)
00522 #define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
00523 V4L2_STD_PAL_D1 |\
00524 V4L2_STD_PAL_K)
00525 #define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
00526 V4L2_STD_PAL_DK |\
00527 V4L2_STD_PAL_H |\
00528 V4L2_STD_PAL_I)
00529 #define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\
00530 V4L2_STD_NTSC_M_JP)
00531 #define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\
00532 V4L2_STD_SECAM_D |\
00533 V4L2_STD_SECAM_G |\
00534 V4L2_STD_SECAM_H |\
00535 V4L2_STD_SECAM_K |\
00536 V4L2_STD_SECAM_K1 |\
00537 V4L2_STD_SECAM_L)
00538
00539 #define V4L2_STD_525_60 (V4L2_STD_PAL_M |\
00540 V4L2_STD_PAL_60 |\
00541 V4L2_STD_NTSC)
00542 #define V4L2_STD_625_50 (V4L2_STD_PAL |\
00543 V4L2_STD_PAL_N |\
00544 V4L2_STD_PAL_Nc |\
00545 V4L2_STD_SECAM)
00546
00547 #define V4L2_STD_UNKNOWN 0
00548 #define V4L2_STD_ALL (V4L2_STD_525_60 |\
00549 V4L2_STD_625_50)
00550
00551 struct v4l2_standard
00552 {
00553 __u32 index;
00554 v4l2_std_id id;
00555 __u8 name[24];
00556 struct v4l2_fract frameperiod;
00557 __u32 framelines;
00558 __u32 reserved[4];
00559 };
00560
00561
00562
00563
00564
00565 struct v4l2_input
00566 {
00567 __u32 index;
00568 __u8 name[32];
00569 __u32 type;
00570 __u32 audioset;
00571 __u32 tuner;
00572 v4l2_std_id std;
00573 __u32 status;
00574 __u32 reserved[4];
00575 };
00576
00577 #define V4L2_INPUT_TYPE_TUNER 1
00578 #define V4L2_INPUT_TYPE_CAMERA 2
00579
00580
00581 #define V4L2_IN_ST_NO_POWER 0x00000001
00582 #define V4L2_IN_ST_NO_SIGNAL 0x00000002
00583 #define V4L2_IN_ST_NO_COLOR 0x00000004
00584
00585
00586 #define V4L2_IN_ST_NO_H_LOCK 0x00000100
00587 #define V4L2_IN_ST_COLOR_KILL 0x00000200
00588
00589
00590 #define V4L2_IN_ST_NO_SYNC 0x00010000
00591 #define V4L2_IN_ST_NO_EQU 0x00020000
00592 #define V4L2_IN_ST_NO_CARRIER 0x00040000
00593
00594
00595 #define V4L2_IN_ST_MACROVISION 0x01000000
00596 #define V4L2_IN_ST_NO_ACCESS 0x02000000
00597 #define V4L2_IN_ST_VTR 0x04000000
00598
00599
00600
00601
00602 struct v4l2_output
00603 {
00604 __u32 index;
00605 __u8 name[32];
00606 __u32 type;
00607 __u32 audioset;
00608 __u32 modulator;
00609 v4l2_std_id std;
00610 __u32 reserved[4];
00611 };
00612
00613 #define V4L2_OUTPUT_TYPE_MODULATOR 1
00614 #define V4L2_OUTPUT_TYPE_ANALOG 2
00615 #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
00616
00617
00618
00619
00620 struct v4l2_control
00621 {
00622 __u32 id;
00623 __s32 value;
00624 };
00625
00626
00627 struct v4l2_queryctrl
00628 {
00629 __u32 id;
00630 enum v4l2_ctrl_type type;
00631 __u8 name[32];
00632 __s32 minimum;
00633 __s32 maximum;
00634 __s32 step;
00635 __s32 default_value;
00636 __u32 flags;
00637 __u32 reserved[2];
00638 };
00639
00640
00641 struct v4l2_querymenu
00642 {
00643 __u32 id;
00644 __u32 index;
00645 __u8 name[32];
00646 __u32 reserved;
00647 };
00648
00649
00650 #define V4L2_CTRL_FLAG_DISABLED 0x0001
00651 #define V4L2_CTRL_FLAG_GRABBED 0x0002
00652
00653
00654 #define V4L2_CID_BASE 0x00980900
00655
00656 #define V4L2_CID_PRIVATE_BASE 0x08000000
00657
00658 #define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
00659 #define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
00660 #define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
00661 #define V4L2_CID_HUE (V4L2_CID_BASE+3)
00662 #define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)
00663 #define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)
00664 #define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)
00665 #define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)
00666 #define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)
00667 #define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)
00668 #define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11)
00669 #define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
00670 #define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)
00671 #define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)
00672 #define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)
00673 #define V4L2_CID_GAMMA (V4L2_CID_BASE+16)
00674 #define V4L2_CID_WHITENESS (V4L2_CID_GAMMA)
00675 #define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)
00676 #define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)
00677 #define V4L2_CID_GAIN (V4L2_CID_BASE+19)
00678 #define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
00679 #define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
00680 #define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
00681 #define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
00682 #define V4L2_CID_LASTP1 (V4L2_CID_BASE+24)
00683
00684
00685
00686
00687 struct v4l2_tuner
00688 {
00689 __u32 index;
00690 __u8 name[32];
00691 enum v4l2_tuner_type type;
00692 __u32 capability;
00693 __u32 rangelow;
00694 __u32 rangehigh;
00695 __u32 rxsubchans;
00696 __u32 audmode;
00697 __s32 signal;
00698 __s32 afc;
00699 __u32 reserved[4];
00700 };
00701
00702 struct v4l2_modulator
00703 {
00704 __u32 index;
00705 __u8 name[32];
00706 __u32 capability;
00707 __u32 rangelow;
00708 __u32 rangehigh;
00709 __u32 txsubchans;
00710 __u32 reserved[4];
00711 };
00712
00713
00714 #define V4L2_TUNER_CAP_LOW 0x0001
00715 #define V4L2_TUNER_CAP_NORM 0x0002
00716 #define V4L2_TUNER_CAP_STEREO 0x0010
00717 #define V4L2_TUNER_CAP_LANG2 0x0020
00718 #define V4L2_TUNER_CAP_SAP 0x0020
00719 #define V4L2_TUNER_CAP_LANG1 0x0040
00720
00721
00722 #define V4L2_TUNER_SUB_MONO 0x0001
00723 #define V4L2_TUNER_SUB_STEREO 0x0002
00724 #define V4L2_TUNER_SUB_LANG2 0x0004
00725 #define V4L2_TUNER_SUB_SAP 0x0004
00726 #define V4L2_TUNER_SUB_LANG1 0x0008
00727
00728
00729 #define V4L2_TUNER_MODE_MONO 0x0000
00730 #define V4L2_TUNER_MODE_STEREO 0x0001
00731 #define V4L2_TUNER_MODE_LANG2 0x0002
00732 #define V4L2_TUNER_MODE_SAP 0x0002
00733 #define V4L2_TUNER_MODE_LANG1 0x0003
00734
00735 struct v4l2_frequency
00736 {
00737 __u32 tuner;
00738 enum v4l2_tuner_type type;
00739 __u32 frequency;
00740 __u32 reserved[8];
00741 };
00742
00743
00744
00745
00746 struct v4l2_audio
00747 {
00748 __u32 index;
00749 __u8 name[32];
00750 __u32 capability;
00751 __u32 mode;
00752 __u32 reserved[2];
00753 };
00754
00755 #define V4L2_AUDCAP_STEREO 0x00001
00756 #define V4L2_AUDCAP_AVL 0x00002
00757
00758
00759 #define V4L2_AUDMODE_AVL 0x00001
00760
00761 struct v4l2_audioout
00762 {
00763 __u32 index;
00764 __u8 name[32];
00765 __u32 capability;
00766 __u32 mode;
00767 __u32 reserved[2];
00768 };
00769
00770
00771
00772
00773
00774
00775
00776 struct v4l2_vbi_format
00777 {
00778 __u32 sampling_rate;
00779 __u32 offset;
00780 __u32 samples_per_line;
00781 __u32 sample_format;
00782 __s32 start[2];
00783 __u32 count[2];
00784 __u32 flags;
00785 __u32 reserved[2];
00786 };
00787
00788
00789 #define V4L2_VBI_UNSYNC (1<< 0)
00790 #define V4L2_VBI_INTERLACED (1<< 1)
00791
00792
00793
00794
00795
00796
00797
00798
00799 struct v4l2_format
00800 {
00801 enum v4l2_buf_type type;
00802 union
00803 {
00804 struct v4l2_pix_format pix;
00805 struct v4l2_window win;
00806 struct v4l2_vbi_format vbi;
00807 __u8 raw_data[200];
00808 } fmt;
00809 };
00810
00811
00812
00813
00814 struct v4l2_streamparm
00815 {
00816 enum v4l2_buf_type type;
00817 union
00818 {
00819 struct v4l2_captureparm capture;
00820 struct v4l2_outputparm output;
00821 __u8 raw_data[200];
00822 } parm;
00823 };
00824
00825
00826
00827
00828
00829
00830
00831 #define VIDIOC_QUERYCAP _IOR ('V', 0, struct v4l2_capability)
00832 #define VIDIOC_RESERVED _IO ('V', 1)
00833 #define VIDIOC_ENUM_FMT _IOWR ('V', 2, struct v4l2_fmtdesc)
00834 #define VIDIOC_G_FMT _IOWR ('V', 4, struct v4l2_format)
00835 #define VIDIOC_S_FMT _IOWR ('V', 5, struct v4l2_format)
00836 #if 0
00837 #define VIDIOC_G_COMP _IOR ('V', 6, struct v4l2_compression)
00838 #define VIDIOC_S_COMP _IOW ('V', 7, struct v4l2_compression)
00839 #endif
00840 #define VIDIOC_REQBUFS _IOWR ('V', 8, struct v4l2_requestbuffers)
00841 #define VIDIOC_QUERYBUF _IOWR ('V', 9, struct v4l2_buffer)
00842 #define VIDIOC_G_FBUF _IOR ('V', 10, struct v4l2_framebuffer)
00843 #define VIDIOC_S_FBUF _IOW ('V', 11, struct v4l2_framebuffer)
00844 #define VIDIOC_OVERLAY _IOW ('V', 14, int)
00845 #define VIDIOC_QBUF _IOWR ('V', 15, struct v4l2_buffer)
00846 #define VIDIOC_DQBUF _IOWR ('V', 17, struct v4l2_buffer)
00847 #define VIDIOC_STREAMON _IOW ('V', 18, int)
00848 #define VIDIOC_STREAMOFF _IOW ('V', 19, int)
00849 #define VIDIOC_G_PARM _IOWR ('V', 21, struct v4l2_streamparm)
00850 #define VIDIOC_S_PARM _IOWR ('V', 22, struct v4l2_streamparm)
00851 #define VIDIOC_G_STD _IOR ('V', 23, v4l2_std_id)
00852 #define VIDIOC_S_STD _IOW ('V', 24, v4l2_std_id)
00853 #define VIDIOC_ENUMSTD _IOWR ('V', 25, struct v4l2_standard)
00854 #define VIDIOC_ENUMINPUT _IOWR ('V', 26, struct v4l2_input)
00855 #define VIDIOC_G_CTRL _IOWR ('V', 27, struct v4l2_control)
00856 #define VIDIOC_S_CTRL _IOWR ('V', 28, struct v4l2_control)
00857 #define VIDIOC_G_TUNER _IOWR ('V', 29, struct v4l2_tuner)
00858 #define VIDIOC_S_TUNER _IOW ('V', 30, struct v4l2_tuner)
00859 #define VIDIOC_G_AUDIO _IOR ('V', 33, struct v4l2_audio)
00860 #define VIDIOC_S_AUDIO _IOW ('V', 34, struct v4l2_audio)
00861 #define VIDIOC_QUERYCTRL _IOWR ('V', 36, struct v4l2_queryctrl)
00862 #define VIDIOC_QUERYMENU _IOWR ('V', 37, struct v4l2_querymenu)
00863 #define VIDIOC_G_INPUT _IOR ('V', 38, int)
00864 #define VIDIOC_S_INPUT _IOWR ('V', 39, int)
00865 #define VIDIOC_G_OUTPUT _IOR ('V', 46, int)
00866 #define VIDIOC_S_OUTPUT _IOWR ('V', 47, int)
00867 #define VIDIOC_ENUMOUTPUT _IOWR ('V', 48, struct v4l2_output)
00868 #define VIDIOC_G_AUDOUT _IOR ('V', 49, struct v4l2_audioout)
00869 #define VIDIOC_S_AUDOUT _IOW ('V', 50, struct v4l2_audioout)
00870 #define VIDIOC_G_MODULATOR _IOWR ('V', 54, struct v4l2_modulator)
00871 #define VIDIOC_S_MODULATOR _IOW ('V', 55, struct v4l2_modulator)
00872 #define VIDIOC_G_FREQUENCY _IOWR ('V', 56, struct v4l2_frequency)
00873 #define VIDIOC_S_FREQUENCY _IOW ('V', 57, struct v4l2_frequency)
00874 #define VIDIOC_CROPCAP _IOR ('V', 58, struct v4l2_cropcap)
00875 #define VIDIOC_G_CROP _IOWR ('V', 59, struct v4l2_crop)
00876 #define VIDIOC_S_CROP _IOW ('V', 60, struct v4l2_crop)
00877 #define VIDIOC_G_JPEGCOMP _IOR ('V', 61, struct v4l2_jpegcompression)
00878 #define VIDIOC_S_JPEGCOMP _IOW ('V', 62, struct v4l2_jpegcompression)
00879 #define VIDIOC_QUERYSTD _IOR ('V', 63, v4l2_std_id)
00880 #define VIDIOC_TRY_FMT _IOWR ('V', 64, struct v4l2_format)
00881 #define VIDIOC_ENUMAUDIO _IOWR ('V', 65, struct v4l2_audio)
00882 #define VIDIOC_ENUMAUDOUT _IOWR ('V', 66, struct v4l2_audioout)
00883 #define VIDIOC_G_PRIORITY _IOR ('V', 67, enum v4l2_priority)
00884 #define VIDIOC_S_PRIORITY _IOW ('V', 68, enum v4l2_priority)
00885
00886
00887 #define VIDIOC_OVERLAY_OLD _IOWR ('V', 14, int)
00888 #define VIDIOC_S_PARM_OLD _IOW ('V', 22, struct v4l2_streamparm)
00889 #define VIDIOC_S_CTRL_OLD _IOW ('V', 28, struct v4l2_control)
00890 #define VIDIOC_G_AUDIO_OLD _IOWR ('V', 33, struct v4l2_audio)
00891 #define VIDIOC_G_AUDOUT_OLD _IOWR ('V', 49, struct v4l2_audioout)
00892
00893 #define BASE_VIDIOC_PRIVATE 192
00894
00895
00896 #ifdef __KERNEL__
00897
00898
00899
00900
00901
00902
00903 #include <linux/fs.h>
00904
00905
00906 extern unsigned int v4l2_video_std_fps(struct v4l2_standard *vs);
00907 extern int v4l2_video_std_construct(struct v4l2_standard *vs,
00908 int id, char *name);
00909
00910
00911 struct v4l2_prio_state {
00912 atomic_t prios[4];
00913 };
00914 int v4l2_prio_init(struct v4l2_prio_state *global);
00915 int v4l2_prio_change(struct v4l2_prio_state *global, enum v4l2_priority *local,
00916 enum v4l2_priority new);
00917 int v4l2_prio_open(struct v4l2_prio_state *global, enum v4l2_priority *local);
00918 int v4l2_prio_close(struct v4l2_prio_state *global, enum v4l2_priority *local);
00919 enum v4l2_priority v4l2_prio_max(struct v4l2_prio_state *global);
00920 int v4l2_prio_check(struct v4l2_prio_state *global, enum v4l2_priority *local);
00921
00922
00923 extern char *v4l2_field_names[];
00924 extern char *v4l2_type_names[];
00925 extern char *v4l2_ioctl_names[];
00926
00927
00928 typedef int (*v4l2_kioctl)(struct inode *inode, struct file *file,
00929 unsigned int cmd, void *arg);
00930 int v4l_compat_translate_ioctl(struct inode *inode, struct file *file,
00931 int cmd, void *arg, v4l2_kioctl driver_ioctl);
00932
00933 #endif
00934 #endif
00935
00936
00937
00938
00939
00940