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