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