FreeBSD/Linux Kernel Cross Reference
sys/sys/videoio.h
1 /* $NetBSD: videoio.h,v 1.4 2008/09/25 19:34:49 jmcneill Exp $ */
2
3 /*-
4 * Copyright (c) 2005, 2008 Jared D. McNeill <jmcneill@invisible.ca>
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. The name of the author may not be used to endorse or promote products
13 * derived from this software without specific prior written permission.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
20 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28 /* See http://v4l2spec.bytesex.org/ for Video4Linux 2 specifications */
29
30 #ifndef _HAVE_SYS_VIDEOIO_H
31 #define _HAVE_SYS_VIDEOIO_H
32
33 #include <sys/types.h>
34 #include <sys/time.h>
35
36 #ifndef _KERNEL
37 #define __u64 uint64_t
38 #define __u32 uint32_t
39 #define __u16 uint16_t
40 #define __u8 uint8_t
41 #define __s64 int64_t
42 #define __s32 int32_t
43 #define __s16 int16_t
44 #define __s8 int8_t
45 #endif
46
47 typedef uint64_t v4l2_std_id;
48 #define v4l2_fourcc(a,b,c,d) (((uint32_t)(a) << 0) | \
49 ((uint32_t)(b) << 8) | \
50 ((uint32_t)(c) << 16) | \
51 ((uint32_t)(d) << 24))
52 #if 0
53 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
54 #endif
55
56 #define V4L2_CTRL_ID2CLASS(id) ((id >> 16) & 0xfff)
57 #define V4L2_CTRL_ID2CID(id) (id & 0xffff)
58
59 enum v4l2_colorspace {
60 V4L2_COLORSPACE_SMPTE170M = 1,
61 V4L2_COLORSPACE_SMPTE240M,
62 V4L2_COLORSPACE_REC709,
63 V4L2_COLORSPACE_BT878,
64 V4L2_COLORSPACE_470_SYSTEM_M,
65 V4L2_COLORSPACE_470_SYSTEM_BG,
66 V4L2_COLORSPACE_JPEG,
67 V4L2_COLORSPACE_SRGB
68 };
69
70 enum v4l2_field {
71 V4L2_FIELD_ANY = 0,
72 V4L2_FIELD_NONE,
73 V4L2_FIELD_TOP,
74 V4L2_FIELD_BOTTOM,
75 V4L2_FIELD_INTERLACED,
76 V4L2_FIELD_SEQ_TB,
77 V4L2_FIELD_SEQ_BT,
78 V4L2_FIELD_ALTERNATE
79 };
80
81 enum v4l2_buf_type {
82 V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
83 V4L2_BUF_TYPE_VIDEO_OUTPUT,
84 V4L2_BUF_TYPE_VIDEO_OVERLAY,
85 V4L2_BUF_TYPE_VBI_CAPTURE,
86 V4L2_BUF_TYPE_VBI_OUTPUT,
87 V4L2_BUF_TYPE_PRIVATE = 0x80
88 };
89
90 enum v4l2_memory {
91 V4L2_MEMORY_MMAP = 1,
92 V4L2_MEMORY_USERPTR,
93 V4L2_MEMORY_OVERLAY
94 };
95
96 enum v4l2_priority {
97 V4L2_PRIORITY_UNSET = 0,
98 V4L2_PRIORITY_BACKGROUND,
99 V4L2_PRIORITY_INTERACTIVE,
100 V4L2_PRIORITY_RECORD,
101 V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE
102 };
103
104 enum v4l2_tuner_type {
105 V4L2_TUNER_RADIO = 1,
106 V4L2_TUNER_ANALOG_TV
107 };
108
109 enum v4l2_ctrl_type {
110 V4L2_CTRL_TYPE_INTEGER = 1,
111 V4L2_CTRL_TYPE_BOOLEAN,
112 V4L2_CTRL_TYPE_MENU,
113 V4L2_CTRL_TYPE_BUTTON
114 };
115
116 struct v4l2_timecode {
117 uint32_t type;
118 uint32_t flags;
119 uint8_t frames;
120 uint8_t seconds;
121 uint8_t minutes;
122 uint8_t hours;
123 uint8_t userbits[4];
124 };
125
126 struct v4l2_pix_format {
127 uint32_t width;
128 uint32_t height;
129 uint32_t pixelformat;
130 enum v4l2_field field;
131 uint32_t bytesperline;
132 uint32_t sizeimage;
133 enum v4l2_colorspace colorspace;
134 uint32_t priv;
135 };
136
137 struct v4l2_buffer {
138 uint32_t index;
139 enum v4l2_buf_type type;
140 uint32_t bytesused;
141 uint32_t flags;
142 enum v4l2_field field;
143 struct timeval timestamp;
144 struct v4l2_timecode timecode;
145 uint32_t sequence;
146 enum v4l2_memory memory;
147 union {
148 uint32_t offset;
149 unsigned long userptr;
150 } m;
151 uint32_t length;
152 uint32_t input;
153 uint32_t reserved;
154 };
155
156 struct v4l2_rect {
157 int32_t left;
158 int32_t top;
159 int32_t width;
160 int32_t height;
161 };
162
163 struct v4l2_fract {
164 uint32_t numerator;
165 uint32_t denominator;
166 };
167
168 struct v4l2_fmtdesc {
169 uint32_t index;
170 enum v4l2_buf_type type;
171 uint32_t flags;
172 uint8_t description[32];
173 uint32_t pixelformat;
174 uint32_t reserved[4];
175 };
176
177 struct v4l2_clip {
178 struct v4l2_rect c;
179 struct v4l2_clip *next;
180 };
181
182 struct v4l2_window {
183 struct v4l2_rect w;
184 enum v4l2_field field;
185 uint32_t chromakey;
186 struct v4l2_clip *clips;
187 uint32_t clipcount;
188 void *bitmap;
189 };
190
191 struct v4l2_vbi_format {
192 uint32_t sampling_rate;
193 uint32_t offset;
194 uint32_t samples_per_line;
195 uint32_t sample_format;
196 uint32_t start[2];
197 uint32_t count[2];
198 uint32_t flags;
199 uint32_t reserved[2];
200 };
201
202 /* In the API docs, but not the Linux implementation
203 *
204 * struct v4l2_sliced_vbi_format {
205 * uint32_t service_set;
206 * uint32_t packet_size;
207 * uint32_t io_size;
208 * uint32_t reserved;
209 * };
210 *
211 *
212 * struct v4l2_sliced_data {
213 * uint32_t id;
214 * uint32_t line;
215 * uint8_t data[];
216 * };
217 */
218
219 struct v4l2_cropcap {
220 enum v4l2_buf_type type;
221 struct v4l2_rect bounds;
222 struct v4l2_rect defrect;
223 struct v4l2_fract pixelaspect;
224 };
225
226 struct v4l2_input {
227 uint32_t index;
228 uint8_t name[32];
229 uint32_t type;
230 uint32_t audioset;
231 uint32_t tuner;
232 v4l2_std_id std;
233 uint32_t status;
234 uint32_t reserved[4];
235 };
236
237 struct v4l2_output {
238 uint32_t index;
239 uint8_t name[32];
240 uint32_t type;
241 uint32_t audioset;
242 uint32_t modulator;
243 v4l2_std_id std;
244 uint32_t reserved[4];
245 };
246
247 struct v4l2_audio {
248 uint32_t index;
249 uint8_t name[32];
250 uint32_t capability;
251 uint32_t mode;
252 uint32_t reserved[2];
253 };
254
255 struct v4l2_audioout {
256 uint32_t index;
257 uint8_t name[32];
258 uint32_t capability;
259 uint32_t mode;
260 uint32_t reserved[2];
261 };
262
263 struct v4l2_compression {
264 uint32_t quality;
265 uint32_t keyframerate;
266 uint32_t pframerate;
267 uint32_t reserved[5];
268 };
269
270 struct v4l2_crop {
271 enum v4l2_buf_type type;
272 struct v4l2_rect c;
273 };
274
275 struct v4l2_control {
276 uint32_t id;
277 int32_t value;
278 };
279
280 struct v4l2_framebuffer {
281 uint32_t capability;
282 uint32_t flags;
283 void *base;
284 struct v4l2_pix_format fmt;
285 };
286
287 struct v4l2_standard {
288 uint32_t index;
289 v4l2_std_id id;
290 uint8_t name[24];
291 struct v4l2_fract frameperiod;
292 uint32_t framelines;
293 uint32_t reserved[4];
294 };
295
296 struct v4l2_format {
297 enum v4l2_buf_type type;
298 union {
299 struct v4l2_pix_format pix;
300 struct v4l2_window win;
301 struct v4l2_vbi_format vbi;
302 uint8_t raw_data[200];
303 } fmt;
304 };
305
306 struct v4l2_frequency {
307 uint32_t tuner;
308 enum v4l2_tuner_type type;
309 uint32_t frequency;
310 uint32_t reserved[8];
311 };
312
313 struct v4l2_jpegcompression {
314 int quality;
315 int APPn;
316 int APP_len;
317 char APP_data[60];
318 int COM_len;
319 char COM_data[60];
320 uint32_t jpeg_markers;
321 };
322
323 struct v4l2_modulator {
324 uint32_t index;
325 uint8_t name[32];
326 uint32_t capability;
327 uint32_t rangelow;
328 uint32_t rangehigh;
329 uint32_t txsubchans;
330 uint32_t reserved[4];
331 };
332
333 struct v4l2_captureparm {
334 uint32_t capability;
335 uint32_t capturemode;
336 struct v4l2_fract timeperframe;
337 uint32_t extendedmode;
338 uint32_t readbuffers;
339 uint32_t reserved[4];
340 };
341
342 struct v4l2_outputparm {
343 uint32_t capability;
344 uint32_t outputmode;
345 struct v4l2_fract timeperframe;
346 uint32_t extendedmode;
347 uint32_t writebuffers;
348 uint32_t reserved[4];
349 };
350
351 struct v4l2_streamparm {
352 enum v4l2_buf_type type;
353 union {
354 struct v4l2_captureparm capture;
355 struct v4l2_outputparm output;
356 uint8_t raw_data[200];
357 } parm;
358 };
359
360 struct v4l2_tuner {
361 uint32_t index;
362 uint8_t name[32];
363 enum v4l2_tuner_type type;
364 uint32_t capability;
365 uint32_t rangelow;
366 uint32_t rangehigh;
367 uint32_t rxsubchans;
368 uint32_t audmode;
369 uint32_t signal;
370 int32_t afc;
371 uint32_t reserved[4];
372 };
373
374 struct v4l2_capability {
375 uint8_t driver[16];
376 uint8_t card[32];
377 uint8_t bus_info[32];
378 uint32_t version;
379 uint32_t capabilities;
380 uint32_t reserved[4];
381 };
382
383 struct v4l2_queryctrl {
384 uint32_t id;
385 enum v4l2_ctrl_type type;
386 uint8_t name[32];
387 int32_t minimum;
388 int32_t maximum;
389 int32_t step;
390 int32_t default_value;
391 uint32_t flags;
392 uint32_t reserved[2];
393 };
394
395 struct v4l2_querymenu {
396 uint32_t id;
397 uint32_t index;
398 uint8_t name[32];
399 uint32_t reserved;
400 };
401
402 struct v4l2_requestbuffers {
403 uint32_t count;
404 enum v4l2_buf_type type;
405 enum v4l2_memory memory;
406 uint32_t reserved[2];
407 };
408
409 /* Timecode types */
410 #define V4L2_TC_TYPE_24FPS 1
411 #define V4L2_TC_TYPE_25FPS 2
412 #define V4L2_TC_TYPE_30FPS 3
413 #define V4L2_TC_TYPE_50FPS 4
414 #define V4L2_TC_TYPE_60FPS 5
415
416 /* Timecode flags */
417 #define V4L2_TC_FLAG_DROPFRAME 0x0001
418 #define V4L2_TC_FLAG_COLORFRAME 0x0002
419 #define V4L2_TC_USERBITS_field 0x000c
420 #define V4L2_TC_USERBITS_USERDEFINED 0x0000
421 #define V4L2_TC_USERBITS_8BITCHARS 0x0008
422
423 /* Buffer flags */
424 #define V4L2_BUF_FLAG_MAPPED 0x0001
425 #define V4L2_BUF_FLAG_QUEUED 0x0002
426 #define V4L2_BUF_FLAG_DONE 0x0004
427 #define V4L2_BUF_FLAG_KEYFRAME 0x0008
428 #define V4L2_BUF_FLAG_PFRAME 0x0010
429 #define V4L2_BUF_FLAG_BFRAME 0x0020
430 #define V4L2_BUF_FLAG_TIMECODE 0x0100
431 #define V4L2_BUF_FLAG_INPUT 0x0200
432
433 /* Image format description flags */
434 #define V4L2_FMT_FLAG_COMPRESSED 0x0001
435
436 /* Input types */
437 #define V4L2_INPUT_TYPE_TUNER 1
438 #define V4L2_INPUT_TYPE_CAMERA 2
439
440 /* Input status flags */
441 #define V4L2_IN_ST_NO_POWER 0x00000001
442 #define V4L2_IN_ST_NO_SIGNAL 0x00000002
443 #define V4L2_IN_ST_NO_COLOR 0x00000004
444 #define V4L2_IN_ST_NO_H_LOCK 0x00000100
445 #define V4L2_IN_ST_COLOR_KILL 0x00000200
446 #define V4L2_IN_ST_NO_SYNC 0x00010000
447 #define V4L2_IN_ST_NO_EQU 0x00020000
448 #define V4L2_IN_ST_NO_CARRIER 0x00040000
449 #define V4L2_IN_ST_MACROVISION 0x01000000
450 #define V4L2_IN_ST_NO_ACCESS 0x02000000
451 #define V4L2_IN_ST_VTR 0x04000000
452
453 /* Output types */
454 #define V4L2_OUTPUT_TYPE_MODULATOR 1
455 #define V4L2_OUTPUT_TYPE_ANALOG 2
456 #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
457
458 /* Audio capability flags */
459 #define V4L2_AUDCAP_STEREO 0x00001
460 #define V4L2_AUDCAP_AVL 0x00002
461
462 /* Audio modes */
463 #define V4L2_AUDMODE_AVL 0x00001
464
465 /* Frame buffer capability flags */
466 #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
467 #define V4L2_FBUF_CAP_CHROMAKEY 0x0002
468 #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
469 #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
470
471 /* Frame buffer flags */
472 #define V4L2_FBUF_FLAG_PRIMARY 0x0001
473 #define V4L2_FBUF_FLAG_OVERLAY 0x0002
474 #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
475
476 /* JPEG markers flags */
477 #define V4L2_JPEG_MARKER_DHT (1 << 3)
478 #define V4L2_JPEG_MARKER_DQT (1 << 4)
479 #define V4L2_JPEG_MARKER_DRI (1 << 5)
480 #define V4L2_JPEG_MARKER_COM (1 << 6)
481 #define V4L2_JPEG_MARKER_APP (1 << 7)
482
483 /* Streaming parameters capabilities */
484 #define V4L2_CAP_TIMEPERFRAME 0x1000
485
486 /* Capture parameters flags */
487 #define V4L2_MODE_HIGHQUALITY 0x0001
488
489 /* Tuner and modulator capability flags */
490 #define V4L2_TUNER_CAP_LOW 0x0001
491 #define V4L2_TUNER_CAP_NORM 0x0002
492 #define V4L2_TUNER_CAP_STEREO 0x0010
493 #define V4L2_TUNER_CAP_LANG2 0x0020
494 #define V4L2_TUNER_CAP_SAP 0x0020
495 #define V4L2_TUNER_CAP_LANG1 0x0040
496
497 /* Tuner and modulation audio transmission flags */
498 #define V4L2_TUNER_SUB_MONO 0x0001
499 #define V4L2_TUNER_SUB_STEREO 0x0002
500 #define V4L2_TUNER_SUB_LANG2 0x0004
501 #define V4L2_TUNER_SUB_SAP 0x0004
502 #define V4L2_TUNER_SUB_LANG1 0x0008
503
504 /* Tuner audio modes */
505 #define V4L2_TUNER_MODE_MONO 0
506 #define V4L2_TUNER_MODE_STEREO 1
507 #define V4L2_TUNER_MODE_LANG2 2
508 #define V4L2_TUNER_MODE_SAP 2
509 #define V4L2_TUNER_MODE_LANG1 3
510 #define V4L2_TUNER_MODE_LANG1_LANG2 4
511
512 /* Control flags */
513 #define V4L2_CTRL_FLAG_DISABLED 0x0001
514 #define V4L2_CTRL_FLAG_GRABBED 0x0002
515 #define V4L2_CTRL_FLAG_READ_ONLY 0x0004
516 #define V4L2_CTRL_FLAG_UPDATE 0x0008
517 #define V4L2_CTRL_FLAG_INACTIVE 0x0010
518 #define V4L2_CTRL_FLAG_SLIDER 0x0020
519
520 /* Control IDs defined by V4L2 */
521 #define V4L2_CID_BASE 0x00980900
522 #define V4L2_CID_PRIVATE_BASE 0x08000000
523
524 #define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE + 0)
525 #define V4L2_CID_CONTRAST (V4L2_CID_BASE + 1)
526 #define V4L2_CID_SATURATION (V4L2_CID_BASE + 2)
527 #define V4L2_CID_HUE (V4L2_CID_BASE + 3)
528 #define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE + 5)
529 #define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE + 6)
530 #define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE + 7)
531 #define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE + 8)
532 #define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE + 9)
533 #define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE + 10)
534 #define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE + 11)
535 #define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE + 12)
536 #define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE + 13)
537 #define V4L2_CID_RED_BALANCE (V4L2_CID_BASE + 14)
538 #define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE + 15)
539 #define V4L2_CID_GAMMA (V4L2_CID_BASE + 16)
540 #define V4L2_CID_WHITENESS (V4L2_CID_GAMMA)
541 #define V4L2_CID_EXPOSURE (V4L2_CID_BASE + 17)
542 #define V4L2_CID_AUTOGAIN (V4L2_CID_BASE + 18)
543 #define V4L2_CID_GAIN (V4L2_CID_BASE + 19)
544 #define V4L2_CID_HFLIP (V4L2_CID_BASE + 20)
545 #define V4L2_CID_VFLIP (V4L2_CID_BASE + 21)
546 #define V4L2_CID_HCENTER_DEPRECATED (V4L2_CID_BASE + 22)
547 #define V4L2_CID_VCENTER_DEPRECATED (V4L2_CID_BASE + 23)
548 #define V4L2_CID_HCENTER V4L2_CID_HCENTER_DEPRECATED
549 #define V4L2_CID_VCENTER V4L2_CID_VCENTER_DEPRECATED
550 #define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE + 24)
551 #define V4L2_CID_HUE_AUTO (V4L2_CID_BASE + 25)
552 #define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE + 26)
553 #define V4L2_CID_SHARPNESS (V4L2_CID_BASE + 27)
554 #define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE + 28)
555 #define V4L2_CID_LASTP1 (V4L2_CID_BASE + 29)
556
557 /* Pixel formats */
558 #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1')
559 #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O')
560 #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P')
561 #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q')
562 #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R')
563 #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3')
564 #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3')
565 #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4')
566 #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4')
567 #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y')
568 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
569 #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y')
570 #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P')
571 #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2')
572 #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2')
573 #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9')
574 #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9')
575 #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P')
576 #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('Y', '1', '1', 'P')
577 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
578 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
579 /* http://www.siliconimaging.com/RGB%20Bayer.htm */
580 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
581 /* Reserved pixel formats */
582 #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V')
583 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
584 #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G')
585 #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G')
586 #define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd')
587 #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G')
588 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
589 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '')
590
591 /* Video standards */
592 #define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
593 #define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
594 #define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
595 #define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
596 #define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
597 #define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
598 #define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
599 #define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
600 #define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
601 #define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
602 #define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
603 #define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
604 #define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
605 #define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
606 #define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
607 #define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
608 #define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
609 #define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
610 #define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
611 #define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
612 #define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
613 #define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
614 #define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
615 #define V4L2_STD_PAL_BG (V4L2_STD_PAL_B | \
616 V4L2_STD_PAL_B1 | \
617 V4L2_STD_PAL_G)
618 #define V4L2_STD_PAL_DK (V4L2_STD_PAL_D | \
619 V4L2_STD_PAL_D1 | \
620 V4L2_STD_PAL_K)
621 #define V4L2_STD_PAL (V4L2_STD_PAL_BG | \
622 V4L2_STD_PAL_DK | \
623 V4L2_STD_PAL_H | \
624 V4L2_STD_PAL_I)
625 #define V4L2_STD_NTSC (V4L2_STD_NTSC_M | \
626 V4L2_STD_NTSC_M_JP)
627 #define V4L2_STD_SECAM (V4L2_STD_SECAM_B | \
628 V4L2_STD_SECAM_D | \
629 V4L2_STD_SECAM_G | \
630 V4L2_STD_SECAM_H | \
631 V4L2_STD_SECAM_K | \
632 V4L2_STD_SECAM_K1 | \
633 V4L2_STD_SECAM_L)
634 #define V4L2_STD_525_60 (V4L2_STD_PAL_M | \
635 V4L2_STD_PAL_60 | \
636 V4L2_STD_NTSC)
637 #define V4L2_STD_625_50 (V4L2_STD_PAL | \
638 V4L2_STD_PAL_N | \
639 V4L2_STD_PAL_Nc | \
640 V4L2_STD_SECAM)
641 #define V4L2_STD_UNKNOWN 0
642 #define V4L2_STD_ALL (V4L2_STD_525_60 | \
643 V4L2_STD_625_50)
644
645 /* Raw VBI format flags */
646 #define V4L2_VBI_UNSYNC 0x0001
647 #define V4L2_VBI_INTERLACED 0x0002
648
649 /* Device capabilities */
650 #define V4L2_CAP_VIDEO_CAPTURE 0x00000001
651 #define V4L2_CAP_VIDEO_OUTPUT 0x00000002
652 #define V4L2_CAP_VIDEO_OVERLAY 0x00000004
653 #define V4L2_CAP_VBI_CAPTURE 0x00000010
654 #define V4L2_CAP_VBI_OUTPUT 0x00000020
655 #define V4L2_CAP_RDS_CAPTURE 0x00000100
656 #define V4L2_CAP_TUNER 0x00010000
657 #define V4L2_CAP_AUDIO 0x00020000
658 #define V4L2_CAP_READWRITE 0x01000000
659 #define V4L2_CAP_ASYNCIO 0x02000000
660 #define V4L2_CAP_STREAMING 0x04000000
661 #define V4L2_CAP_BITMASK \
662 "\2\1VIDEO_CAPTURE\2VIDEO_OUTPUT\3VIDEO_OVERLAY"
663 #if 0
664 "\5VBI_CAPTURE\6VBI_OUTPUT\9RDS_CAPTURE" \
665 "\17TUNER\18AUDIO\25READWRITE" \
666 "\26ASYNCIO\27STREAMING"
667 #endif
668
669 /* Device ioctls -- try to keep them the same as Linux for compat_linux */
670 #define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability)
671 #define VIDIOC_RESERVED _IO('V', 1)
672 #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc)
673 #define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format)
674 #define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format)
675 /* 6 and 7 are VIDIOC_[SG]_COMP, which are unsupported */
676 #define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers)
677 #define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer)
678 #define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer)
679 #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer)
680 #define VIDIOC_OVERLAY _IOW('V', 14, int)
681 #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer)
682 #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer)
683 #define VIDIOC_STREAMON _IOW('V', 18, int)
684 #define VIDIOC_STREAMOFF _IOW('V', 19, int)
685 #define VIDIOC_G_PARM _IOWR('V', 21, struct v4l2_streamparm)
686 #define VIDIOC_S_PARM _IOWR('V', 22, struct v4l2_streamparm)
687 #define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id)
688 #define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id)
689 #define VIDIOC_ENUMSTD _IOWR('V', 25, struct v4l2_standard)
690 #define VIDIOC_ENUMINPUT _IOWR('V', 26, struct v4l2_input)
691 #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
692 #define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
693 #define VIDIOC_G_TUNER _IOWR('V', 29, struct v4l2_tuner)
694 #define VIDIOC_S_TUNER _IOW('V', 30, struct v4l2_tuner)
695 #define VIDIOC_G_AUDIO _IOR('V', 33, struct v4l2_audio)
696 #define VIDIOC_S_AUDIO _IOW('V', 34, struct v4l2_audio)
697 #define VIDIOC_QUERYCTRL _IOWR('V', 36, struct v4l2_queryctrl)
698 #define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu)
699 #define VIDIOC_G_INPUT _IOR('V', 38, int)
700 #define VIDIOC_S_INPUT _IOWR('V', 39, int)
701 #define VIDIOC_G_OUTPUT _IOR('V', 46, int)
702 #define VIDIOC_S_OUTPUT _IOWR('V', 47, int)
703 #define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output)
704 #define VIDIOC_G_AUDOUT _IOR('V', 49, struct v4l2_audioout)
705 #define VIDIOC_S_AUDOUT _IOW('V', 50, struct v4l2_audioout)
706 #define VIDIOC_G_MODULATOR _IOWR('V', 54, struct v4l2_modulator)
707 #define VIDIOC_S_MODULATOR _IOW('V', 55, struct v4l2_modulator)
708 #define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct v4l2_frequency)
709 #define VIDIOC_S_FREQUENCY _IOW('V', 57, struct v4l2_frequency)
710 #define VIDIOC_CROPCAP _IOWR('V', 58, struct v4l2_cropcap)
711 #define VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop)
712 #define VIDIOC_S_CROP _IOW('V', 60, struct v4l2_crop)
713 #define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct v4l2_jpegcompression)
714 #define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct v4l2_jpegcompression)
715 #define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id)
716 #define VIDIOC_TRY_FMT _IOWR('V', 64, struct v4l2_format)
717 #define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct v4l2_audio)
718 #define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct v4l2_audioout)
719 #define VIDIOC_G_PRIORITY _IOR('V', 67, enum v4l2_priority)
720 #define VIDIOC_S_PRIORITY _IOW('V', 68, enum v4l2_priority)
721
722 #endif /* !_HAVE_SYS_VIDEOIO_H */
Cache object: 368f8ebb909beb1f04f32bdf21c269a5
|