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