This source file includes following definitions.
- v4l2_timeval_to_ns
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 #ifndef _UAPI__LINUX_VIDEODEV2_H
58 #define _UAPI__LINUX_VIDEODEV2_H
59
60 #ifndef __KERNEL__
61 #include <sys/time.h>
62 #endif
63 #include <linux/compiler.h>
64 #include <linux/ioctl.h>
65 #include <linux/types.h>
66 #include <linux/v4l2-common.h>
67 #include <linux/v4l2-controls.h>
68
69
70
71
72
73 #define VIDEO_MAX_FRAME 32
74 #define VIDEO_MAX_PLANES 8
75
76
77
78
79
80
81 #define v4l2_fourcc(a, b, c, d)\
82 ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))
83 #define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
84
85
86
87
88 enum v4l2_field {
89 V4L2_FIELD_ANY = 0,
90
91
92
93 V4L2_FIELD_NONE = 1,
94 V4L2_FIELD_TOP = 2,
95 V4L2_FIELD_BOTTOM = 3,
96 V4L2_FIELD_INTERLACED = 4,
97 V4L2_FIELD_SEQ_TB = 5,
98
99 V4L2_FIELD_SEQ_BT = 6,
100 V4L2_FIELD_ALTERNATE = 7,
101
102 V4L2_FIELD_INTERLACED_TB = 8,
103
104
105 V4L2_FIELD_INTERLACED_BT = 9,
106
107
108 };
109 #define V4L2_FIELD_HAS_TOP(field) \
110 ((field) == V4L2_FIELD_TOP ||\
111 (field) == V4L2_FIELD_INTERLACED ||\
112 (field) == V4L2_FIELD_INTERLACED_TB ||\
113 (field) == V4L2_FIELD_INTERLACED_BT ||\
114 (field) == V4L2_FIELD_SEQ_TB ||\
115 (field) == V4L2_FIELD_SEQ_BT)
116 #define V4L2_FIELD_HAS_BOTTOM(field) \
117 ((field) == V4L2_FIELD_BOTTOM ||\
118 (field) == V4L2_FIELD_INTERLACED ||\
119 (field) == V4L2_FIELD_INTERLACED_TB ||\
120 (field) == V4L2_FIELD_INTERLACED_BT ||\
121 (field) == V4L2_FIELD_SEQ_TB ||\
122 (field) == V4L2_FIELD_SEQ_BT)
123 #define V4L2_FIELD_HAS_BOTH(field) \
124 ((field) == V4L2_FIELD_INTERLACED ||\
125 (field) == V4L2_FIELD_INTERLACED_TB ||\
126 (field) == V4L2_FIELD_INTERLACED_BT ||\
127 (field) == V4L2_FIELD_SEQ_TB ||\
128 (field) == V4L2_FIELD_SEQ_BT)
129 #define V4L2_FIELD_HAS_T_OR_B(field) \
130 ((field) == V4L2_FIELD_BOTTOM ||\
131 (field) == V4L2_FIELD_TOP ||\
132 (field) == V4L2_FIELD_ALTERNATE)
133 #define V4L2_FIELD_IS_INTERLACED(field) \
134 ((field) == V4L2_FIELD_INTERLACED ||\
135 (field) == V4L2_FIELD_INTERLACED_TB ||\
136 (field) == V4L2_FIELD_INTERLACED_BT)
137 #define V4L2_FIELD_IS_SEQUENTIAL(field) \
138 ((field) == V4L2_FIELD_SEQ_TB ||\
139 (field) == V4L2_FIELD_SEQ_BT)
140
141 enum v4l2_buf_type {
142 V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
143 V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
144 V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
145 V4L2_BUF_TYPE_VBI_CAPTURE = 4,
146 V4L2_BUF_TYPE_VBI_OUTPUT = 5,
147 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
148 V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
149 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
150 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
151 V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
152 V4L2_BUF_TYPE_SDR_CAPTURE = 11,
153 V4L2_BUF_TYPE_SDR_OUTPUT = 12,
154 V4L2_BUF_TYPE_META_CAPTURE = 13,
155 V4L2_BUF_TYPE_META_OUTPUT = 14,
156
157 V4L2_BUF_TYPE_PRIVATE = 0x80,
158 };
159
160 #define V4L2_TYPE_IS_MULTIPLANAR(type) \
161 ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE \
162 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
163
164 #define V4L2_TYPE_IS_OUTPUT(type) \
165 ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT \
166 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE \
167 || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY \
168 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY \
169 || (type) == V4L2_BUF_TYPE_VBI_OUTPUT \
170 || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT \
171 || (type) == V4L2_BUF_TYPE_SDR_OUTPUT \
172 || (type) == V4L2_BUF_TYPE_META_OUTPUT)
173
174 enum v4l2_tuner_type {
175 V4L2_TUNER_RADIO = 1,
176 V4L2_TUNER_ANALOG_TV = 2,
177 V4L2_TUNER_DIGITAL_TV = 3,
178 V4L2_TUNER_SDR = 4,
179 V4L2_TUNER_RF = 5,
180 };
181
182
183 #define V4L2_TUNER_ADC V4L2_TUNER_SDR
184
185 enum v4l2_memory {
186 V4L2_MEMORY_MMAP = 1,
187 V4L2_MEMORY_USERPTR = 2,
188 V4L2_MEMORY_OVERLAY = 3,
189 V4L2_MEMORY_DMABUF = 4,
190 };
191
192
193 enum v4l2_colorspace {
194
195
196
197
198 V4L2_COLORSPACE_DEFAULT = 0,
199
200
201 V4L2_COLORSPACE_SMPTE170M = 1,
202
203
204 V4L2_COLORSPACE_SMPTE240M = 2,
205
206
207 V4L2_COLORSPACE_REC709 = 3,
208
209
210
211
212
213 V4L2_COLORSPACE_BT878 = 4,
214
215
216
217
218
219 V4L2_COLORSPACE_470_SYSTEM_M = 5,
220
221
222
223
224
225
226 V4L2_COLORSPACE_470_SYSTEM_BG = 6,
227
228
229
230
231
232 V4L2_COLORSPACE_JPEG = 7,
233
234
235 V4L2_COLORSPACE_SRGB = 8,
236
237
238 V4L2_COLORSPACE_OPRGB = 9,
239
240
241 V4L2_COLORSPACE_BT2020 = 10,
242
243
244 V4L2_COLORSPACE_RAW = 11,
245
246
247 V4L2_COLORSPACE_DCI_P3 = 12,
248 };
249
250
251
252
253
254
255 #define V4L2_MAP_COLORSPACE_DEFAULT(is_sdtv, is_hdtv) \
256 ((is_sdtv) ? V4L2_COLORSPACE_SMPTE170M : \
257 ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB))
258
259 enum v4l2_xfer_func {
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278 V4L2_XFER_FUNC_DEFAULT = 0,
279 V4L2_XFER_FUNC_709 = 1,
280 V4L2_XFER_FUNC_SRGB = 2,
281 V4L2_XFER_FUNC_OPRGB = 3,
282 V4L2_XFER_FUNC_SMPTE240M = 4,
283 V4L2_XFER_FUNC_NONE = 5,
284 V4L2_XFER_FUNC_DCI_P3 = 6,
285 V4L2_XFER_FUNC_SMPTE2084 = 7,
286 };
287
288
289
290
291
292 #define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \
293 ((colsp) == V4L2_COLORSPACE_OPRGB ? V4L2_XFER_FUNC_OPRGB : \
294 ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \
295 ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : \
296 ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \
297 ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? \
298 V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709)))))
299
300 enum v4l2_ycbcr_encoding {
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315 V4L2_YCBCR_ENC_DEFAULT = 0,
316
317
318 V4L2_YCBCR_ENC_601 = 1,
319
320
321 V4L2_YCBCR_ENC_709 = 2,
322
323
324 V4L2_YCBCR_ENC_XV601 = 3,
325
326
327 V4L2_YCBCR_ENC_XV709 = 4,
328
329 #ifndef __KERNEL__
330
331
332
333
334
335 V4L2_YCBCR_ENC_SYCC = 5,
336 #endif
337
338
339 V4L2_YCBCR_ENC_BT2020 = 6,
340
341
342 V4L2_YCBCR_ENC_BT2020_CONST_LUM = 7,
343
344
345 V4L2_YCBCR_ENC_SMPTE240M = 8,
346 };
347
348
349
350
351
352 enum v4l2_hsv_encoding {
353
354
355 V4L2_HSV_ENC_180 = 128,
356
357
358 V4L2_HSV_ENC_256 = 129,
359 };
360
361
362
363
364
365 #define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) \
366 (((colsp) == V4L2_COLORSPACE_REC709 || \
367 (colsp) == V4L2_COLORSPACE_DCI_P3) ? V4L2_YCBCR_ENC_709 : \
368 ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : \
369 ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : \
370 V4L2_YCBCR_ENC_601)))
371
372 enum v4l2_quantization {
373
374
375
376
377
378 V4L2_QUANTIZATION_DEFAULT = 0,
379 V4L2_QUANTIZATION_FULL_RANGE = 1,
380 V4L2_QUANTIZATION_LIM_RANGE = 2,
381 };
382
383
384
385
386
387
388 #define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv, colsp, ycbcr_enc) \
389 (((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? \
390 V4L2_QUANTIZATION_LIM_RANGE : \
391 (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \
392 V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))
393
394
395
396
397
398
399
400 #ifndef __KERNEL__
401 #define V4L2_COLORSPACE_ADOBERGB V4L2_COLORSPACE_OPRGB
402 #define V4L2_XFER_FUNC_ADOBERGB V4L2_XFER_FUNC_OPRGB
403 #endif
404
405 enum v4l2_priority {
406 V4L2_PRIORITY_UNSET = 0,
407 V4L2_PRIORITY_BACKGROUND = 1,
408 V4L2_PRIORITY_INTERACTIVE = 2,
409 V4L2_PRIORITY_RECORD = 3,
410 V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE,
411 };
412
413 struct v4l2_rect {
414 __s32 left;
415 __s32 top;
416 __u32 width;
417 __u32 height;
418 };
419
420 struct v4l2_fract {
421 __u32 numerator;
422 __u32 denominator;
423 };
424
425
426
427
428
429
430
431
432
433
434
435
436 struct v4l2_capability {
437 __u8 driver[16];
438 __u8 card[32];
439 __u8 bus_info[32];
440 __u32 version;
441 __u32 capabilities;
442 __u32 device_caps;
443 __u32 reserved[3];
444 };
445
446
447 #define V4L2_CAP_VIDEO_CAPTURE 0x00000001
448 #define V4L2_CAP_VIDEO_OUTPUT 0x00000002
449 #define V4L2_CAP_VIDEO_OVERLAY 0x00000004
450 #define V4L2_CAP_VBI_CAPTURE 0x00000010
451 #define V4L2_CAP_VBI_OUTPUT 0x00000020
452 #define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040
453 #define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080
454 #define V4L2_CAP_RDS_CAPTURE 0x00000100
455 #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200
456 #define V4L2_CAP_HW_FREQ_SEEK 0x00000400
457 #define V4L2_CAP_RDS_OUTPUT 0x00000800
458
459
460 #define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000
461
462 #define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000
463
464 #define V4L2_CAP_VIDEO_M2M_MPLANE 0x00004000
465
466 #define V4L2_CAP_VIDEO_M2M 0x00008000
467
468 #define V4L2_CAP_TUNER 0x00010000
469 #define V4L2_CAP_AUDIO 0x00020000
470 #define V4L2_CAP_RADIO 0x00040000
471 #define V4L2_CAP_MODULATOR 0x00080000
472
473 #define V4L2_CAP_SDR_CAPTURE 0x00100000
474 #define V4L2_CAP_EXT_PIX_FORMAT 0x00200000
475 #define V4L2_CAP_SDR_OUTPUT 0x00400000
476 #define V4L2_CAP_META_CAPTURE 0x00800000
477
478 #define V4L2_CAP_READWRITE 0x01000000
479 #define V4L2_CAP_ASYNCIO 0x02000000
480 #define V4L2_CAP_STREAMING 0x04000000
481 #define V4L2_CAP_META_OUTPUT 0x08000000
482
483 #define V4L2_CAP_TOUCH 0x10000000
484
485 #define V4L2_CAP_DEVICE_CAPS 0x80000000
486
487
488
489
490 struct v4l2_pix_format {
491 __u32 width;
492 __u32 height;
493 __u32 pixelformat;
494 __u32 field;
495 __u32 bytesperline;
496 __u32 sizeimage;
497 __u32 colorspace;
498 __u32 priv;
499 __u32 flags;
500 union {
501
502 __u32 ycbcr_enc;
503
504 __u32 hsv_enc;
505 };
506 __u32 quantization;
507 __u32 xfer_func;
508 };
509
510
511
512
513 #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1')
514 #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4')
515 #define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2')
516 #define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2')
517 #define V4L2_PIX_FMT_RGBA444 v4l2_fourcc('R', 'A', '1', '2')
518 #define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2')
519 #define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2')
520 #define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2')
521
522
523
524
525
526
527 #define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2')
528 #define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2')
529 #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O')
530 #define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5')
531 #define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5')
532 #define V4L2_PIX_FMT_RGBA555 v4l2_fourcc('R', 'A', '1', '5')
533 #define V4L2_PIX_FMT_RGBX555 v4l2_fourcc('R', 'X', '1', '5')
534 #define V4L2_PIX_FMT_ABGR555 v4l2_fourcc('A', 'B', '1', '5')
535 #define V4L2_PIX_FMT_XBGR555 v4l2_fourcc('X', 'B', '1', '5')
536 #define V4L2_PIX_FMT_BGRA555 v4l2_fourcc('B', 'A', '1', '5')
537 #define V4L2_PIX_FMT_BGRX555 v4l2_fourcc('B', 'X', '1', '5')
538 #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P')
539 #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q')
540 #define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5')
541 #define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5')
542 #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R')
543 #define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H')
544 #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3')
545 #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3')
546 #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4')
547 #define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4')
548 #define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4')
549 #define V4L2_PIX_FMT_BGRA32 v4l2_fourcc('R', 'A', '2', '4')
550 #define V4L2_PIX_FMT_BGRX32 v4l2_fourcc('R', 'X', '2', '4')
551 #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4')
552 #define V4L2_PIX_FMT_RGBA32 v4l2_fourcc('A', 'B', '2', '4')
553 #define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4')
554 #define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4')
555 #define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4')
556
557
558 #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y')
559 #define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ')
560 #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ')
561 #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ')
562 #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ')
563 #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ')
564 #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ')
565
566
567 #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
568 #define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P')
569
570
571 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
572
573
574 #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
575
576
577 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
578 #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V')
579 #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U')
580 #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y')
581 #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y')
582 #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P')
583 #define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4')
584 #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O')
585 #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P')
586 #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4')
587 #define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V')
588 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
589 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
590 #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
591 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
592 #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2')
593 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
594
595
596 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
597 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
598 #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6')
599 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
600 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
601 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
602
603
604 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
605 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
606 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
607 #define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1')
608 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
609 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
610
611
612 #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9')
613 #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9')
614 #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P')
615 #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2')
616 #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2')
617 #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P')
618
619
620 #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2')
621 #define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1')
622 #define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6')
623 #define V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1')
624 #define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4')
625 #define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2')
626
627
628 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
629 #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
630 #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
631 #define V4L2_PIX_FMT_SRGGB8 v4l2_fourcc('R', 'G', 'G', 'B')
632 #define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0')
633 #define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0')
634 #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0')
635 #define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0')
636
637 #define V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A')
638 #define V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A')
639 #define V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A')
640 #define V4L2_PIX_FMT_SRGGB10P v4l2_fourcc('p', 'R', 'A', 'A')
641
642 #define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8')
643 #define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8')
644 #define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8')
645 #define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8')
646
647 #define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8')
648 #define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8')
649 #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
650 #define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8')
651 #define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2')
652 #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2')
653 #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2')
654 #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2')
655
656 #define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C')
657 #define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C')
658 #define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C')
659 #define V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C')
660
661 #define V4L2_PIX_FMT_SBGGR14P v4l2_fourcc('p', 'B', 'E', 'E')
662 #define V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E')
663 #define V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E')
664 #define V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E')
665 #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2')
666 #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6')
667 #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6')
668 #define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6')
669
670
671 #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')
672 #define V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4')
673
674
675 #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G')
676 #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G')
677 #define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd')
678 #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G')
679 #define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4')
680 #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1')
681 #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4')
682 #define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3')
683 #define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1')
684 #define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2')
685 #define V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S')
686 #define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4')
687 #define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D')
688 #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G')
689 #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L')
690 #define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0')
691 #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0')
692 #define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C')
693 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
694 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
695
696
697 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
698 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
699 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
700 #define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0')
701 #define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1')
702 #define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2')
703 #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5')
704 #define V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1')
705 #define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5')
706 #define V4L2_PIX_FMT_SPCA508 v4l2_fourcc('S', '5', '0', '8')
707 #define V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1')
708 #define V4L2_PIX_FMT_PAC207 v4l2_fourcc('P', '2', '0', '7')
709 #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0')
710 #define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0')
711 #define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X')
712 #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C')
713 #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G')
714 #define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1')
715 #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8')
716 #define V4L2_PIX_FMT_STV0680 v4l2_fourcc('S', '6', '8', '0')
717 #define V4L2_PIX_FMT_TM6000 v4l2_fourcc('T', 'M', '6', '0')
718 #define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V')
719 #define V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I')
720 #define V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L')
721 #define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1')
722 #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I')
723 #define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ')
724 #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I')
725 #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
726 #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1')
727 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
728 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2')
729 #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
730
731
732 #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
733 #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
734 #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
735 #define V4L2_PIX_FMT_IPU3_SRGGB10 v4l2_fourcc('i', 'p', '3', 'r')
736
737
738 #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8')
739 #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6')
740 #define V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8')
741 #define V4L2_SDR_FMT_CS14LE v4l2_fourcc('C', 'S', '1', '4')
742 #define V4L2_SDR_FMT_RU12LE v4l2_fourcc('R', 'U', '1', '2')
743 #define V4L2_SDR_FMT_PCU16BE v4l2_fourcc('P', 'C', '1', '6')
744 #define V4L2_SDR_FMT_PCU18BE v4l2_fourcc('P', 'C', '1', '8')
745 #define V4L2_SDR_FMT_PCU20BE v4l2_fourcc('P', 'C', '2', '0')
746
747
748 #define V4L2_TCH_FMT_DELTA_TD16 v4l2_fourcc('T', 'D', '1', '6')
749 #define V4L2_TCH_FMT_DELTA_TD08 v4l2_fourcc('T', 'D', '0', '8')
750 #define V4L2_TCH_FMT_TU16 v4l2_fourcc('T', 'U', '1', '6')
751 #define V4L2_TCH_FMT_TU08 v4l2_fourcc('T', 'U', '0', '8')
752
753
754 #define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H')
755 #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T')
756 #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H')
757 #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X')
758
759
760 #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
761
762
763 #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001
764
765
766
767
768 struct v4l2_fmtdesc {
769 __u32 index;
770 __u32 type;
771 __u32 flags;
772 __u8 description[32];
773 __u32 pixelformat;
774 __u32 reserved[4];
775 };
776
777 #define V4L2_FMT_FLAG_COMPRESSED 0x0001
778 #define V4L2_FMT_FLAG_EMULATED 0x0002
779 #define V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM 0x0004
780 #define V4L2_FMT_FLAG_DYN_RESOLUTION 0x0008
781
782
783
784
785
786 enum v4l2_frmsizetypes {
787 V4L2_FRMSIZE_TYPE_DISCRETE = 1,
788 V4L2_FRMSIZE_TYPE_CONTINUOUS = 2,
789 V4L2_FRMSIZE_TYPE_STEPWISE = 3,
790 };
791
792 struct v4l2_frmsize_discrete {
793 __u32 width;
794 __u32 height;
795 };
796
797 struct v4l2_frmsize_stepwise {
798 __u32 min_width;
799 __u32 max_width;
800 __u32 step_width;
801 __u32 min_height;
802 __u32 max_height;
803 __u32 step_height;
804 };
805
806 struct v4l2_frmsizeenum {
807 __u32 index;
808 __u32 pixel_format;
809 __u32 type;
810
811 union {
812 struct v4l2_frmsize_discrete discrete;
813 struct v4l2_frmsize_stepwise stepwise;
814 };
815
816 __u32 reserved[2];
817 };
818
819
820
821
822 enum v4l2_frmivaltypes {
823 V4L2_FRMIVAL_TYPE_DISCRETE = 1,
824 V4L2_FRMIVAL_TYPE_CONTINUOUS = 2,
825 V4L2_FRMIVAL_TYPE_STEPWISE = 3,
826 };
827
828 struct v4l2_frmival_stepwise {
829 struct v4l2_fract min;
830 struct v4l2_fract max;
831 struct v4l2_fract step;
832 };
833
834 struct v4l2_frmivalenum {
835 __u32 index;
836 __u32 pixel_format;
837 __u32 width;
838 __u32 height;
839 __u32 type;
840
841 union {
842 struct v4l2_fract discrete;
843 struct v4l2_frmival_stepwise stepwise;
844 };
845
846 __u32 reserved[2];
847 };
848
849
850
851
852 struct v4l2_timecode {
853 __u32 type;
854 __u32 flags;
855 __u8 frames;
856 __u8 seconds;
857 __u8 minutes;
858 __u8 hours;
859 __u8 userbits[4];
860 };
861
862
863 #define V4L2_TC_TYPE_24FPS 1
864 #define V4L2_TC_TYPE_25FPS 2
865 #define V4L2_TC_TYPE_30FPS 3
866 #define V4L2_TC_TYPE_50FPS 4
867 #define V4L2_TC_TYPE_60FPS 5
868
869
870 #define V4L2_TC_FLAG_DROPFRAME 0x0001
871 #define V4L2_TC_FLAG_COLORFRAME 0x0002
872 #define V4L2_TC_USERBITS_field 0x000C
873 #define V4L2_TC_USERBITS_USERDEFINED 0x0000
874 #define V4L2_TC_USERBITS_8BITCHARS 0x0008
875
876
877 struct v4l2_jpegcompression {
878 int quality;
879
880 int APPn;
881
882 int APP_len;
883 char APP_data[60];
884
885 int COM_len;
886 char COM_data[60];
887
888 __u32 jpeg_markers;
889
890
891
892
893
894
895
896
897
898 #define V4L2_JPEG_MARKER_DHT (1<<3)
899 #define V4L2_JPEG_MARKER_DQT (1<<4)
900 #define V4L2_JPEG_MARKER_DRI (1<<5)
901 #define V4L2_JPEG_MARKER_COM (1<<6)
902 #define V4L2_JPEG_MARKER_APP (1<<7)
903
904 };
905
906
907
908
909 struct v4l2_requestbuffers {
910 __u32 count;
911 __u32 type;
912 __u32 memory;
913 __u32 capabilities;
914 __u32 reserved[1];
915 };
916
917
918 #define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0)
919 #define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1)
920 #define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2)
921 #define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3)
922 #define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4)
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944 struct v4l2_plane {
945 __u32 bytesused;
946 __u32 length;
947 union {
948 __u32 mem_offset;
949 unsigned long userptr;
950 __s32 fd;
951 } m;
952 __u32 data_offset;
953 __u32 reserved[11];
954 };
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987 struct v4l2_buffer {
988 __u32 index;
989 __u32 type;
990 __u32 bytesused;
991 __u32 flags;
992 __u32 field;
993 struct timeval timestamp;
994 struct v4l2_timecode timecode;
995 __u32 sequence;
996
997
998 __u32 memory;
999 union {
1000 __u32 offset;
1001 unsigned long userptr;
1002 struct v4l2_plane *planes;
1003 __s32 fd;
1004 } m;
1005 __u32 length;
1006 __u32 reserved2;
1007 union {
1008 __s32 request_fd;
1009 __u32 reserved;
1010 };
1011 };
1012
1013
1014
1015
1016
1017
1018
1019
1020 static inline __u64 v4l2_timeval_to_ns(const struct timeval *tv)
1021 {
1022 return (__u64)tv->tv_sec * 1000000000ULL + tv->tv_usec * 1000;
1023 }
1024
1025
1026
1027 #define V4L2_BUF_FLAG_MAPPED 0x00000001
1028
1029 #define V4L2_BUF_FLAG_QUEUED 0x00000002
1030
1031 #define V4L2_BUF_FLAG_DONE 0x00000004
1032
1033 #define V4L2_BUF_FLAG_KEYFRAME 0x00000008
1034
1035 #define V4L2_BUF_FLAG_PFRAME 0x00000010
1036
1037 #define V4L2_BUF_FLAG_BFRAME 0x00000020
1038
1039 #define V4L2_BUF_FLAG_ERROR 0x00000040
1040
1041 #define V4L2_BUF_FLAG_IN_REQUEST 0x00000080
1042
1043 #define V4L2_BUF_FLAG_TIMECODE 0x00000100
1044
1045 #define V4L2_BUF_FLAG_PREPARED 0x00000400
1046
1047 #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x00000800
1048 #define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x00001000
1049
1050 #define V4L2_BUF_FLAG_TIMESTAMP_MASK 0x0000e000
1051 #define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x00000000
1052 #define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x00002000
1053 #define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x00004000
1054
1055 #define V4L2_BUF_FLAG_TSTAMP_SRC_MASK 0x00070000
1056 #define V4L2_BUF_FLAG_TSTAMP_SRC_EOF 0x00000000
1057 #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000
1058
1059 #define V4L2_BUF_FLAG_LAST 0x00100000
1060
1061 #define V4L2_BUF_FLAG_REQUEST_FD 0x00800000
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081 struct v4l2_exportbuffer {
1082 __u32 type;
1083 __u32 index;
1084 __u32 plane;
1085 __u32 flags;
1086 __s32 fd;
1087 __u32 reserved[11];
1088 };
1089
1090
1091
1092
1093 struct v4l2_framebuffer {
1094 __u32 capability;
1095 __u32 flags;
1096
1097
1098 void *base;
1099 struct {
1100 __u32 width;
1101 __u32 height;
1102 __u32 pixelformat;
1103 __u32 field;
1104 __u32 bytesperline;
1105 __u32 sizeimage;
1106 __u32 colorspace;
1107 __u32 priv;
1108 } fmt;
1109 };
1110
1111 #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
1112 #define V4L2_FBUF_CAP_CHROMAKEY 0x0002
1113 #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
1114 #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
1115 #define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
1116 #define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
1117 #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
1118 #define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080
1119
1120 #define V4L2_FBUF_FLAG_PRIMARY 0x0001
1121 #define V4L2_FBUF_FLAG_OVERLAY 0x0002
1122 #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
1123 #define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008
1124 #define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010
1125 #define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020
1126 #define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040
1127
1128 struct v4l2_clip {
1129 struct v4l2_rect c;
1130 struct v4l2_clip __user *next;
1131 };
1132
1133 struct v4l2_window {
1134 struct v4l2_rect w;
1135 __u32 field;
1136 __u32 chromakey;
1137 struct v4l2_clip __user *clips;
1138 __u32 clipcount;
1139 void __user *bitmap;
1140 __u8 global_alpha;
1141 };
1142
1143
1144
1145
1146 struct v4l2_captureparm {
1147 __u32 capability;
1148 __u32 capturemode;
1149 struct v4l2_fract timeperframe;
1150 __u32 extendedmode;
1151 __u32 readbuffers;
1152 __u32 reserved[4];
1153 };
1154
1155
1156 #define V4L2_MODE_HIGHQUALITY 0x0001
1157 #define V4L2_CAP_TIMEPERFRAME 0x1000
1158
1159 struct v4l2_outputparm {
1160 __u32 capability;
1161 __u32 outputmode;
1162 struct v4l2_fract timeperframe;
1163 __u32 extendedmode;
1164 __u32 writebuffers;
1165 __u32 reserved[4];
1166 };
1167
1168
1169
1170
1171 struct v4l2_cropcap {
1172 __u32 type;
1173 struct v4l2_rect bounds;
1174 struct v4l2_rect defrect;
1175 struct v4l2_fract pixelaspect;
1176 };
1177
1178 struct v4l2_crop {
1179 __u32 type;
1180 struct v4l2_rect c;
1181 };
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196 struct v4l2_selection {
1197 __u32 type;
1198 __u32 target;
1199 __u32 flags;
1200 struct v4l2_rect r;
1201 __u32 reserved[9];
1202 };
1203
1204
1205
1206
1207
1208
1209 typedef __u64 v4l2_std_id;
1210
1211
1212 #define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
1213 #define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
1214 #define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
1215 #define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
1216 #define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
1217 #define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
1218 #define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
1219 #define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
1220
1221 #define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
1222 #define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
1223 #define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
1224 #define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
1225
1226 #define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
1227 #define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
1228 #define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000)
1229 #define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000)
1230
1231 #define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
1232 #define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
1233 #define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
1234 #define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
1235 #define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
1236 #define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
1237 #define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
1238 #define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000)
1239
1240
1241 #define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
1242 #define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262 #define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\
1263 V4L2_STD_NTSC_M_JP |\
1264 V4L2_STD_NTSC_M_KR)
1265
1266 #define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\
1267 V4L2_STD_SECAM_K |\
1268 V4L2_STD_SECAM_K1)
1269
1270 #define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\
1271 V4L2_STD_SECAM_G |\
1272 V4L2_STD_SECAM_H |\
1273 V4L2_STD_SECAM_DK |\
1274 V4L2_STD_SECAM_L |\
1275 V4L2_STD_SECAM_LC)
1276
1277 #define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\
1278 V4L2_STD_PAL_B1 |\
1279 V4L2_STD_PAL_G)
1280 #define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
1281 V4L2_STD_PAL_D1 |\
1282 V4L2_STD_PAL_K)
1283
1284
1285
1286
1287
1288 #define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
1289 V4L2_STD_PAL_DK |\
1290 V4L2_STD_PAL_H |\
1291 V4L2_STD_PAL_I)
1292
1293 #define V4L2_STD_B (V4L2_STD_PAL_B |\
1294 V4L2_STD_PAL_B1 |\
1295 V4L2_STD_SECAM_B)
1296 #define V4L2_STD_G (V4L2_STD_PAL_G |\
1297 V4L2_STD_SECAM_G)
1298 #define V4L2_STD_H (V4L2_STD_PAL_H |\
1299 V4L2_STD_SECAM_H)
1300 #define V4L2_STD_L (V4L2_STD_SECAM_L |\
1301 V4L2_STD_SECAM_LC)
1302 #define V4L2_STD_GH (V4L2_STD_G |\
1303 V4L2_STD_H)
1304 #define V4L2_STD_DK (V4L2_STD_PAL_DK |\
1305 V4L2_STD_SECAM_DK)
1306 #define V4L2_STD_BG (V4L2_STD_B |\
1307 V4L2_STD_G)
1308 #define V4L2_STD_MN (V4L2_STD_PAL_M |\
1309 V4L2_STD_PAL_N |\
1310 V4L2_STD_PAL_Nc |\
1311 V4L2_STD_NTSC)
1312
1313
1314 #define V4L2_STD_MTS (V4L2_STD_NTSC_M |\
1315 V4L2_STD_PAL_M |\
1316 V4L2_STD_PAL_N |\
1317 V4L2_STD_PAL_Nc)
1318
1319
1320 #define V4L2_STD_525_60 (V4L2_STD_PAL_M |\
1321 V4L2_STD_PAL_60 |\
1322 V4L2_STD_NTSC |\
1323 V4L2_STD_NTSC_443)
1324
1325 #define V4L2_STD_625_50 (V4L2_STD_PAL |\
1326 V4L2_STD_PAL_N |\
1327 V4L2_STD_PAL_Nc |\
1328 V4L2_STD_SECAM)
1329
1330 #define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\
1331 V4L2_STD_ATSC_16_VSB)
1332
1333 #define V4L2_STD_UNKNOWN 0
1334 #define V4L2_STD_ALL (V4L2_STD_525_60 |\
1335 V4L2_STD_625_50)
1336
1337 struct v4l2_standard {
1338 __u32 index;
1339 v4l2_std_id id;
1340 __u8 name[24];
1341 struct v4l2_fract frameperiod;
1342 __u32 framelines;
1343 __u32 reserved[4];
1344 };
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385 struct v4l2_bt_timings {
1386 __u32 width;
1387 __u32 height;
1388 __u32 interlaced;
1389 __u32 polarities;
1390 __u64 pixelclock;
1391 __u32 hfrontporch;
1392 __u32 hsync;
1393 __u32 hbackporch;
1394 __u32 vfrontporch;
1395 __u32 vsync;
1396 __u32 vbackporch;
1397 __u32 il_vfrontporch;
1398 __u32 il_vsync;
1399 __u32 il_vbackporch;
1400 __u32 standards;
1401 __u32 flags;
1402 struct v4l2_fract picture_aspect;
1403 __u8 cea861_vic;
1404 __u8 hdmi_vic;
1405 __u8 reserved[46];
1406 } __attribute__ ((packed));
1407
1408
1409 #define V4L2_DV_PROGRESSIVE 0
1410 #define V4L2_DV_INTERLACED 1
1411
1412
1413 #define V4L2_DV_VSYNC_POS_POL 0x00000001
1414 #define V4L2_DV_HSYNC_POS_POL 0x00000002
1415
1416
1417 #define V4L2_DV_BT_STD_CEA861 (1 << 0)
1418 #define V4L2_DV_BT_STD_DMT (1 << 1)
1419 #define V4L2_DV_BT_STD_CVT (1 << 2)
1420 #define V4L2_DV_BT_STD_GTF (1 << 3)
1421 #define V4L2_DV_BT_STD_SDI (1 << 4)
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431 #define V4L2_DV_FL_REDUCED_BLANKING (1 << 0)
1432
1433
1434
1435
1436
1437 #define V4L2_DV_FL_CAN_REDUCE_FPS (1 << 1)
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447 #define V4L2_DV_FL_REDUCED_FPS (1 << 2)
1448
1449
1450
1451
1452
1453
1454 #define V4L2_DV_FL_HALF_LINE (1 << 3)
1455
1456
1457
1458
1459
1460
1461
1462 #define V4L2_DV_FL_IS_CE_VIDEO (1 << 4)
1463
1464
1465
1466
1467 #define V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE (1 << 5)
1468
1469
1470
1471
1472
1473 #define V4L2_DV_FL_HAS_PICTURE_ASPECT (1 << 6)
1474
1475
1476
1477
1478 #define V4L2_DV_FL_HAS_CEA861_VIC (1 << 7)
1479
1480
1481
1482
1483
1484 #define V4L2_DV_FL_HAS_HDMI_VIC (1 << 8)
1485
1486
1487
1488
1489
1490
1491 #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
1492
1493
1494 #define V4L2_DV_BT_BLANKING_WIDTH(bt) \
1495 ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
1496 #define V4L2_DV_BT_FRAME_WIDTH(bt) \
1497 ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
1498 #define V4L2_DV_BT_BLANKING_HEIGHT(bt) \
1499 ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \
1500 (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
1501 #define V4L2_DV_BT_FRAME_HEIGHT(bt) \
1502 ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
1503
1504
1505
1506
1507
1508 struct v4l2_dv_timings {
1509 __u32 type;
1510 union {
1511 struct v4l2_bt_timings bt;
1512 __u32 reserved[32];
1513 };
1514 } __attribute__ ((packed));
1515
1516
1517 #define V4L2_DV_BT_656_1120 0
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527 struct v4l2_enum_dv_timings {
1528 __u32 index;
1529 __u32 pad;
1530 __u32 reserved[2];
1531 struct v4l2_dv_timings timings;
1532 };
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545 struct v4l2_bt_timings_cap {
1546 __u32 min_width;
1547 __u32 max_width;
1548 __u32 min_height;
1549 __u32 max_height;
1550 __u64 min_pixelclock;
1551 __u64 max_pixelclock;
1552 __u32 standards;
1553 __u32 capabilities;
1554 __u32 reserved[16];
1555 } __attribute__ ((packed));
1556
1557
1558 #define V4L2_DV_BT_CAP_INTERLACED (1 << 0)
1559
1560 #define V4L2_DV_BT_CAP_PROGRESSIVE (1 << 1)
1561
1562 #define V4L2_DV_BT_CAP_REDUCED_BLANKING (1 << 2)
1563
1564 #define V4L2_DV_BT_CAP_CUSTOM (1 << 3)
1565
1566
1567
1568
1569
1570
1571
1572 struct v4l2_dv_timings_cap {
1573 __u32 type;
1574 __u32 pad;
1575 __u32 reserved[2];
1576 union {
1577 struct v4l2_bt_timings_cap bt;
1578 __u32 raw_data[32];
1579 };
1580 };
1581
1582
1583
1584
1585
1586 struct v4l2_input {
1587 __u32 index;
1588 __u8 name[32];
1589 __u32 type;
1590 __u32 audioset;
1591 __u32 tuner;
1592 v4l2_std_id std;
1593 __u32 status;
1594 __u32 capabilities;
1595 __u32 reserved[3];
1596 };
1597
1598
1599 #define V4L2_INPUT_TYPE_TUNER 1
1600 #define V4L2_INPUT_TYPE_CAMERA 2
1601 #define V4L2_INPUT_TYPE_TOUCH 3
1602
1603
1604 #define V4L2_IN_ST_NO_POWER 0x00000001
1605 #define V4L2_IN_ST_NO_SIGNAL 0x00000002
1606 #define V4L2_IN_ST_NO_COLOR 0x00000004
1607
1608
1609
1610 #define V4L2_IN_ST_HFLIP 0x00000010
1611 #define V4L2_IN_ST_VFLIP 0x00000020
1612
1613
1614 #define V4L2_IN_ST_NO_H_LOCK 0x00000100
1615 #define V4L2_IN_ST_COLOR_KILL 0x00000200
1616 #define V4L2_IN_ST_NO_V_LOCK 0x00000400
1617 #define V4L2_IN_ST_NO_STD_LOCK 0x00000800
1618
1619
1620 #define V4L2_IN_ST_NO_SYNC 0x00010000
1621 #define V4L2_IN_ST_NO_EQU 0x00020000
1622 #define V4L2_IN_ST_NO_CARRIER 0x00040000
1623
1624
1625 #define V4L2_IN_ST_MACROVISION 0x01000000
1626 #define V4L2_IN_ST_NO_ACCESS 0x02000000
1627 #define V4L2_IN_ST_VTR 0x04000000
1628
1629
1630 #define V4L2_IN_CAP_DV_TIMINGS 0x00000002
1631 #define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS
1632 #define V4L2_IN_CAP_STD 0x00000004
1633 #define V4L2_IN_CAP_NATIVE_SIZE 0x00000008
1634
1635
1636
1637
1638 struct v4l2_output {
1639 __u32 index;
1640 __u8 name[32];
1641 __u32 type;
1642 __u32 audioset;
1643 __u32 modulator;
1644 v4l2_std_id std;
1645 __u32 capabilities;
1646 __u32 reserved[3];
1647 };
1648
1649 #define V4L2_OUTPUT_TYPE_MODULATOR 1
1650 #define V4L2_OUTPUT_TYPE_ANALOG 2
1651 #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
1652
1653
1654 #define V4L2_OUT_CAP_DV_TIMINGS 0x00000002
1655 #define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS
1656 #define V4L2_OUT_CAP_STD 0x00000004
1657 #define V4L2_OUT_CAP_NATIVE_SIZE 0x00000008
1658
1659
1660
1661
1662 struct v4l2_control {
1663 __u32 id;
1664 __s32 value;
1665 };
1666
1667 struct v4l2_ext_control {
1668 __u32 id;
1669 __u32 size;
1670 __u32 reserved2[1];
1671 union {
1672 __s32 value;
1673 __s64 value64;
1674 char __user *string;
1675 __u8 __user *p_u8;
1676 __u16 __user *p_u16;
1677 __u32 __user *p_u32;
1678 void __user *ptr;
1679 };
1680 } __attribute__ ((packed));
1681
1682 struct v4l2_ext_controls {
1683 union {
1684 #ifndef __KERNEL__
1685 __u32 ctrl_class;
1686 #endif
1687 __u32 which;
1688 };
1689 __u32 count;
1690 __u32 error_idx;
1691 __s32 request_fd;
1692 __u32 reserved[1];
1693 struct v4l2_ext_control *controls;
1694 };
1695
1696 #define V4L2_CTRL_ID_MASK (0x0fffffff)
1697 #ifndef __KERNEL__
1698 #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
1699 #endif
1700 #define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL)
1701 #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
1702 #define V4L2_CTRL_MAX_DIMS (4)
1703 #define V4L2_CTRL_WHICH_CUR_VAL 0
1704 #define V4L2_CTRL_WHICH_DEF_VAL 0x0f000000
1705 #define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000
1706
1707 enum v4l2_ctrl_type {
1708 V4L2_CTRL_TYPE_INTEGER = 1,
1709 V4L2_CTRL_TYPE_BOOLEAN = 2,
1710 V4L2_CTRL_TYPE_MENU = 3,
1711 V4L2_CTRL_TYPE_BUTTON = 4,
1712 V4L2_CTRL_TYPE_INTEGER64 = 5,
1713 V4L2_CTRL_TYPE_CTRL_CLASS = 6,
1714 V4L2_CTRL_TYPE_STRING = 7,
1715 V4L2_CTRL_TYPE_BITMASK = 8,
1716 V4L2_CTRL_TYPE_INTEGER_MENU = 9,
1717
1718
1719 V4L2_CTRL_COMPOUND_TYPES = 0x0100,
1720 V4L2_CTRL_TYPE_U8 = 0x0100,
1721 V4L2_CTRL_TYPE_U16 = 0x0101,
1722 V4L2_CTRL_TYPE_U32 = 0x0102,
1723 };
1724
1725
1726 struct v4l2_queryctrl {
1727 __u32 id;
1728 __u32 type;
1729 __u8 name[32];
1730 __s32 minimum;
1731 __s32 maximum;
1732 __s32 step;
1733 __s32 default_value;
1734 __u32 flags;
1735 __u32 reserved[2];
1736 };
1737
1738
1739 struct v4l2_query_ext_ctrl {
1740 __u32 id;
1741 __u32 type;
1742 char name[32];
1743 __s64 minimum;
1744 __s64 maximum;
1745 __u64 step;
1746 __s64 default_value;
1747 __u32 flags;
1748 __u32 elem_size;
1749 __u32 elems;
1750 __u32 nr_of_dims;
1751 __u32 dims[V4L2_CTRL_MAX_DIMS];
1752 __u32 reserved[32];
1753 };
1754
1755
1756 struct v4l2_querymenu {
1757 __u32 id;
1758 __u32 index;
1759 union {
1760 __u8 name[32];
1761 __s64 value;
1762 };
1763 __u32 reserved;
1764 } __attribute__ ((packed));
1765
1766
1767 #define V4L2_CTRL_FLAG_DISABLED 0x0001
1768 #define V4L2_CTRL_FLAG_GRABBED 0x0002
1769 #define V4L2_CTRL_FLAG_READ_ONLY 0x0004
1770 #define V4L2_CTRL_FLAG_UPDATE 0x0008
1771 #define V4L2_CTRL_FLAG_INACTIVE 0x0010
1772 #define V4L2_CTRL_FLAG_SLIDER 0x0020
1773 #define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040
1774 #define V4L2_CTRL_FLAG_VOLATILE 0x0080
1775 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
1776 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
1777 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
1778
1779
1780 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
1781 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
1782
1783
1784 #define V4L2_CID_MAX_CTRLS 1024
1785
1786 #define V4L2_CID_PRIVATE_BASE 0x08000000
1787
1788
1789
1790
1791
1792 struct v4l2_tuner {
1793 __u32 index;
1794 __u8 name[32];
1795 __u32 type;
1796 __u32 capability;
1797 __u32 rangelow;
1798 __u32 rangehigh;
1799 __u32 rxsubchans;
1800 __u32 audmode;
1801 __s32 signal;
1802 __s32 afc;
1803 __u32 reserved[4];
1804 };
1805
1806 struct v4l2_modulator {
1807 __u32 index;
1808 __u8 name[32];
1809 __u32 capability;
1810 __u32 rangelow;
1811 __u32 rangehigh;
1812 __u32 txsubchans;
1813 __u32 type;
1814 __u32 reserved[3];
1815 };
1816
1817
1818 #define V4L2_TUNER_CAP_LOW 0x0001
1819 #define V4L2_TUNER_CAP_NORM 0x0002
1820 #define V4L2_TUNER_CAP_HWSEEK_BOUNDED 0x0004
1821 #define V4L2_TUNER_CAP_HWSEEK_WRAP 0x0008
1822 #define V4L2_TUNER_CAP_STEREO 0x0010
1823 #define V4L2_TUNER_CAP_LANG2 0x0020
1824 #define V4L2_TUNER_CAP_SAP 0x0020
1825 #define V4L2_TUNER_CAP_LANG1 0x0040
1826 #define V4L2_TUNER_CAP_RDS 0x0080
1827 #define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100
1828 #define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200
1829 #define V4L2_TUNER_CAP_FREQ_BANDS 0x0400
1830 #define V4L2_TUNER_CAP_HWSEEK_PROG_LIM 0x0800
1831 #define V4L2_TUNER_CAP_1HZ 0x1000
1832
1833
1834 #define V4L2_TUNER_SUB_MONO 0x0001
1835 #define V4L2_TUNER_SUB_STEREO 0x0002
1836 #define V4L2_TUNER_SUB_LANG2 0x0004
1837 #define V4L2_TUNER_SUB_SAP 0x0004
1838 #define V4L2_TUNER_SUB_LANG1 0x0008
1839 #define V4L2_TUNER_SUB_RDS 0x0010
1840
1841
1842 #define V4L2_TUNER_MODE_MONO 0x0000
1843 #define V4L2_TUNER_MODE_STEREO 0x0001
1844 #define V4L2_TUNER_MODE_LANG2 0x0002
1845 #define V4L2_TUNER_MODE_SAP 0x0002
1846 #define V4L2_TUNER_MODE_LANG1 0x0003
1847 #define V4L2_TUNER_MODE_LANG1_LANG2 0x0004
1848
1849 struct v4l2_frequency {
1850 __u32 tuner;
1851 __u32 type;
1852 __u32 frequency;
1853 __u32 reserved[8];
1854 };
1855
1856 #define V4L2_BAND_MODULATION_VSB (1 << 1)
1857 #define V4L2_BAND_MODULATION_FM (1 << 2)
1858 #define V4L2_BAND_MODULATION_AM (1 << 3)
1859
1860 struct v4l2_frequency_band {
1861 __u32 tuner;
1862 __u32 type;
1863 __u32 index;
1864 __u32 capability;
1865 __u32 rangelow;
1866 __u32 rangehigh;
1867 __u32 modulation;
1868 __u32 reserved[9];
1869 };
1870
1871 struct v4l2_hw_freq_seek {
1872 __u32 tuner;
1873 __u32 type;
1874 __u32 seek_upward;
1875 __u32 wrap_around;
1876 __u32 spacing;
1877 __u32 rangelow;
1878 __u32 rangehigh;
1879 __u32 reserved[5];
1880 };
1881
1882
1883
1884
1885
1886 struct v4l2_rds_data {
1887 __u8 lsb;
1888 __u8 msb;
1889 __u8 block;
1890 } __attribute__ ((packed));
1891
1892 #define V4L2_RDS_BLOCK_MSK 0x7
1893 #define V4L2_RDS_BLOCK_A 0
1894 #define V4L2_RDS_BLOCK_B 1
1895 #define V4L2_RDS_BLOCK_C 2
1896 #define V4L2_RDS_BLOCK_D 3
1897 #define V4L2_RDS_BLOCK_C_ALT 4
1898 #define V4L2_RDS_BLOCK_INVALID 7
1899
1900 #define V4L2_RDS_BLOCK_CORRECTED 0x40
1901 #define V4L2_RDS_BLOCK_ERROR 0x80
1902
1903
1904
1905
1906 struct v4l2_audio {
1907 __u32 index;
1908 __u8 name[32];
1909 __u32 capability;
1910 __u32 mode;
1911 __u32 reserved[2];
1912 };
1913
1914
1915 #define V4L2_AUDCAP_STEREO 0x00001
1916 #define V4L2_AUDCAP_AVL 0x00002
1917
1918
1919 #define V4L2_AUDMODE_AVL 0x00001
1920
1921 struct v4l2_audioout {
1922 __u32 index;
1923 __u8 name[32];
1924 __u32 capability;
1925 __u32 mode;
1926 __u32 reserved[2];
1927 };
1928
1929
1930
1931
1932 #if 1
1933 #define V4L2_ENC_IDX_FRAME_I (0)
1934 #define V4L2_ENC_IDX_FRAME_P (1)
1935 #define V4L2_ENC_IDX_FRAME_B (2)
1936 #define V4L2_ENC_IDX_FRAME_MASK (0xf)
1937
1938 struct v4l2_enc_idx_entry {
1939 __u64 offset;
1940 __u64 pts;
1941 __u32 length;
1942 __u32 flags;
1943 __u32 reserved[2];
1944 };
1945
1946 #define V4L2_ENC_IDX_ENTRIES (64)
1947 struct v4l2_enc_idx {
1948 __u32 entries;
1949 __u32 entries_cap;
1950 __u32 reserved[4];
1951 struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
1952 };
1953
1954
1955 #define V4L2_ENC_CMD_START (0)
1956 #define V4L2_ENC_CMD_STOP (1)
1957 #define V4L2_ENC_CMD_PAUSE (2)
1958 #define V4L2_ENC_CMD_RESUME (3)
1959
1960
1961 #define V4L2_ENC_CMD_STOP_AT_GOP_END (1 << 0)
1962
1963 struct v4l2_encoder_cmd {
1964 __u32 cmd;
1965 __u32 flags;
1966 union {
1967 struct {
1968 __u32 data[8];
1969 } raw;
1970 };
1971 };
1972
1973
1974 #define V4L2_DEC_CMD_START (0)
1975 #define V4L2_DEC_CMD_STOP (1)
1976 #define V4L2_DEC_CMD_PAUSE (2)
1977 #define V4L2_DEC_CMD_RESUME (3)
1978
1979
1980 #define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0)
1981
1982
1983 #define V4L2_DEC_CMD_PAUSE_TO_BLACK (1 << 0)
1984
1985
1986 #define V4L2_DEC_CMD_STOP_TO_BLACK (1 << 0)
1987 #define V4L2_DEC_CMD_STOP_IMMEDIATELY (1 << 1)
1988
1989
1990
1991
1992 #define V4L2_DEC_START_FMT_NONE (0)
1993
1994 #define V4L2_DEC_START_FMT_GOP (1)
1995
1996
1997
1998 struct v4l2_decoder_cmd {
1999 __u32 cmd;
2000 __u32 flags;
2001 union {
2002 struct {
2003 __u64 pts;
2004 } stop;
2005
2006 struct {
2007
2008
2009
2010
2011
2012 __s32 speed;
2013 __u32 format;
2014 } start;
2015
2016 struct {
2017 __u32 data[16];
2018 } raw;
2019 };
2020 };
2021 #endif
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031 struct v4l2_vbi_format {
2032 __u32 sampling_rate;
2033 __u32 offset;
2034 __u32 samples_per_line;
2035 __u32 sample_format;
2036 __s32 start[2];
2037 __u32 count[2];
2038 __u32 flags;
2039 __u32 reserved[2];
2040 };
2041
2042
2043 #define V4L2_VBI_UNSYNC (1 << 0)
2044 #define V4L2_VBI_INTERLACED (1 << 1)
2045
2046
2047 #define V4L2_VBI_ITU_525_F1_START (1)
2048 #define V4L2_VBI_ITU_525_F2_START (264)
2049 #define V4L2_VBI_ITU_625_F1_START (1)
2050 #define V4L2_VBI_ITU_625_F2_START (314)
2051
2052
2053
2054
2055
2056
2057
2058
2059 struct v4l2_sliced_vbi_format {
2060 __u16 service_set;
2061
2062
2063
2064
2065 __u16 service_lines[2][24];
2066 __u32 io_size;
2067 __u32 reserved[2];
2068 };
2069
2070
2071
2072 #define V4L2_SLICED_TELETEXT_B (0x0001)
2073
2074 #define V4L2_SLICED_VPS (0x0400)
2075
2076 #define V4L2_SLICED_CAPTION_525 (0x1000)
2077
2078 #define V4L2_SLICED_WSS_625 (0x4000)
2079
2080 #define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525)
2081 #define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
2082
2083 struct v4l2_sliced_vbi_cap {
2084 __u16 service_set;
2085
2086
2087
2088
2089 __u16 service_lines[2][24];
2090 __u32 type;
2091 __u32 reserved[3];
2092 };
2093
2094 struct v4l2_sliced_vbi_data {
2095 __u32 id;
2096 __u32 field;
2097 __u32 line;
2098 __u32 reserved;
2099 __u8 data[48];
2100 };
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119 #define V4L2_MPEG_VBI_IVTV_TELETEXT_B (1)
2120 #define V4L2_MPEG_VBI_IVTV_CAPTION_525 (4)
2121 #define V4L2_MPEG_VBI_IVTV_WSS_625 (5)
2122 #define V4L2_MPEG_VBI_IVTV_VPS (7)
2123
2124 struct v4l2_mpeg_vbi_itv0_line {
2125 __u8 id;
2126 __u8 data[42];
2127 } __attribute__ ((packed));
2128
2129 struct v4l2_mpeg_vbi_itv0 {
2130 __le32 linemask[2];
2131 struct v4l2_mpeg_vbi_itv0_line line[35];
2132 } __attribute__ ((packed));
2133
2134 struct v4l2_mpeg_vbi_ITV0 {
2135 struct v4l2_mpeg_vbi_itv0_line line[36];
2136 } __attribute__ ((packed));
2137
2138 #define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0"
2139 #define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0"
2140
2141 struct v4l2_mpeg_vbi_fmt_ivtv {
2142 __u8 magic[4];
2143 union {
2144 struct v4l2_mpeg_vbi_itv0 itv0;
2145 struct v4l2_mpeg_vbi_ITV0 ITV0;
2146 };
2147 } __attribute__ ((packed));
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160 struct v4l2_plane_pix_format {
2161 __u32 sizeimage;
2162 __u32 bytesperline;
2163 __u16 reserved[6];
2164 } __attribute__ ((packed));
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180 struct v4l2_pix_format_mplane {
2181 __u32 width;
2182 __u32 height;
2183 __u32 pixelformat;
2184 __u32 field;
2185 __u32 colorspace;
2186
2187 struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES];
2188 __u8 num_planes;
2189 __u8 flags;
2190 union {
2191 __u8 ycbcr_enc;
2192 __u8 hsv_enc;
2193 };
2194 __u8 quantization;
2195 __u8 xfer_func;
2196 __u8 reserved[7];
2197 } __attribute__ ((packed));
2198
2199
2200
2201
2202
2203
2204 struct v4l2_sdr_format {
2205 __u32 pixelformat;
2206 __u32 buffersize;
2207 __u8 reserved[24];
2208 } __attribute__ ((packed));
2209
2210
2211
2212
2213
2214
2215 struct v4l2_meta_format {
2216 __u32 dataformat;
2217 __u32 buffersize;
2218 } __attribute__ ((packed));
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230 struct v4l2_format {
2231 __u32 type;
2232 union {
2233 struct v4l2_pix_format pix;
2234 struct v4l2_pix_format_mplane pix_mp;
2235 struct v4l2_window win;
2236 struct v4l2_vbi_format vbi;
2237 struct v4l2_sliced_vbi_format sliced;
2238 struct v4l2_sdr_format sdr;
2239 struct v4l2_meta_format meta;
2240 __u8 raw_data[200];
2241 } fmt;
2242 };
2243
2244
2245
2246 struct v4l2_streamparm {
2247 __u32 type;
2248 union {
2249 struct v4l2_captureparm capture;
2250 struct v4l2_outputparm output;
2251 __u8 raw_data[200];
2252 } parm;
2253 };
2254
2255
2256
2257
2258
2259 #define V4L2_EVENT_ALL 0
2260 #define V4L2_EVENT_VSYNC 1
2261 #define V4L2_EVENT_EOS 2
2262 #define V4L2_EVENT_CTRL 3
2263 #define V4L2_EVENT_FRAME_SYNC 4
2264 #define V4L2_EVENT_SOURCE_CHANGE 5
2265 #define V4L2_EVENT_MOTION_DET 6
2266 #define V4L2_EVENT_PRIVATE_START 0x08000000
2267
2268
2269 struct v4l2_event_vsync {
2270
2271 __u8 field;
2272 } __attribute__ ((packed));
2273
2274
2275 #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
2276 #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
2277 #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
2278
2279 struct v4l2_event_ctrl {
2280 __u32 changes;
2281 __u32 type;
2282 union {
2283 __s32 value;
2284 __s64 value64;
2285 };
2286 __u32 flags;
2287 __s32 minimum;
2288 __s32 maximum;
2289 __s32 step;
2290 __s32 default_value;
2291 };
2292
2293 struct v4l2_event_frame_sync {
2294 __u32 frame_sequence;
2295 };
2296
2297 #define V4L2_EVENT_SRC_CH_RESOLUTION (1 << 0)
2298
2299 struct v4l2_event_src_change {
2300 __u32 changes;
2301 };
2302
2303 #define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ (1 << 0)
2304
2305
2306
2307
2308
2309
2310
2311
2312 struct v4l2_event_motion_det {
2313 __u32 flags;
2314 __u32 frame_sequence;
2315 __u32 region_mask;
2316 };
2317
2318 struct v4l2_event {
2319 __u32 type;
2320 union {
2321 struct v4l2_event_vsync vsync;
2322 struct v4l2_event_ctrl ctrl;
2323 struct v4l2_event_frame_sync frame_sync;
2324 struct v4l2_event_src_change src_change;
2325 struct v4l2_event_motion_det motion_det;
2326 __u8 data[64];
2327 } u;
2328 __u32 pending;
2329 __u32 sequence;
2330 struct timespec timestamp;
2331 __u32 id;
2332 __u32 reserved[8];
2333 };
2334
2335 #define V4L2_EVENT_SUB_FL_SEND_INITIAL (1 << 0)
2336 #define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK (1 << 1)
2337
2338 struct v4l2_event_subscription {
2339 __u32 type;
2340 __u32 id;
2341 __u32 flags;
2342 __u32 reserved[5];
2343 };
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354 #define V4L2_CHIP_MATCH_BRIDGE 0
2355 #define V4L2_CHIP_MATCH_SUBDEV 4
2356
2357
2358 #define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE
2359 #define V4L2_CHIP_MATCH_I2C_DRIVER 1
2360 #define V4L2_CHIP_MATCH_I2C_ADDR 2
2361 #define V4L2_CHIP_MATCH_AC97 3
2362
2363 struct v4l2_dbg_match {
2364 __u32 type;
2365 union {
2366 __u32 addr;
2367 char name[32];
2368 };
2369 } __attribute__ ((packed));
2370
2371 struct v4l2_dbg_register {
2372 struct v4l2_dbg_match match;
2373 __u32 size;
2374 __u64 reg;
2375 __u64 val;
2376 } __attribute__ ((packed));
2377
2378 #define V4L2_CHIP_FL_READABLE (1 << 0)
2379 #define V4L2_CHIP_FL_WRITABLE (1 << 1)
2380
2381
2382 struct v4l2_dbg_chip_info {
2383 struct v4l2_dbg_match match;
2384 char name[32];
2385 __u32 flags;
2386 __u32 reserved[32];
2387 } __attribute__ ((packed));
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399 struct v4l2_create_buffers {
2400 __u32 index;
2401 __u32 count;
2402 __u32 memory;
2403 struct v4l2_format format;
2404 __u32 capabilities;
2405 __u32 reserved[7];
2406 };
2407
2408
2409
2410
2411
2412 #define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability)
2413 #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc)
2414 #define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format)
2415 #define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format)
2416 #define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers)
2417 #define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer)
2418 #define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer)
2419 #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer)
2420 #define VIDIOC_OVERLAY _IOW('V', 14, int)
2421 #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer)
2422 #define VIDIOC_EXPBUF _IOWR('V', 16, struct v4l2_exportbuffer)
2423 #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer)
2424 #define VIDIOC_STREAMON _IOW('V', 18, int)
2425 #define VIDIOC_STREAMOFF _IOW('V', 19, int)
2426 #define VIDIOC_G_PARM _IOWR('V', 21, struct v4l2_streamparm)
2427 #define VIDIOC_S_PARM _IOWR('V', 22, struct v4l2_streamparm)
2428 #define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id)
2429 #define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id)
2430 #define VIDIOC_ENUMSTD _IOWR('V', 25, struct v4l2_standard)
2431 #define VIDIOC_ENUMINPUT _IOWR('V', 26, struct v4l2_input)
2432 #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
2433 #define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
2434 #define VIDIOC_G_TUNER _IOWR('V', 29, struct v4l2_tuner)
2435 #define VIDIOC_S_TUNER _IOW('V', 30, struct v4l2_tuner)
2436 #define VIDIOC_G_AUDIO _IOR('V', 33, struct v4l2_audio)
2437 #define VIDIOC_S_AUDIO _IOW('V', 34, struct v4l2_audio)
2438 #define VIDIOC_QUERYCTRL _IOWR('V', 36, struct v4l2_queryctrl)
2439 #define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu)
2440 #define VIDIOC_G_INPUT _IOR('V', 38, int)
2441 #define VIDIOC_S_INPUT _IOWR('V', 39, int)
2442 #define VIDIOC_G_EDID _IOWR('V', 40, struct v4l2_edid)
2443 #define VIDIOC_S_EDID _IOWR('V', 41, struct v4l2_edid)
2444 #define VIDIOC_G_OUTPUT _IOR('V', 46, int)
2445 #define VIDIOC_S_OUTPUT _IOWR('V', 47, int)
2446 #define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output)
2447 #define VIDIOC_G_AUDOUT _IOR('V', 49, struct v4l2_audioout)
2448 #define VIDIOC_S_AUDOUT _IOW('V', 50, struct v4l2_audioout)
2449 #define VIDIOC_G_MODULATOR _IOWR('V', 54, struct v4l2_modulator)
2450 #define VIDIOC_S_MODULATOR _IOW('V', 55, struct v4l2_modulator)
2451 #define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct v4l2_frequency)
2452 #define VIDIOC_S_FREQUENCY _IOW('V', 57, struct v4l2_frequency)
2453 #define VIDIOC_CROPCAP _IOWR('V', 58, struct v4l2_cropcap)
2454 #define VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop)
2455 #define VIDIOC_S_CROP _IOW('V', 60, struct v4l2_crop)
2456 #define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct v4l2_jpegcompression)
2457 #define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct v4l2_jpegcompression)
2458 #define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id)
2459 #define VIDIOC_TRY_FMT _IOWR('V', 64, struct v4l2_format)
2460 #define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct v4l2_audio)
2461 #define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct v4l2_audioout)
2462 #define VIDIOC_G_PRIORITY _IOR('V', 67, __u32)
2463 #define VIDIOC_S_PRIORITY _IOW('V', 68, __u32)
2464 #define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)
2465 #define VIDIOC_LOG_STATUS _IO('V', 70)
2466 #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
2467 #define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct v4l2_ext_controls)
2468 #define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct v4l2_ext_controls)
2469 #define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct v4l2_frmsizeenum)
2470 #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
2471 #define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct v4l2_enc_idx)
2472 #define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct v4l2_encoder_cmd)
2473 #define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct v4l2_encoder_cmd)
2474
2475
2476
2477
2478
2479
2480 #define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)
2481 #define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct v4l2_dbg_register)
2482
2483 #define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
2484 #define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
2485 #define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
2486 #define VIDIOC_DQEVENT _IOR('V', 89, struct v4l2_event)
2487 #define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct v4l2_event_subscription)
2488 #define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)
2489 #define VIDIOC_CREATE_BUFS _IOWR('V', 92, struct v4l2_create_buffers)
2490 #define VIDIOC_PREPARE_BUF _IOWR('V', 93, struct v4l2_buffer)
2491 #define VIDIOC_G_SELECTION _IOWR('V', 94, struct v4l2_selection)
2492 #define VIDIOC_S_SELECTION _IOWR('V', 95, struct v4l2_selection)
2493 #define VIDIOC_DECODER_CMD _IOWR('V', 96, struct v4l2_decoder_cmd)
2494 #define VIDIOC_TRY_DECODER_CMD _IOWR('V', 97, struct v4l2_decoder_cmd)
2495 #define VIDIOC_ENUM_DV_TIMINGS _IOWR('V', 98, struct v4l2_enum_dv_timings)
2496 #define VIDIOC_QUERY_DV_TIMINGS _IOR('V', 99, struct v4l2_dv_timings)
2497 #define VIDIOC_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap)
2498 #define VIDIOC_ENUM_FREQ_BANDS _IOWR('V', 101, struct v4l2_frequency_band)
2499
2500
2501
2502
2503
2504 #define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info)
2505
2506 #define VIDIOC_QUERY_EXT_CTRL _IOWR('V', 103, struct v4l2_query_ext_ctrl)
2507
2508
2509
2510
2511 #define BASE_VIDIOC_PRIVATE 192
2512
2513 #endif