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