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