0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057 #ifndef _UAPI__LINUX_VIDEODEV2_H
0058 #define _UAPI__LINUX_VIDEODEV2_H
0059
0060 #ifndef __KERNEL__
0061 #include <sys/time.h>
0062 #endif
0063 #include <linux/compiler.h>
0064 #include <linux/ioctl.h>
0065 #include <linux/types.h>
0066 #include <linux/v4l2-common.h>
0067 #include <linux/v4l2-controls.h>
0068
0069
0070
0071
0072
0073 #define VIDEO_MAX_FRAME 32
0074 #define VIDEO_MAX_PLANES 8
0075
0076
0077
0078
0079
0080
0081 #define v4l2_fourcc(a, b, c, d)\
0082 ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))
0083 #define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
0084
0085
0086
0087
0088 enum v4l2_field {
0089 V4L2_FIELD_ANY = 0,
0090
0091
0092
0093 V4L2_FIELD_NONE = 1,
0094 V4L2_FIELD_TOP = 2,
0095 V4L2_FIELD_BOTTOM = 3,
0096 V4L2_FIELD_INTERLACED = 4,
0097 V4L2_FIELD_SEQ_TB = 5,
0098
0099 V4L2_FIELD_SEQ_BT = 6,
0100 V4L2_FIELD_ALTERNATE = 7,
0101
0102 V4L2_FIELD_INTERLACED_TB = 8,
0103
0104
0105 V4L2_FIELD_INTERLACED_BT = 9,
0106
0107
0108 };
0109 #define V4L2_FIELD_HAS_TOP(field) \
0110 ((field) == V4L2_FIELD_TOP ||\
0111 (field) == V4L2_FIELD_INTERLACED ||\
0112 (field) == V4L2_FIELD_INTERLACED_TB ||\
0113 (field) == V4L2_FIELD_INTERLACED_BT ||\
0114 (field) == V4L2_FIELD_SEQ_TB ||\
0115 (field) == V4L2_FIELD_SEQ_BT)
0116 #define V4L2_FIELD_HAS_BOTTOM(field) \
0117 ((field) == V4L2_FIELD_BOTTOM ||\
0118 (field) == V4L2_FIELD_INTERLACED ||\
0119 (field) == V4L2_FIELD_INTERLACED_TB ||\
0120 (field) == V4L2_FIELD_INTERLACED_BT ||\
0121 (field) == V4L2_FIELD_SEQ_TB ||\
0122 (field) == V4L2_FIELD_SEQ_BT)
0123 #define V4L2_FIELD_HAS_BOTH(field) \
0124 ((field) == V4L2_FIELD_INTERLACED ||\
0125 (field) == V4L2_FIELD_INTERLACED_TB ||\
0126 (field) == V4L2_FIELD_INTERLACED_BT ||\
0127 (field) == V4L2_FIELD_SEQ_TB ||\
0128 (field) == V4L2_FIELD_SEQ_BT)
0129 #define V4L2_FIELD_HAS_T_OR_B(field) \
0130 ((field) == V4L2_FIELD_BOTTOM ||\
0131 (field) == V4L2_FIELD_TOP ||\
0132 (field) == V4L2_FIELD_ALTERNATE)
0133 #define V4L2_FIELD_IS_INTERLACED(field) \
0134 ((field) == V4L2_FIELD_INTERLACED ||\
0135 (field) == V4L2_FIELD_INTERLACED_TB ||\
0136 (field) == V4L2_FIELD_INTERLACED_BT)
0137 #define V4L2_FIELD_IS_SEQUENTIAL(field) \
0138 ((field) == V4L2_FIELD_SEQ_TB ||\
0139 (field) == V4L2_FIELD_SEQ_BT)
0140
0141 enum v4l2_buf_type {
0142 V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
0143 V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
0144 V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
0145 V4L2_BUF_TYPE_VBI_CAPTURE = 4,
0146 V4L2_BUF_TYPE_VBI_OUTPUT = 5,
0147 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
0148 V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
0149 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
0150 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
0151 V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
0152 V4L2_BUF_TYPE_SDR_CAPTURE = 11,
0153 V4L2_BUF_TYPE_SDR_OUTPUT = 12,
0154 V4L2_BUF_TYPE_META_CAPTURE = 13,
0155 V4L2_BUF_TYPE_META_OUTPUT = 14,
0156
0157 V4L2_BUF_TYPE_PRIVATE = 0x80,
0158 };
0159
0160 #define V4L2_TYPE_IS_MULTIPLANAR(type) \
0161 ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE \
0162 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
0163
0164 #define V4L2_TYPE_IS_OUTPUT(type) \
0165 ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT \
0166 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE \
0167 || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY \
0168 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY \
0169 || (type) == V4L2_BUF_TYPE_VBI_OUTPUT \
0170 || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT \
0171 || (type) == V4L2_BUF_TYPE_SDR_OUTPUT \
0172 || (type) == V4L2_BUF_TYPE_META_OUTPUT)
0173
0174 #define V4L2_TYPE_IS_CAPTURE(type) (!V4L2_TYPE_IS_OUTPUT(type))
0175
0176 enum v4l2_tuner_type {
0177 V4L2_TUNER_RADIO = 1,
0178 V4L2_TUNER_ANALOG_TV = 2,
0179 V4L2_TUNER_DIGITAL_TV = 3,
0180 V4L2_TUNER_SDR = 4,
0181 V4L2_TUNER_RF = 5,
0182 };
0183
0184
0185 #define V4L2_TUNER_ADC V4L2_TUNER_SDR
0186
0187 enum v4l2_memory {
0188 V4L2_MEMORY_MMAP = 1,
0189 V4L2_MEMORY_USERPTR = 2,
0190 V4L2_MEMORY_OVERLAY = 3,
0191 V4L2_MEMORY_DMABUF = 4,
0192 };
0193
0194
0195 enum v4l2_colorspace {
0196
0197
0198
0199
0200 V4L2_COLORSPACE_DEFAULT = 0,
0201
0202
0203 V4L2_COLORSPACE_SMPTE170M = 1,
0204
0205
0206 V4L2_COLORSPACE_SMPTE240M = 2,
0207
0208
0209 V4L2_COLORSPACE_REC709 = 3,
0210
0211
0212
0213
0214
0215 V4L2_COLORSPACE_BT878 = 4,
0216
0217
0218
0219
0220
0221 V4L2_COLORSPACE_470_SYSTEM_M = 5,
0222
0223
0224
0225
0226 V4L2_COLORSPACE_470_SYSTEM_BG = 6,
0227
0228
0229
0230
0231
0232 V4L2_COLORSPACE_JPEG = 7,
0233
0234
0235 V4L2_COLORSPACE_SRGB = 8,
0236
0237
0238 V4L2_COLORSPACE_OPRGB = 9,
0239
0240
0241 V4L2_COLORSPACE_BT2020 = 10,
0242
0243
0244 V4L2_COLORSPACE_RAW = 11,
0245
0246
0247 V4L2_COLORSPACE_DCI_P3 = 12,
0248
0249 #ifdef __KERNEL__
0250
0251
0252
0253
0254 V4L2_COLORSPACE_LAST,
0255 #endif
0256 };
0257
0258
0259
0260
0261
0262
0263 #define V4L2_MAP_COLORSPACE_DEFAULT(is_sdtv, is_hdtv) \
0264 ((is_sdtv) ? V4L2_COLORSPACE_SMPTE170M : \
0265 ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB))
0266
0267 enum v4l2_xfer_func {
0268
0269
0270
0271
0272
0273
0274
0275
0276
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286 V4L2_XFER_FUNC_DEFAULT = 0,
0287 V4L2_XFER_FUNC_709 = 1,
0288 V4L2_XFER_FUNC_SRGB = 2,
0289 V4L2_XFER_FUNC_OPRGB = 3,
0290 V4L2_XFER_FUNC_SMPTE240M = 4,
0291 V4L2_XFER_FUNC_NONE = 5,
0292 V4L2_XFER_FUNC_DCI_P3 = 6,
0293 V4L2_XFER_FUNC_SMPTE2084 = 7,
0294 #ifdef __KERNEL__
0295
0296
0297
0298
0299 V4L2_XFER_FUNC_LAST,
0300 #endif
0301 };
0302
0303
0304
0305
0306
0307 #define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \
0308 ((colsp) == V4L2_COLORSPACE_OPRGB ? V4L2_XFER_FUNC_OPRGB : \
0309 ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \
0310 ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : \
0311 ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \
0312 ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? \
0313 V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709)))))
0314
0315 enum v4l2_ycbcr_encoding {
0316
0317
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328
0329
0330 V4L2_YCBCR_ENC_DEFAULT = 0,
0331
0332
0333 V4L2_YCBCR_ENC_601 = 1,
0334
0335
0336 V4L2_YCBCR_ENC_709 = 2,
0337
0338
0339 V4L2_YCBCR_ENC_XV601 = 3,
0340
0341
0342 V4L2_YCBCR_ENC_XV709 = 4,
0343
0344 #ifndef __KERNEL__
0345
0346
0347
0348
0349
0350 V4L2_YCBCR_ENC_SYCC = 5,
0351 #endif
0352
0353
0354 V4L2_YCBCR_ENC_BT2020 = 6,
0355
0356
0357 V4L2_YCBCR_ENC_BT2020_CONST_LUM = 7,
0358
0359
0360 V4L2_YCBCR_ENC_SMPTE240M = 8,
0361 #ifdef __KERNEL__
0362
0363
0364
0365
0366 V4L2_YCBCR_ENC_LAST,
0367 #endif
0368 };
0369
0370
0371
0372
0373
0374 enum v4l2_hsv_encoding {
0375
0376
0377 V4L2_HSV_ENC_180 = 128,
0378
0379
0380 V4L2_HSV_ENC_256 = 129,
0381 };
0382
0383
0384
0385
0386
0387 #define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) \
0388 (((colsp) == V4L2_COLORSPACE_REC709 || \
0389 (colsp) == V4L2_COLORSPACE_DCI_P3) ? V4L2_YCBCR_ENC_709 : \
0390 ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : \
0391 ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : \
0392 V4L2_YCBCR_ENC_601)))
0393
0394 enum v4l2_quantization {
0395
0396
0397
0398
0399
0400 V4L2_QUANTIZATION_DEFAULT = 0,
0401 V4L2_QUANTIZATION_FULL_RANGE = 1,
0402 V4L2_QUANTIZATION_LIM_RANGE = 2,
0403 };
0404
0405
0406
0407
0408
0409
0410
0411 #define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv, colsp, ycbcr_enc) \
0412 (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \
0413 V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)
0414
0415
0416
0417
0418
0419
0420
0421 #ifndef __KERNEL__
0422 #define V4L2_COLORSPACE_ADOBERGB V4L2_COLORSPACE_OPRGB
0423 #define V4L2_XFER_FUNC_ADOBERGB V4L2_XFER_FUNC_OPRGB
0424 #endif
0425
0426 enum v4l2_priority {
0427 V4L2_PRIORITY_UNSET = 0,
0428 V4L2_PRIORITY_BACKGROUND = 1,
0429 V4L2_PRIORITY_INTERACTIVE = 2,
0430 V4L2_PRIORITY_RECORD = 3,
0431 V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE,
0432 };
0433
0434 struct v4l2_rect {
0435 __s32 left;
0436 __s32 top;
0437 __u32 width;
0438 __u32 height;
0439 };
0440
0441 struct v4l2_fract {
0442 __u32 numerator;
0443 __u32 denominator;
0444 };
0445
0446 struct v4l2_area {
0447 __u32 width;
0448 __u32 height;
0449 };
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462 struct v4l2_capability {
0463 __u8 driver[16];
0464 __u8 card[32];
0465 __u8 bus_info[32];
0466 __u32 version;
0467 __u32 capabilities;
0468 __u32 device_caps;
0469 __u32 reserved[3];
0470 };
0471
0472
0473 #define V4L2_CAP_VIDEO_CAPTURE 0x00000001
0474 #define V4L2_CAP_VIDEO_OUTPUT 0x00000002
0475 #define V4L2_CAP_VIDEO_OVERLAY 0x00000004
0476 #define V4L2_CAP_VBI_CAPTURE 0x00000010
0477 #define V4L2_CAP_VBI_OUTPUT 0x00000020
0478 #define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040
0479 #define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080
0480 #define V4L2_CAP_RDS_CAPTURE 0x00000100
0481 #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200
0482 #define V4L2_CAP_HW_FREQ_SEEK 0x00000400
0483 #define V4L2_CAP_RDS_OUTPUT 0x00000800
0484
0485
0486 #define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000
0487
0488 #define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000
0489
0490 #define V4L2_CAP_VIDEO_M2M_MPLANE 0x00004000
0491
0492 #define V4L2_CAP_VIDEO_M2M 0x00008000
0493
0494 #define V4L2_CAP_TUNER 0x00010000
0495 #define V4L2_CAP_AUDIO 0x00020000
0496 #define V4L2_CAP_RADIO 0x00040000
0497 #define V4L2_CAP_MODULATOR 0x00080000
0498
0499 #define V4L2_CAP_SDR_CAPTURE 0x00100000
0500 #define V4L2_CAP_EXT_PIX_FORMAT 0x00200000
0501 #define V4L2_CAP_SDR_OUTPUT 0x00400000
0502 #define V4L2_CAP_META_CAPTURE 0x00800000
0503
0504 #define V4L2_CAP_READWRITE 0x01000000
0505 #define V4L2_CAP_ASYNCIO 0x02000000
0506 #define V4L2_CAP_STREAMING 0x04000000
0507 #define V4L2_CAP_META_OUTPUT 0x08000000
0508
0509 #define V4L2_CAP_TOUCH 0x10000000
0510
0511 #define V4L2_CAP_IO_MC 0x20000000
0512
0513 #define V4L2_CAP_DEVICE_CAPS 0x80000000
0514
0515
0516
0517
0518 struct v4l2_pix_format {
0519 __u32 width;
0520 __u32 height;
0521 __u32 pixelformat;
0522 __u32 field;
0523 __u32 bytesperline;
0524 __u32 sizeimage;
0525 __u32 colorspace;
0526 __u32 priv;
0527 __u32 flags;
0528 union {
0529
0530 __u32 ycbcr_enc;
0531
0532 __u32 hsv_enc;
0533 };
0534 __u32 quantization;
0535 __u32 xfer_func;
0536 };
0537
0538
0539
0540
0541 #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1')
0542 #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4')
0543 #define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2')
0544 #define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2')
0545 #define V4L2_PIX_FMT_RGBA444 v4l2_fourcc('R', 'A', '1', '2')
0546 #define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2')
0547 #define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2')
0548 #define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2')
0549 #define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2')
0550 #define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2')
0551 #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O')
0552 #define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5')
0553 #define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5')
0554 #define V4L2_PIX_FMT_RGBA555 v4l2_fourcc('R', 'A', '1', '5')
0555 #define V4L2_PIX_FMT_RGBX555 v4l2_fourcc('R', 'X', '1', '5')
0556 #define V4L2_PIX_FMT_ABGR555 v4l2_fourcc('A', 'B', '1', '5')
0557 #define V4L2_PIX_FMT_XBGR555 v4l2_fourcc('X', 'B', '1', '5')
0558 #define V4L2_PIX_FMT_BGRA555 v4l2_fourcc('B', 'A', '1', '5')
0559 #define V4L2_PIX_FMT_BGRX555 v4l2_fourcc('B', 'X', '1', '5')
0560 #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P')
0561 #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q')
0562 #define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5')
0563 #define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5')
0564 #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R')
0565
0566
0567 #define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H')
0568 #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3')
0569 #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3')
0570 #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4')
0571 #define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4')
0572 #define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4')
0573 #define V4L2_PIX_FMT_BGRA32 v4l2_fourcc('R', 'A', '2', '4')
0574 #define V4L2_PIX_FMT_BGRX32 v4l2_fourcc('R', 'X', '2', '4')
0575 #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4')
0576 #define V4L2_PIX_FMT_RGBA32 v4l2_fourcc('A', 'B', '2', '4')
0577 #define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4')
0578 #define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4')
0579 #define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4')
0580
0581
0582 #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y')
0583 #define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ')
0584 #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ')
0585 #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ')
0586 #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ')
0587 #define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ')
0588 #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ')
0589 #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ')
0590
0591
0592 #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
0593 #define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P')
0594 #define V4L2_PIX_FMT_IPU3_Y10 v4l2_fourcc('i', 'p', '3', 'y')
0595
0596
0597 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
0598
0599
0600 #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
0601
0602
0603 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
0604 #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V')
0605 #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U')
0606 #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y')
0607 #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y')
0608 #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P')
0609 #define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4')
0610 #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O')
0611 #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P')
0612 #define V4L2_PIX_FMT_YUV24 v4l2_fourcc('Y', 'U', 'V', '3')
0613 #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4')
0614 #define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V')
0615 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
0616 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
0617 #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
0618 #define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A')
0619 #define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X')
0620 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
0621
0622
0623 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
0624 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
0625 #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6')
0626 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
0627 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
0628 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
0629 #define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0')
0630
0631
0632 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
0633 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
0634 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
0635 #define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1')
0636
0637
0638 #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9')
0639 #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9')
0640 #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P')
0641 #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2')
0642 #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2')
0643 #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P')
0644
0645
0646 #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2')
0647 #define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1')
0648 #define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6')
0649 #define V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1')
0650 #define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4')
0651 #define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2')
0652
0653
0654 #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
0655 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
0656 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
0657 #define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0')
0658
0659
0660 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
0661 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
0662 #define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2')
0663 #define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2')
0664
0665
0666 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
0667 #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
0668 #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
0669 #define V4L2_PIX_FMT_SRGGB8 v4l2_fourcc('R', 'G', 'G', 'B')
0670 #define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0')
0671 #define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0')
0672 #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0')
0673 #define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0')
0674
0675 #define V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A')
0676 #define V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A')
0677 #define V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A')
0678 #define V4L2_PIX_FMT_SRGGB10P v4l2_fourcc('p', 'R', 'A', 'A')
0679
0680 #define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8')
0681 #define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8')
0682 #define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8')
0683 #define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8')
0684
0685 #define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8')
0686 #define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8')
0687 #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
0688 #define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8')
0689 #define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2')
0690 #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2')
0691 #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2')
0692 #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2')
0693
0694 #define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C')
0695 #define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C')
0696 #define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C')
0697 #define V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C')
0698 #define V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4')
0699 #define V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4')
0700 #define V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('G', 'R', '1', '4')
0701 #define V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4')
0702
0703 #define V4L2_PIX_FMT_SBGGR14P v4l2_fourcc('p', 'B', 'E', 'E')
0704 #define V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E')
0705 #define V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E')
0706 #define V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E')
0707 #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2')
0708 #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6')
0709 #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6')
0710 #define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6')
0711
0712
0713 #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')
0714 #define V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4')
0715
0716
0717 #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G')
0718 #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G')
0719 #define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd')
0720 #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G')
0721 #define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4')
0722 #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1')
0723 #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4')
0724 #define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3')
0725 #define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1')
0726 #define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2')
0727 #define V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S')
0728 #define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4')
0729 #define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D')
0730 #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G')
0731 #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L')
0732 #define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0')
0733 #define V4L2_PIX_FMT_VP8_FRAME v4l2_fourcc('V', 'P', '8', 'F')
0734 #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0')
0735 #define V4L2_PIX_FMT_VP9_FRAME v4l2_fourcc('V', 'P', '9', 'F')
0736 #define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C')
0737 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
0738 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
0739 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
0740 #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')
0741
0742
0743 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
0744 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
0745 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
0746 #define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0')
0747 #define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1')
0748 #define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2')
0749 #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5')
0750 #define V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1')
0751 #define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5')
0752 #define V4L2_PIX_FMT_SPCA508 v4l2_fourcc('S', '5', '0', '8')
0753 #define V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1')
0754 #define V4L2_PIX_FMT_PAC207 v4l2_fourcc('P', '2', '0', '7')
0755 #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0')
0756 #define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0')
0757 #define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X')
0758 #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C')
0759 #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G')
0760 #define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1')
0761 #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8')
0762 #define V4L2_PIX_FMT_STV0680 v4l2_fourcc('S', '6', '8', '0')
0763 #define V4L2_PIX_FMT_TM6000 v4l2_fourcc('T', 'M', '6', '0')
0764 #define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V')
0765 #define V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I')
0766 #define V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L')
0767 #define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1')
0768 #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I')
0769 #define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ')
0770 #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I')
0771 #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
0772 #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1')
0773 #define V4L2_PIX_FMT_MM21 v4l2_fourcc('M', 'M', '2', '1')
0774 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
0775 #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
0776 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
0777 #define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')
0778 #define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')
0779
0780
0781 #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
0782 #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
0783 #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
0784 #define V4L2_PIX_FMT_IPU3_SRGGB10 v4l2_fourcc('i', 'p', '3', 'r')
0785
0786
0787 #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8')
0788 #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6')
0789 #define V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8')
0790 #define V4L2_SDR_FMT_CS14LE v4l2_fourcc('C', 'S', '1', '4')
0791 #define V4L2_SDR_FMT_RU12LE v4l2_fourcc('R', 'U', '1', '2')
0792 #define V4L2_SDR_FMT_PCU16BE v4l2_fourcc('P', 'C', '1', '6')
0793 #define V4L2_SDR_FMT_PCU18BE v4l2_fourcc('P', 'C', '1', '8')
0794 #define V4L2_SDR_FMT_PCU20BE v4l2_fourcc('P', 'C', '2', '0')
0795
0796
0797 #define V4L2_TCH_FMT_DELTA_TD16 v4l2_fourcc('T', 'D', '1', '6')
0798 #define V4L2_TCH_FMT_DELTA_TD08 v4l2_fourcc('T', 'D', '0', '8')
0799 #define V4L2_TCH_FMT_TU16 v4l2_fourcc('T', 'U', '1', '6')
0800 #define V4L2_TCH_FMT_TU08 v4l2_fourcc('T', 'U', '0', '8')
0801
0802
0803 #define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H')
0804 #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T')
0805 #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H')
0806 #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X')
0807 #define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D')
0808
0809
0810 #define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P')
0811 #define V4L2_META_FMT_RK_ISP1_STAT_3A v4l2_fourcc('R', 'K', '1', 'S')
0812
0813
0814 #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
0815
0816
0817 #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001
0818 #define V4L2_PIX_FMT_FLAG_SET_CSC 0x00000002
0819
0820
0821
0822
0823 struct v4l2_fmtdesc {
0824 __u32 index;
0825 __u32 type;
0826 __u32 flags;
0827 __u8 description[32];
0828 __u32 pixelformat;
0829 __u32 mbus_code;
0830 __u32 reserved[3];
0831 };
0832
0833 #define V4L2_FMT_FLAG_COMPRESSED 0x0001
0834 #define V4L2_FMT_FLAG_EMULATED 0x0002
0835 #define V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM 0x0004
0836 #define V4L2_FMT_FLAG_DYN_RESOLUTION 0x0008
0837 #define V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL 0x0010
0838 #define V4L2_FMT_FLAG_CSC_COLORSPACE 0x0020
0839 #define V4L2_FMT_FLAG_CSC_XFER_FUNC 0x0040
0840 #define V4L2_FMT_FLAG_CSC_YCBCR_ENC 0x0080
0841 #define V4L2_FMT_FLAG_CSC_HSV_ENC V4L2_FMT_FLAG_CSC_YCBCR_ENC
0842 #define V4L2_FMT_FLAG_CSC_QUANTIZATION 0x0100
0843
0844
0845
0846
0847
0848 enum v4l2_frmsizetypes {
0849 V4L2_FRMSIZE_TYPE_DISCRETE = 1,
0850 V4L2_FRMSIZE_TYPE_CONTINUOUS = 2,
0851 V4L2_FRMSIZE_TYPE_STEPWISE = 3,
0852 };
0853
0854 struct v4l2_frmsize_discrete {
0855 __u32 width;
0856 __u32 height;
0857 };
0858
0859 struct v4l2_frmsize_stepwise {
0860 __u32 min_width;
0861 __u32 max_width;
0862 __u32 step_width;
0863 __u32 min_height;
0864 __u32 max_height;
0865 __u32 step_height;
0866 };
0867
0868 struct v4l2_frmsizeenum {
0869 __u32 index;
0870 __u32 pixel_format;
0871 __u32 type;
0872
0873 union {
0874 struct v4l2_frmsize_discrete discrete;
0875 struct v4l2_frmsize_stepwise stepwise;
0876 };
0877
0878 __u32 reserved[2];
0879 };
0880
0881
0882
0883
0884 enum v4l2_frmivaltypes {
0885 V4L2_FRMIVAL_TYPE_DISCRETE = 1,
0886 V4L2_FRMIVAL_TYPE_CONTINUOUS = 2,
0887 V4L2_FRMIVAL_TYPE_STEPWISE = 3,
0888 };
0889
0890 struct v4l2_frmival_stepwise {
0891 struct v4l2_fract min;
0892 struct v4l2_fract max;
0893 struct v4l2_fract step;
0894 };
0895
0896 struct v4l2_frmivalenum {
0897 __u32 index;
0898 __u32 pixel_format;
0899 __u32 width;
0900 __u32 height;
0901 __u32 type;
0902
0903 union {
0904 struct v4l2_fract discrete;
0905 struct v4l2_frmival_stepwise stepwise;
0906 };
0907
0908 __u32 reserved[2];
0909 };
0910
0911
0912
0913
0914 struct v4l2_timecode {
0915 __u32 type;
0916 __u32 flags;
0917 __u8 frames;
0918 __u8 seconds;
0919 __u8 minutes;
0920 __u8 hours;
0921 __u8 userbits[4];
0922 };
0923
0924
0925 #define V4L2_TC_TYPE_24FPS 1
0926 #define V4L2_TC_TYPE_25FPS 2
0927 #define V4L2_TC_TYPE_30FPS 3
0928 #define V4L2_TC_TYPE_50FPS 4
0929 #define V4L2_TC_TYPE_60FPS 5
0930
0931
0932 #define V4L2_TC_FLAG_DROPFRAME 0x0001
0933 #define V4L2_TC_FLAG_COLORFRAME 0x0002
0934 #define V4L2_TC_USERBITS_field 0x000C
0935 #define V4L2_TC_USERBITS_USERDEFINED 0x0000
0936 #define V4L2_TC_USERBITS_8BITCHARS 0x0008
0937
0938
0939 struct v4l2_jpegcompression {
0940 int quality;
0941
0942 int APPn;
0943
0944 int APP_len;
0945 char APP_data[60];
0946
0947 int COM_len;
0948 char COM_data[60];
0949
0950 __u32 jpeg_markers;
0951
0952
0953
0954
0955
0956
0957
0958
0959
0960 #define V4L2_JPEG_MARKER_DHT (1<<3)
0961 #define V4L2_JPEG_MARKER_DQT (1<<4)
0962 #define V4L2_JPEG_MARKER_DRI (1<<5)
0963 #define V4L2_JPEG_MARKER_COM (1<<6)
0964 #define V4L2_JPEG_MARKER_APP (1<<7)
0965
0966 };
0967
0968
0969
0970
0971
0972 #ifdef __KERNEL__
0973
0974
0975
0976
0977
0978
0979 struct __kernel_v4l2_timeval {
0980 long long tv_sec;
0981 #if defined(__sparc__) && defined(__arch64__)
0982 int tv_usec;
0983 int __pad;
0984 #else
0985 long long tv_usec;
0986 #endif
0987 };
0988 #endif
0989
0990 struct v4l2_requestbuffers {
0991 __u32 count;
0992 __u32 type;
0993 __u32 memory;
0994 __u32 capabilities;
0995 __u8 flags;
0996 __u8 reserved[3];
0997 };
0998
0999 #define V4L2_MEMORY_FLAG_NON_COHERENT (1 << 0)
1000
1001
1002 #define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0)
1003 #define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1)
1004 #define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2)
1005 #define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3)
1006 #define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4)
1007 #define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5)
1008 #define V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS (1 << 6)
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032 struct v4l2_plane {
1033 __u32 bytesused;
1034 __u32 length;
1035 union {
1036 __u32 mem_offset;
1037 unsigned long userptr;
1038 __s32 fd;
1039 } m;
1040 __u32 data_offset;
1041 __u32 reserved[11];
1042 };
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079 struct v4l2_buffer {
1080 __u32 index;
1081 __u32 type;
1082 __u32 bytesused;
1083 __u32 flags;
1084 __u32 field;
1085 #ifdef __KERNEL__
1086 struct __kernel_v4l2_timeval timestamp;
1087 #else
1088 struct timeval timestamp;
1089 #endif
1090 struct v4l2_timecode timecode;
1091 __u32 sequence;
1092
1093
1094 __u32 memory;
1095 union {
1096 __u32 offset;
1097 unsigned long userptr;
1098 struct v4l2_plane *planes;
1099 __s32 fd;
1100 } m;
1101 __u32 length;
1102 __u32 reserved2;
1103 union {
1104 __s32 request_fd;
1105 __u32 reserved;
1106 };
1107 };
1108
1109 #ifndef __KERNEL__
1110
1111
1112
1113
1114
1115
1116
1117 static inline __u64 v4l2_timeval_to_ns(const struct timeval *tv)
1118 {
1119 return (__u64)tv->tv_sec * 1000000000ULL + tv->tv_usec * 1000;
1120 }
1121 #endif
1122
1123
1124
1125 #define V4L2_BUF_FLAG_MAPPED 0x00000001
1126
1127 #define V4L2_BUF_FLAG_QUEUED 0x00000002
1128
1129 #define V4L2_BUF_FLAG_DONE 0x00000004
1130
1131 #define V4L2_BUF_FLAG_KEYFRAME 0x00000008
1132
1133 #define V4L2_BUF_FLAG_PFRAME 0x00000010
1134
1135 #define V4L2_BUF_FLAG_BFRAME 0x00000020
1136
1137 #define V4L2_BUF_FLAG_ERROR 0x00000040
1138
1139 #define V4L2_BUF_FLAG_IN_REQUEST 0x00000080
1140
1141 #define V4L2_BUF_FLAG_TIMECODE 0x00000100
1142
1143 #define V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF 0x00000200
1144
1145 #define V4L2_BUF_FLAG_PREPARED 0x00000400
1146
1147 #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x00000800
1148 #define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x00001000
1149
1150 #define V4L2_BUF_FLAG_TIMESTAMP_MASK 0x0000e000
1151 #define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x00000000
1152 #define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x00002000
1153 #define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x00004000
1154
1155 #define V4L2_BUF_FLAG_TSTAMP_SRC_MASK 0x00070000
1156 #define V4L2_BUF_FLAG_TSTAMP_SRC_EOF 0x00000000
1157 #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000
1158
1159 #define V4L2_BUF_FLAG_LAST 0x00100000
1160
1161 #define V4L2_BUF_FLAG_REQUEST_FD 0x00800000
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182 struct v4l2_exportbuffer {
1183 __u32 type;
1184 __u32 index;
1185 __u32 plane;
1186 __u32 flags;
1187 __s32 fd;
1188 __u32 reserved[11];
1189 };
1190
1191
1192
1193
1194 struct v4l2_framebuffer {
1195 __u32 capability;
1196 __u32 flags;
1197
1198
1199 void *base;
1200 struct {
1201 __u32 width;
1202 __u32 height;
1203 __u32 pixelformat;
1204 __u32 field;
1205 __u32 bytesperline;
1206 __u32 sizeimage;
1207 __u32 colorspace;
1208 __u32 priv;
1209 } fmt;
1210 };
1211
1212 #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
1213 #define V4L2_FBUF_CAP_CHROMAKEY 0x0002
1214 #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
1215 #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
1216 #define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
1217 #define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
1218 #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
1219 #define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080
1220
1221 #define V4L2_FBUF_FLAG_PRIMARY 0x0001
1222 #define V4L2_FBUF_FLAG_OVERLAY 0x0002
1223 #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
1224 #define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008
1225 #define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010
1226 #define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020
1227 #define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040
1228
1229 struct v4l2_clip {
1230 struct v4l2_rect c;
1231 struct v4l2_clip __user *next;
1232 };
1233
1234 struct v4l2_window {
1235 struct v4l2_rect w;
1236 __u32 field;
1237 __u32 chromakey;
1238 struct v4l2_clip *clips;
1239 __u32 clipcount;
1240 void __user *bitmap;
1241 __u8 global_alpha;
1242 };
1243
1244
1245
1246
1247 struct v4l2_captureparm {
1248 __u32 capability;
1249 __u32 capturemode;
1250 struct v4l2_fract timeperframe;
1251 __u32 extendedmode;
1252 __u32 readbuffers;
1253 __u32 reserved[4];
1254 };
1255
1256
1257 #define V4L2_MODE_HIGHQUALITY 0x0001
1258 #define V4L2_CAP_TIMEPERFRAME 0x1000
1259
1260 struct v4l2_outputparm {
1261 __u32 capability;
1262 __u32 outputmode;
1263 struct v4l2_fract timeperframe;
1264 __u32 extendedmode;
1265 __u32 writebuffers;
1266 __u32 reserved[4];
1267 };
1268
1269
1270
1271
1272 struct v4l2_cropcap {
1273 __u32 type;
1274 struct v4l2_rect bounds;
1275 struct v4l2_rect defrect;
1276 struct v4l2_fract pixelaspect;
1277 };
1278
1279 struct v4l2_crop {
1280 __u32 type;
1281 struct v4l2_rect c;
1282 };
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297 struct v4l2_selection {
1298 __u32 type;
1299 __u32 target;
1300 __u32 flags;
1301 struct v4l2_rect r;
1302 __u32 reserved[9];
1303 };
1304
1305
1306
1307
1308
1309
1310 typedef __u64 v4l2_std_id;
1311
1312
1313
1314
1315
1316
1317 #define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
1318 #define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
1319 #define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
1320 #define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
1321 #define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
1322 #define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
1323 #define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
1324 #define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
1325
1326 #define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
1327 #define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
1328 #define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
1329 #define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
1330
1331 #define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
1332 #define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
1333 #define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000)
1334 #define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000)
1335
1336 #define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
1337 #define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
1338 #define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
1339 #define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
1340 #define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
1341 #define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
1342 #define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
1343 #define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000)
1344
1345
1346 #define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
1347 #define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367 #define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\
1368 V4L2_STD_NTSC_M_JP |\
1369 V4L2_STD_NTSC_M_KR)
1370
1371 #define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\
1372 V4L2_STD_SECAM_K |\
1373 V4L2_STD_SECAM_K1)
1374
1375 #define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\
1376 V4L2_STD_SECAM_G |\
1377 V4L2_STD_SECAM_H |\
1378 V4L2_STD_SECAM_DK |\
1379 V4L2_STD_SECAM_L |\
1380 V4L2_STD_SECAM_LC)
1381
1382 #define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\
1383 V4L2_STD_PAL_B1 |\
1384 V4L2_STD_PAL_G)
1385 #define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
1386 V4L2_STD_PAL_D1 |\
1387 V4L2_STD_PAL_K)
1388
1389
1390
1391
1392
1393 #define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
1394 V4L2_STD_PAL_DK |\
1395 V4L2_STD_PAL_H |\
1396 V4L2_STD_PAL_I)
1397
1398 #define V4L2_STD_B (V4L2_STD_PAL_B |\
1399 V4L2_STD_PAL_B1 |\
1400 V4L2_STD_SECAM_B)
1401 #define V4L2_STD_G (V4L2_STD_PAL_G |\
1402 V4L2_STD_SECAM_G)
1403 #define V4L2_STD_H (V4L2_STD_PAL_H |\
1404 V4L2_STD_SECAM_H)
1405 #define V4L2_STD_L (V4L2_STD_SECAM_L |\
1406 V4L2_STD_SECAM_LC)
1407 #define V4L2_STD_GH (V4L2_STD_G |\
1408 V4L2_STD_H)
1409 #define V4L2_STD_DK (V4L2_STD_PAL_DK |\
1410 V4L2_STD_SECAM_DK)
1411 #define V4L2_STD_BG (V4L2_STD_B |\
1412 V4L2_STD_G)
1413 #define V4L2_STD_MN (V4L2_STD_PAL_M |\
1414 V4L2_STD_PAL_N |\
1415 V4L2_STD_PAL_Nc |\
1416 V4L2_STD_NTSC)
1417
1418
1419 #define V4L2_STD_MTS (V4L2_STD_NTSC_M |\
1420 V4L2_STD_PAL_M |\
1421 V4L2_STD_PAL_N |\
1422 V4L2_STD_PAL_Nc)
1423
1424
1425 #define V4L2_STD_525_60 (V4L2_STD_PAL_M |\
1426 V4L2_STD_PAL_60 |\
1427 V4L2_STD_NTSC |\
1428 V4L2_STD_NTSC_443)
1429
1430 #define V4L2_STD_625_50 (V4L2_STD_PAL |\
1431 V4L2_STD_PAL_N |\
1432 V4L2_STD_PAL_Nc |\
1433 V4L2_STD_SECAM)
1434
1435 #define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\
1436 V4L2_STD_ATSC_16_VSB)
1437
1438 #define V4L2_STD_UNKNOWN 0
1439 #define V4L2_STD_ALL (V4L2_STD_525_60 |\
1440 V4L2_STD_625_50)
1441
1442 struct v4l2_standard {
1443 __u32 index;
1444 v4l2_std_id id;
1445 __u8 name[24];
1446 struct v4l2_fract frameperiod;
1447 __u32 framelines;
1448 __u32 reserved[4];
1449 };
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490 struct v4l2_bt_timings {
1491 __u32 width;
1492 __u32 height;
1493 __u32 interlaced;
1494 __u32 polarities;
1495 __u64 pixelclock;
1496 __u32 hfrontporch;
1497 __u32 hsync;
1498 __u32 hbackporch;
1499 __u32 vfrontporch;
1500 __u32 vsync;
1501 __u32 vbackporch;
1502 __u32 il_vfrontporch;
1503 __u32 il_vsync;
1504 __u32 il_vbackporch;
1505 __u32 standards;
1506 __u32 flags;
1507 struct v4l2_fract picture_aspect;
1508 __u8 cea861_vic;
1509 __u8 hdmi_vic;
1510 __u8 reserved[46];
1511 } __attribute__ ((packed));
1512
1513
1514 #define V4L2_DV_PROGRESSIVE 0
1515 #define V4L2_DV_INTERLACED 1
1516
1517
1518 #define V4L2_DV_VSYNC_POS_POL 0x00000001
1519 #define V4L2_DV_HSYNC_POS_POL 0x00000002
1520
1521
1522 #define V4L2_DV_BT_STD_CEA861 (1 << 0)
1523 #define V4L2_DV_BT_STD_DMT (1 << 1)
1524 #define V4L2_DV_BT_STD_CVT (1 << 2)
1525 #define V4L2_DV_BT_STD_GTF (1 << 3)
1526 #define V4L2_DV_BT_STD_SDI (1 << 4)
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536 #define V4L2_DV_FL_REDUCED_BLANKING (1 << 0)
1537
1538
1539
1540
1541
1542 #define V4L2_DV_FL_CAN_REDUCE_FPS (1 << 1)
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552 #define V4L2_DV_FL_REDUCED_FPS (1 << 2)
1553
1554
1555
1556
1557
1558
1559 #define V4L2_DV_FL_HALF_LINE (1 << 3)
1560
1561
1562
1563
1564
1565
1566
1567 #define V4L2_DV_FL_IS_CE_VIDEO (1 << 4)
1568
1569
1570
1571
1572 #define V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE (1 << 5)
1573
1574
1575
1576
1577
1578 #define V4L2_DV_FL_HAS_PICTURE_ASPECT (1 << 6)
1579
1580
1581
1582
1583 #define V4L2_DV_FL_HAS_CEA861_VIC (1 << 7)
1584
1585
1586
1587
1588
1589 #define V4L2_DV_FL_HAS_HDMI_VIC (1 << 8)
1590
1591
1592
1593
1594
1595
1596 #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
1597
1598
1599 #define V4L2_DV_BT_BLANKING_WIDTH(bt) \
1600 ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
1601 #define V4L2_DV_BT_FRAME_WIDTH(bt) \
1602 ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
1603 #define V4L2_DV_BT_BLANKING_HEIGHT(bt) \
1604 ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \
1605 (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
1606 #define V4L2_DV_BT_FRAME_HEIGHT(bt) \
1607 ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
1608
1609
1610
1611
1612
1613 struct v4l2_dv_timings {
1614 __u32 type;
1615 union {
1616 struct v4l2_bt_timings bt;
1617 __u32 reserved[32];
1618 };
1619 } __attribute__ ((packed));
1620
1621
1622 #define V4L2_DV_BT_656_1120 0
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632 struct v4l2_enum_dv_timings {
1633 __u32 index;
1634 __u32 pad;
1635 __u32 reserved[2];
1636 struct v4l2_dv_timings timings;
1637 };
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650 struct v4l2_bt_timings_cap {
1651 __u32 min_width;
1652 __u32 max_width;
1653 __u32 min_height;
1654 __u32 max_height;
1655 __u64 min_pixelclock;
1656 __u64 max_pixelclock;
1657 __u32 standards;
1658 __u32 capabilities;
1659 __u32 reserved[16];
1660 } __attribute__ ((packed));
1661
1662
1663 #define V4L2_DV_BT_CAP_INTERLACED (1 << 0)
1664
1665 #define V4L2_DV_BT_CAP_PROGRESSIVE (1 << 1)
1666
1667 #define V4L2_DV_BT_CAP_REDUCED_BLANKING (1 << 2)
1668
1669 #define V4L2_DV_BT_CAP_CUSTOM (1 << 3)
1670
1671
1672
1673
1674
1675
1676
1677 struct v4l2_dv_timings_cap {
1678 __u32 type;
1679 __u32 pad;
1680 __u32 reserved[2];
1681 union {
1682 struct v4l2_bt_timings_cap bt;
1683 __u32 raw_data[32];
1684 };
1685 };
1686
1687
1688
1689
1690
1691 struct v4l2_input {
1692 __u32 index;
1693 __u8 name[32];
1694 __u32 type;
1695 __u32 audioset;
1696 __u32 tuner;
1697 v4l2_std_id std;
1698 __u32 status;
1699 __u32 capabilities;
1700 __u32 reserved[3];
1701 };
1702
1703
1704 #define V4L2_INPUT_TYPE_TUNER 1
1705 #define V4L2_INPUT_TYPE_CAMERA 2
1706 #define V4L2_INPUT_TYPE_TOUCH 3
1707
1708
1709 #define V4L2_IN_ST_NO_POWER 0x00000001
1710 #define V4L2_IN_ST_NO_SIGNAL 0x00000002
1711 #define V4L2_IN_ST_NO_COLOR 0x00000004
1712
1713
1714
1715 #define V4L2_IN_ST_HFLIP 0x00000010
1716 #define V4L2_IN_ST_VFLIP 0x00000020
1717
1718
1719 #define V4L2_IN_ST_NO_H_LOCK 0x00000100
1720 #define V4L2_IN_ST_COLOR_KILL 0x00000200
1721 #define V4L2_IN_ST_NO_V_LOCK 0x00000400
1722 #define V4L2_IN_ST_NO_STD_LOCK 0x00000800
1723
1724
1725 #define V4L2_IN_ST_NO_SYNC 0x00010000
1726 #define V4L2_IN_ST_NO_EQU 0x00020000
1727 #define V4L2_IN_ST_NO_CARRIER 0x00040000
1728
1729
1730 #define V4L2_IN_ST_MACROVISION 0x01000000
1731 #define V4L2_IN_ST_NO_ACCESS 0x02000000
1732 #define V4L2_IN_ST_VTR 0x04000000
1733
1734
1735 #define V4L2_IN_CAP_DV_TIMINGS 0x00000002
1736 #define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS
1737 #define V4L2_IN_CAP_STD 0x00000004
1738 #define V4L2_IN_CAP_NATIVE_SIZE 0x00000008
1739
1740
1741
1742
1743 struct v4l2_output {
1744 __u32 index;
1745 __u8 name[32];
1746 __u32 type;
1747 __u32 audioset;
1748 __u32 modulator;
1749 v4l2_std_id std;
1750 __u32 capabilities;
1751 __u32 reserved[3];
1752 };
1753
1754 #define V4L2_OUTPUT_TYPE_MODULATOR 1
1755 #define V4L2_OUTPUT_TYPE_ANALOG 2
1756 #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
1757
1758
1759 #define V4L2_OUT_CAP_DV_TIMINGS 0x00000002
1760 #define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS
1761 #define V4L2_OUT_CAP_STD 0x00000004
1762 #define V4L2_OUT_CAP_NATIVE_SIZE 0x00000008
1763
1764
1765
1766
1767 struct v4l2_control {
1768 __u32 id;
1769 __s32 value;
1770 };
1771
1772 struct v4l2_ext_control {
1773 __u32 id;
1774 __u32 size;
1775 __u32 reserved2[1];
1776 union {
1777 __s32 value;
1778 __s64 value64;
1779 char __user *string;
1780 __u8 __user *p_u8;
1781 __u16 __user *p_u16;
1782 __u32 __user *p_u32;
1783 struct v4l2_area __user *p_area;
1784 struct v4l2_ctrl_h264_sps __user *p_h264_sps;
1785 struct v4l2_ctrl_h264_pps *p_h264_pps;
1786 struct v4l2_ctrl_h264_scaling_matrix __user *p_h264_scaling_matrix;
1787 struct v4l2_ctrl_h264_pred_weights __user *p_h264_pred_weights;
1788 struct v4l2_ctrl_h264_slice_params __user *p_h264_slice_params;
1789 struct v4l2_ctrl_h264_decode_params __user *p_h264_decode_params;
1790 struct v4l2_ctrl_fwht_params __user *p_fwht_params;
1791 struct v4l2_ctrl_vp8_frame __user *p_vp8_frame;
1792 struct v4l2_ctrl_mpeg2_sequence __user *p_mpeg2_sequence;
1793 struct v4l2_ctrl_mpeg2_picture __user *p_mpeg2_picture;
1794 struct v4l2_ctrl_mpeg2_quantisation __user *p_mpeg2_quantisation;
1795 struct v4l2_ctrl_vp9_compressed_hdr __user *p_vp9_compressed_hdr_probs;
1796 struct v4l2_ctrl_vp9_frame __user *p_vp9_frame;
1797 struct v4l2_ctrl_hevc_sps __user *p_hevc_sps;
1798 struct v4l2_ctrl_hevc_pps __user *p_hevc_pps;
1799 struct v4l2_ctrl_hevc_slice_params __user *p_hevc_slice_params;
1800 struct v4l2_ctrl_hevc_scaling_matrix __user *p_hevc_scaling_matrix;
1801 struct v4l2_ctrl_hevc_decode_params __user *p_hevc_decode_params;
1802 void __user *ptr;
1803 };
1804 } __attribute__ ((packed));
1805
1806 struct v4l2_ext_controls {
1807 union {
1808 #ifndef __KERNEL__
1809 __u32 ctrl_class;
1810 #endif
1811 __u32 which;
1812 };
1813 __u32 count;
1814 __u32 error_idx;
1815 __s32 request_fd;
1816 __u32 reserved[1];
1817 struct v4l2_ext_control *controls;
1818 };
1819
1820 #define V4L2_CTRL_ID_MASK (0x0fffffff)
1821 #ifndef __KERNEL__
1822 #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
1823 #endif
1824 #define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL)
1825 #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
1826 #define V4L2_CTRL_MAX_DIMS (4)
1827 #define V4L2_CTRL_WHICH_CUR_VAL 0
1828 #define V4L2_CTRL_WHICH_DEF_VAL 0x0f000000
1829 #define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000
1830
1831 enum v4l2_ctrl_type {
1832 V4L2_CTRL_TYPE_INTEGER = 1,
1833 V4L2_CTRL_TYPE_BOOLEAN = 2,
1834 V4L2_CTRL_TYPE_MENU = 3,
1835 V4L2_CTRL_TYPE_BUTTON = 4,
1836 V4L2_CTRL_TYPE_INTEGER64 = 5,
1837 V4L2_CTRL_TYPE_CTRL_CLASS = 6,
1838 V4L2_CTRL_TYPE_STRING = 7,
1839 V4L2_CTRL_TYPE_BITMASK = 8,
1840 V4L2_CTRL_TYPE_INTEGER_MENU = 9,
1841
1842
1843 V4L2_CTRL_COMPOUND_TYPES = 0x0100,
1844 V4L2_CTRL_TYPE_U8 = 0x0100,
1845 V4L2_CTRL_TYPE_U16 = 0x0101,
1846 V4L2_CTRL_TYPE_U32 = 0x0102,
1847 V4L2_CTRL_TYPE_AREA = 0x0106,
1848
1849 V4L2_CTRL_TYPE_HDR10_CLL_INFO = 0x0110,
1850 V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY = 0x0111,
1851
1852 V4L2_CTRL_TYPE_H264_SPS = 0x0200,
1853 V4L2_CTRL_TYPE_H264_PPS = 0x0201,
1854 V4L2_CTRL_TYPE_H264_SCALING_MATRIX = 0x0202,
1855 V4L2_CTRL_TYPE_H264_SLICE_PARAMS = 0x0203,
1856 V4L2_CTRL_TYPE_H264_DECODE_PARAMS = 0x0204,
1857 V4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 0x0205,
1858
1859 V4L2_CTRL_TYPE_FWHT_PARAMS = 0x0220,
1860
1861 V4L2_CTRL_TYPE_VP8_FRAME = 0x0240,
1862
1863 V4L2_CTRL_TYPE_MPEG2_QUANTISATION = 0x0250,
1864 V4L2_CTRL_TYPE_MPEG2_SEQUENCE = 0x0251,
1865 V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
1866
1867 V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
1868 V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
1869
1870 V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
1871 V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
1872 V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
1873 V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
1874 V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
1875 };
1876
1877
1878 struct v4l2_queryctrl {
1879 __u32 id;
1880 __u32 type;
1881 __u8 name[32];
1882 __s32 minimum;
1883 __s32 maximum;
1884 __s32 step;
1885 __s32 default_value;
1886 __u32 flags;
1887 __u32 reserved[2];
1888 };
1889
1890
1891 struct v4l2_query_ext_ctrl {
1892 __u32 id;
1893 __u32 type;
1894 char name[32];
1895 __s64 minimum;
1896 __s64 maximum;
1897 __u64 step;
1898 __s64 default_value;
1899 __u32 flags;
1900 __u32 elem_size;
1901 __u32 elems;
1902 __u32 nr_of_dims;
1903 __u32 dims[V4L2_CTRL_MAX_DIMS];
1904 __u32 reserved[32];
1905 };
1906
1907
1908 struct v4l2_querymenu {
1909 __u32 id;
1910 __u32 index;
1911 union {
1912 __u8 name[32];
1913 __s64 value;
1914 };
1915 __u32 reserved;
1916 } __attribute__ ((packed));
1917
1918
1919 #define V4L2_CTRL_FLAG_DISABLED 0x0001
1920 #define V4L2_CTRL_FLAG_GRABBED 0x0002
1921 #define V4L2_CTRL_FLAG_READ_ONLY 0x0004
1922 #define V4L2_CTRL_FLAG_UPDATE 0x0008
1923 #define V4L2_CTRL_FLAG_INACTIVE 0x0010
1924 #define V4L2_CTRL_FLAG_SLIDER 0x0020
1925 #define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040
1926 #define V4L2_CTRL_FLAG_VOLATILE 0x0080
1927 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
1928 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
1929 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
1930 #define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
1931
1932
1933 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
1934 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
1935
1936
1937 #define V4L2_CID_MAX_CTRLS 1024
1938
1939 #define V4L2_CID_PRIVATE_BASE 0x08000000
1940
1941
1942
1943
1944
1945 struct v4l2_tuner {
1946 __u32 index;
1947 __u8 name[32];
1948 __u32 type;
1949 __u32 capability;
1950 __u32 rangelow;
1951 __u32 rangehigh;
1952 __u32 rxsubchans;
1953 __u32 audmode;
1954 __s32 signal;
1955 __s32 afc;
1956 __u32 reserved[4];
1957 };
1958
1959 struct v4l2_modulator {
1960 __u32 index;
1961 __u8 name[32];
1962 __u32 capability;
1963 __u32 rangelow;
1964 __u32 rangehigh;
1965 __u32 txsubchans;
1966 __u32 type;
1967 __u32 reserved[3];
1968 };
1969
1970
1971 #define V4L2_TUNER_CAP_LOW 0x0001
1972 #define V4L2_TUNER_CAP_NORM 0x0002
1973 #define V4L2_TUNER_CAP_HWSEEK_BOUNDED 0x0004
1974 #define V4L2_TUNER_CAP_HWSEEK_WRAP 0x0008
1975 #define V4L2_TUNER_CAP_STEREO 0x0010
1976 #define V4L2_TUNER_CAP_LANG2 0x0020
1977 #define V4L2_TUNER_CAP_SAP 0x0020
1978 #define V4L2_TUNER_CAP_LANG1 0x0040
1979 #define V4L2_TUNER_CAP_RDS 0x0080
1980 #define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100
1981 #define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200
1982 #define V4L2_TUNER_CAP_FREQ_BANDS 0x0400
1983 #define V4L2_TUNER_CAP_HWSEEK_PROG_LIM 0x0800
1984 #define V4L2_TUNER_CAP_1HZ 0x1000
1985
1986
1987 #define V4L2_TUNER_SUB_MONO 0x0001
1988 #define V4L2_TUNER_SUB_STEREO 0x0002
1989 #define V4L2_TUNER_SUB_LANG2 0x0004
1990 #define V4L2_TUNER_SUB_SAP 0x0004
1991 #define V4L2_TUNER_SUB_LANG1 0x0008
1992 #define V4L2_TUNER_SUB_RDS 0x0010
1993
1994
1995 #define V4L2_TUNER_MODE_MONO 0x0000
1996 #define V4L2_TUNER_MODE_STEREO 0x0001
1997 #define V4L2_TUNER_MODE_LANG2 0x0002
1998 #define V4L2_TUNER_MODE_SAP 0x0002
1999 #define V4L2_TUNER_MODE_LANG1 0x0003
2000 #define V4L2_TUNER_MODE_LANG1_LANG2 0x0004
2001
2002 struct v4l2_frequency {
2003 __u32 tuner;
2004 __u32 type;
2005 __u32 frequency;
2006 __u32 reserved[8];
2007 };
2008
2009 #define V4L2_BAND_MODULATION_VSB (1 << 1)
2010 #define V4L2_BAND_MODULATION_FM (1 << 2)
2011 #define V4L2_BAND_MODULATION_AM (1 << 3)
2012
2013 struct v4l2_frequency_band {
2014 __u32 tuner;
2015 __u32 type;
2016 __u32 index;
2017 __u32 capability;
2018 __u32 rangelow;
2019 __u32 rangehigh;
2020 __u32 modulation;
2021 __u32 reserved[9];
2022 };
2023
2024 struct v4l2_hw_freq_seek {
2025 __u32 tuner;
2026 __u32 type;
2027 __u32 seek_upward;
2028 __u32 wrap_around;
2029 __u32 spacing;
2030 __u32 rangelow;
2031 __u32 rangehigh;
2032 __u32 reserved[5];
2033 };
2034
2035
2036
2037
2038
2039 struct v4l2_rds_data {
2040 __u8 lsb;
2041 __u8 msb;
2042 __u8 block;
2043 } __attribute__ ((packed));
2044
2045 #define V4L2_RDS_BLOCK_MSK 0x7
2046 #define V4L2_RDS_BLOCK_A 0
2047 #define V4L2_RDS_BLOCK_B 1
2048 #define V4L2_RDS_BLOCK_C 2
2049 #define V4L2_RDS_BLOCK_D 3
2050 #define V4L2_RDS_BLOCK_C_ALT 4
2051 #define V4L2_RDS_BLOCK_INVALID 7
2052
2053 #define V4L2_RDS_BLOCK_CORRECTED 0x40
2054 #define V4L2_RDS_BLOCK_ERROR 0x80
2055
2056
2057
2058
2059 struct v4l2_audio {
2060 __u32 index;
2061 __u8 name[32];
2062 __u32 capability;
2063 __u32 mode;
2064 __u32 reserved[2];
2065 };
2066
2067
2068 #define V4L2_AUDCAP_STEREO 0x00001
2069 #define V4L2_AUDCAP_AVL 0x00002
2070
2071
2072 #define V4L2_AUDMODE_AVL 0x00001
2073
2074 struct v4l2_audioout {
2075 __u32 index;
2076 __u8 name[32];
2077 __u32 capability;
2078 __u32 mode;
2079 __u32 reserved[2];
2080 };
2081
2082
2083
2084
2085 #if 1
2086 #define V4L2_ENC_IDX_FRAME_I (0)
2087 #define V4L2_ENC_IDX_FRAME_P (1)
2088 #define V4L2_ENC_IDX_FRAME_B (2)
2089 #define V4L2_ENC_IDX_FRAME_MASK (0xf)
2090
2091 struct v4l2_enc_idx_entry {
2092 __u64 offset;
2093 __u64 pts;
2094 __u32 length;
2095 __u32 flags;
2096 __u32 reserved[2];
2097 };
2098
2099 #define V4L2_ENC_IDX_ENTRIES (64)
2100 struct v4l2_enc_idx {
2101 __u32 entries;
2102 __u32 entries_cap;
2103 __u32 reserved[4];
2104 struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
2105 };
2106
2107
2108 #define V4L2_ENC_CMD_START (0)
2109 #define V4L2_ENC_CMD_STOP (1)
2110 #define V4L2_ENC_CMD_PAUSE (2)
2111 #define V4L2_ENC_CMD_RESUME (3)
2112
2113
2114 #define V4L2_ENC_CMD_STOP_AT_GOP_END (1 << 0)
2115
2116 struct v4l2_encoder_cmd {
2117 __u32 cmd;
2118 __u32 flags;
2119 union {
2120 struct {
2121 __u32 data[8];
2122 } raw;
2123 };
2124 };
2125
2126
2127 #define V4L2_DEC_CMD_START (0)
2128 #define V4L2_DEC_CMD_STOP (1)
2129 #define V4L2_DEC_CMD_PAUSE (2)
2130 #define V4L2_DEC_CMD_RESUME (3)
2131 #define V4L2_DEC_CMD_FLUSH (4)
2132
2133
2134 #define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0)
2135
2136
2137 #define V4L2_DEC_CMD_PAUSE_TO_BLACK (1 << 0)
2138
2139
2140 #define V4L2_DEC_CMD_STOP_TO_BLACK (1 << 0)
2141 #define V4L2_DEC_CMD_STOP_IMMEDIATELY (1 << 1)
2142
2143
2144
2145
2146 #define V4L2_DEC_START_FMT_NONE (0)
2147
2148 #define V4L2_DEC_START_FMT_GOP (1)
2149
2150
2151
2152 struct v4l2_decoder_cmd {
2153 __u32 cmd;
2154 __u32 flags;
2155 union {
2156 struct {
2157 __u64 pts;
2158 } stop;
2159
2160 struct {
2161
2162
2163
2164
2165
2166 __s32 speed;
2167 __u32 format;
2168 } start;
2169
2170 struct {
2171 __u32 data[16];
2172 } raw;
2173 };
2174 };
2175 #endif
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185 struct v4l2_vbi_format {
2186 __u32 sampling_rate;
2187 __u32 offset;
2188 __u32 samples_per_line;
2189 __u32 sample_format;
2190 __s32 start[2];
2191 __u32 count[2];
2192 __u32 flags;
2193 __u32 reserved[2];
2194 };
2195
2196
2197 #define V4L2_VBI_UNSYNC (1 << 0)
2198 #define V4L2_VBI_INTERLACED (1 << 1)
2199
2200
2201 #define V4L2_VBI_ITU_525_F1_START (1)
2202 #define V4L2_VBI_ITU_525_F2_START (264)
2203 #define V4L2_VBI_ITU_625_F1_START (1)
2204 #define V4L2_VBI_ITU_625_F2_START (314)
2205
2206
2207
2208
2209
2210
2211
2212
2213 struct v4l2_sliced_vbi_format {
2214 __u16 service_set;
2215
2216
2217
2218
2219 __u16 service_lines[2][24];
2220 __u32 io_size;
2221 __u32 reserved[2];
2222 };
2223
2224
2225
2226 #define V4L2_SLICED_TELETEXT_B (0x0001)
2227
2228 #define V4L2_SLICED_VPS (0x0400)
2229
2230 #define V4L2_SLICED_CAPTION_525 (0x1000)
2231
2232 #define V4L2_SLICED_WSS_625 (0x4000)
2233
2234 #define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525)
2235 #define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
2236
2237 struct v4l2_sliced_vbi_cap {
2238 __u16 service_set;
2239
2240
2241
2242
2243 __u16 service_lines[2][24];
2244 __u32 type;
2245 __u32 reserved[3];
2246 };
2247
2248 struct v4l2_sliced_vbi_data {
2249 __u32 id;
2250 __u32 field;
2251 __u32 line;
2252 __u32 reserved;
2253 __u8 data[48];
2254 };
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273 #define V4L2_MPEG_VBI_IVTV_TELETEXT_B (1)
2274 #define V4L2_MPEG_VBI_IVTV_CAPTION_525 (4)
2275 #define V4L2_MPEG_VBI_IVTV_WSS_625 (5)
2276 #define V4L2_MPEG_VBI_IVTV_VPS (7)
2277
2278 struct v4l2_mpeg_vbi_itv0_line {
2279 __u8 id;
2280 __u8 data[42];
2281 } __attribute__ ((packed));
2282
2283 struct v4l2_mpeg_vbi_itv0 {
2284 __le32 linemask[2];
2285 struct v4l2_mpeg_vbi_itv0_line line[35];
2286 } __attribute__ ((packed));
2287
2288 struct v4l2_mpeg_vbi_ITV0 {
2289 struct v4l2_mpeg_vbi_itv0_line line[36];
2290 } __attribute__ ((packed));
2291
2292 #define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0"
2293 #define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0"
2294
2295 struct v4l2_mpeg_vbi_fmt_ivtv {
2296 __u8 magic[4];
2297 union {
2298 struct v4l2_mpeg_vbi_itv0 itv0;
2299 struct v4l2_mpeg_vbi_ITV0 ITV0;
2300 };
2301 } __attribute__ ((packed));
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315 struct v4l2_plane_pix_format {
2316 __u32 sizeimage;
2317 __u32 bytesperline;
2318 __u16 reserved[6];
2319 } __attribute__ ((packed));
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337 struct v4l2_pix_format_mplane {
2338 __u32 width;
2339 __u32 height;
2340 __u32 pixelformat;
2341 __u32 field;
2342 __u32 colorspace;
2343
2344 struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES];
2345 __u8 num_planes;
2346 __u8 flags;
2347 union {
2348 __u8 ycbcr_enc;
2349 __u8 hsv_enc;
2350 };
2351 __u8 quantization;
2352 __u8 xfer_func;
2353 __u8 reserved[7];
2354 } __attribute__ ((packed));
2355
2356
2357
2358
2359
2360
2361
2362 struct v4l2_sdr_format {
2363 __u32 pixelformat;
2364 __u32 buffersize;
2365 __u8 reserved[24];
2366 } __attribute__ ((packed));
2367
2368
2369
2370
2371
2372
2373 struct v4l2_meta_format {
2374 __u32 dataformat;
2375 __u32 buffersize;
2376 } __attribute__ ((packed));
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390 struct v4l2_format {
2391 __u32 type;
2392 union {
2393 struct v4l2_pix_format pix;
2394 struct v4l2_pix_format_mplane pix_mp;
2395 struct v4l2_window win;
2396 struct v4l2_vbi_format vbi;
2397 struct v4l2_sliced_vbi_format sliced;
2398 struct v4l2_sdr_format sdr;
2399 struct v4l2_meta_format meta;
2400 __u8 raw_data[200];
2401 } fmt;
2402 };
2403
2404
2405
2406 struct v4l2_streamparm {
2407 __u32 type;
2408 union {
2409 struct v4l2_captureparm capture;
2410 struct v4l2_outputparm output;
2411 __u8 raw_data[200];
2412 } parm;
2413 };
2414
2415
2416
2417
2418
2419 #define V4L2_EVENT_ALL 0
2420 #define V4L2_EVENT_VSYNC 1
2421 #define V4L2_EVENT_EOS 2
2422 #define V4L2_EVENT_CTRL 3
2423 #define V4L2_EVENT_FRAME_SYNC 4
2424 #define V4L2_EVENT_SOURCE_CHANGE 5
2425 #define V4L2_EVENT_MOTION_DET 6
2426 #define V4L2_EVENT_PRIVATE_START 0x08000000
2427
2428
2429 struct v4l2_event_vsync {
2430
2431 __u8 field;
2432 } __attribute__ ((packed));
2433
2434
2435 #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
2436 #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
2437 #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
2438
2439 struct v4l2_event_ctrl {
2440 __u32 changes;
2441 __u32 type;
2442 union {
2443 __s32 value;
2444 __s64 value64;
2445 };
2446 __u32 flags;
2447 __s32 minimum;
2448 __s32 maximum;
2449 __s32 step;
2450 __s32 default_value;
2451 };
2452
2453 struct v4l2_event_frame_sync {
2454 __u32 frame_sequence;
2455 };
2456
2457 #define V4L2_EVENT_SRC_CH_RESOLUTION (1 << 0)
2458
2459 struct v4l2_event_src_change {
2460 __u32 changes;
2461 };
2462
2463 #define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ (1 << 0)
2464
2465
2466
2467
2468
2469
2470
2471
2472 struct v4l2_event_motion_det {
2473 __u32 flags;
2474 __u32 frame_sequence;
2475 __u32 region_mask;
2476 };
2477
2478 struct v4l2_event {
2479 __u32 type;
2480 union {
2481 struct v4l2_event_vsync vsync;
2482 struct v4l2_event_ctrl ctrl;
2483 struct v4l2_event_frame_sync frame_sync;
2484 struct v4l2_event_src_change src_change;
2485 struct v4l2_event_motion_det motion_det;
2486 __u8 data[64];
2487 } u;
2488 __u32 pending;
2489 __u32 sequence;
2490 #ifdef __KERNEL__
2491 struct __kernel_timespec timestamp;
2492 #else
2493 struct timespec timestamp;
2494 #endif
2495 __u32 id;
2496 __u32 reserved[8];
2497 };
2498
2499 #define V4L2_EVENT_SUB_FL_SEND_INITIAL (1 << 0)
2500 #define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK (1 << 1)
2501
2502 struct v4l2_event_subscription {
2503 __u32 type;
2504 __u32 id;
2505 __u32 flags;
2506 __u32 reserved[5];
2507 };
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518 #define V4L2_CHIP_MATCH_BRIDGE 0
2519 #define V4L2_CHIP_MATCH_SUBDEV 4
2520
2521
2522 #define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE
2523 #define V4L2_CHIP_MATCH_I2C_DRIVER 1
2524 #define V4L2_CHIP_MATCH_I2C_ADDR 2
2525 #define V4L2_CHIP_MATCH_AC97 3
2526
2527 struct v4l2_dbg_match {
2528 __u32 type;
2529 union {
2530 __u32 addr;
2531 char name[32];
2532 };
2533 } __attribute__ ((packed));
2534
2535 struct v4l2_dbg_register {
2536 struct v4l2_dbg_match match;
2537 __u32 size;
2538 __u64 reg;
2539 __u64 val;
2540 } __attribute__ ((packed));
2541
2542 #define V4L2_CHIP_FL_READABLE (1 << 0)
2543 #define V4L2_CHIP_FL_WRITABLE (1 << 1)
2544
2545
2546 struct v4l2_dbg_chip_info {
2547 struct v4l2_dbg_match match;
2548 char name[32];
2549 __u32 flags;
2550 __u32 reserved[32];
2551 } __attribute__ ((packed));
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566 struct v4l2_create_buffers {
2567 __u32 index;
2568 __u32 count;
2569 __u32 memory;
2570 struct v4l2_format format;
2571 __u32 capabilities;
2572 __u32 flags;
2573 __u32 reserved[6];
2574 };
2575
2576
2577
2578
2579
2580 #define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability)
2581 #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc)
2582 #define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format)
2583 #define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format)
2584 #define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers)
2585 #define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer)
2586 #define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer)
2587 #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer)
2588 #define VIDIOC_OVERLAY _IOW('V', 14, int)
2589 #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer)
2590 #define VIDIOC_EXPBUF _IOWR('V', 16, struct v4l2_exportbuffer)
2591 #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer)
2592 #define VIDIOC_STREAMON _IOW('V', 18, int)
2593 #define VIDIOC_STREAMOFF _IOW('V', 19, int)
2594 #define VIDIOC_G_PARM _IOWR('V', 21, struct v4l2_streamparm)
2595 #define VIDIOC_S_PARM _IOWR('V', 22, struct v4l2_streamparm)
2596 #define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id)
2597 #define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id)
2598 #define VIDIOC_ENUMSTD _IOWR('V', 25, struct v4l2_standard)
2599 #define VIDIOC_ENUMINPUT _IOWR('V', 26, struct v4l2_input)
2600 #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
2601 #define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
2602 #define VIDIOC_G_TUNER _IOWR('V', 29, struct v4l2_tuner)
2603 #define VIDIOC_S_TUNER _IOW('V', 30, struct v4l2_tuner)
2604 #define VIDIOC_G_AUDIO _IOR('V', 33, struct v4l2_audio)
2605 #define VIDIOC_S_AUDIO _IOW('V', 34, struct v4l2_audio)
2606 #define VIDIOC_QUERYCTRL _IOWR('V', 36, struct v4l2_queryctrl)
2607 #define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu)
2608 #define VIDIOC_G_INPUT _IOR('V', 38, int)
2609 #define VIDIOC_S_INPUT _IOWR('V', 39, int)
2610 #define VIDIOC_G_EDID _IOWR('V', 40, struct v4l2_edid)
2611 #define VIDIOC_S_EDID _IOWR('V', 41, struct v4l2_edid)
2612 #define VIDIOC_G_OUTPUT _IOR('V', 46, int)
2613 #define VIDIOC_S_OUTPUT _IOWR('V', 47, int)
2614 #define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output)
2615 #define VIDIOC_G_AUDOUT _IOR('V', 49, struct v4l2_audioout)
2616 #define VIDIOC_S_AUDOUT _IOW('V', 50, struct v4l2_audioout)
2617 #define VIDIOC_G_MODULATOR _IOWR('V', 54, struct v4l2_modulator)
2618 #define VIDIOC_S_MODULATOR _IOW('V', 55, struct v4l2_modulator)
2619 #define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct v4l2_frequency)
2620 #define VIDIOC_S_FREQUENCY _IOW('V', 57, struct v4l2_frequency)
2621 #define VIDIOC_CROPCAP _IOWR('V', 58, struct v4l2_cropcap)
2622 #define VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop)
2623 #define VIDIOC_S_CROP _IOW('V', 60, struct v4l2_crop)
2624 #define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct v4l2_jpegcompression)
2625 #define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct v4l2_jpegcompression)
2626 #define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id)
2627 #define VIDIOC_TRY_FMT _IOWR('V', 64, struct v4l2_format)
2628 #define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct v4l2_audio)
2629 #define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct v4l2_audioout)
2630 #define VIDIOC_G_PRIORITY _IOR('V', 67, __u32)
2631 #define VIDIOC_S_PRIORITY _IOW('V', 68, __u32)
2632 #define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)
2633 #define VIDIOC_LOG_STATUS _IO('V', 70)
2634 #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
2635 #define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct v4l2_ext_controls)
2636 #define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct v4l2_ext_controls)
2637 #define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct v4l2_frmsizeenum)
2638 #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
2639 #define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct v4l2_enc_idx)
2640 #define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct v4l2_encoder_cmd)
2641 #define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct v4l2_encoder_cmd)
2642
2643
2644
2645
2646
2647
2648 #define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)
2649 #define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct v4l2_dbg_register)
2650
2651 #define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
2652 #define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
2653 #define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
2654 #define VIDIOC_DQEVENT _IOR('V', 89, struct v4l2_event)
2655 #define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct v4l2_event_subscription)
2656 #define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)
2657 #define VIDIOC_CREATE_BUFS _IOWR('V', 92, struct v4l2_create_buffers)
2658 #define VIDIOC_PREPARE_BUF _IOWR('V', 93, struct v4l2_buffer)
2659 #define VIDIOC_G_SELECTION _IOWR('V', 94, struct v4l2_selection)
2660 #define VIDIOC_S_SELECTION _IOWR('V', 95, struct v4l2_selection)
2661 #define VIDIOC_DECODER_CMD _IOWR('V', 96, struct v4l2_decoder_cmd)
2662 #define VIDIOC_TRY_DECODER_CMD _IOWR('V', 97, struct v4l2_decoder_cmd)
2663 #define VIDIOC_ENUM_DV_TIMINGS _IOWR('V', 98, struct v4l2_enum_dv_timings)
2664 #define VIDIOC_QUERY_DV_TIMINGS _IOR('V', 99, struct v4l2_dv_timings)
2665 #define VIDIOC_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap)
2666 #define VIDIOC_ENUM_FREQ_BANDS _IOWR('V', 101, struct v4l2_frequency_band)
2667
2668
2669
2670
2671
2672 #define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info)
2673
2674 #define VIDIOC_QUERY_EXT_CTRL _IOWR('V', 103, struct v4l2_query_ext_ctrl)
2675
2676
2677
2678
2679 #define BASE_VIDIOC_PRIVATE 192
2680
2681
2682 #ifndef __KERNEL__
2683 #define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
2684 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
2685 #endif
2686
2687 #endif