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