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