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