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