| 1 |
/* |
|---|
| 2 |
* D1 bindings for V4L2 api version 0.6.3 by Moritz Warning. |
|---|
| 3 |
* Source http://www.ijg.org/files/jpegsr7.zip |
|---|
| 4 |
*/ |
|---|
| 5 |
|
|---|
| 6 |
/* |
|---|
| 7 |
* Video for Linux Two header file |
|---|
| 8 |
* |
|---|
| 9 |
* Copyright (C) 1999-2007 the contributors |
|---|
| 10 |
* |
|---|
| 11 |
* This program is free software; you can redistribute it and/or modify |
|---|
| 12 |
* it under the terms of the GNU General Public License as published by |
|---|
| 13 |
* the Free Software Foundation; either version 2 of the License, or |
|---|
| 14 |
* (at your option) any later version. |
|---|
| 15 |
* |
|---|
| 16 |
* This program is distributed in the hope that it will be useful, |
|---|
| 17 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 18 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 19 |
* GNU General Public License for more details. |
|---|
| 20 |
* |
|---|
| 21 |
* Alternatively you can redistribute this file under the terms of the |
|---|
| 22 |
* BSD license as stated below: |
|---|
| 23 |
* |
|---|
| 24 |
* Redistribution and use in source and binary forms, with or without |
|---|
| 25 |
* modification, are permitted provided that the following conditions |
|---|
| 26 |
* are met: |
|---|
| 27 |
* 1. Redistributions of source code must retain the above copyright |
|---|
| 28 |
* notice, this list of conditions and the following disclaimer. |
|---|
| 29 |
* 2. Redistributions in binary form must reproduce the above copyright |
|---|
| 30 |
* notice, this list of conditions and the following disclaimer in |
|---|
| 31 |
* the documentation and/or other materials provided with the |
|---|
| 32 |
* distribution. |
|---|
| 33 |
* 3. The names of its contributors may not be used to endorse or promote |
|---|
| 34 |
* products derived from this software without specific prior written |
|---|
| 35 |
* permission. |
|---|
| 36 |
* |
|---|
| 37 |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|---|
| 38 |
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|---|
| 39 |
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|---|
| 40 |
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|---|
| 41 |
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|---|
| 42 |
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
|---|
| 43 |
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
|---|
| 44 |
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
|---|
| 45 |
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
|---|
| 46 |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
|---|
| 47 |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|---|
| 48 |
* |
|---|
| 49 |
* Header file for v4l or V4L2 drivers and applications |
|---|
| 50 |
* with public API. |
|---|
| 51 |
* All kernel-specific stuff were moved to media/v4l2-dev.h, so |
|---|
| 52 |
* no #if __KERNEL tests are allowed here |
|---|
| 53 |
* |
|---|
| 54 |
* See http://linuxtv.org for more info |
|---|
| 55 |
* |
|---|
| 56 |
* Author: Bill Dirks <bill@thedirks.org> |
|---|
| 57 |
* Justin Schoeman |
|---|
| 58 |
* Hans Verkuil <hverkuil@xs4all.nl> |
|---|
| 59 |
* et al. |
|---|
| 60 |
*/ |
|---|
| 61 |
module videodev2; |
|---|
| 62 |
|
|---|
| 63 |
/* |
|---|
| 64 |
#include <sys/time.h> |
|---|
| 65 |
|
|---|
| 66 |
#include <linux/ioctl.h> |
|---|
| 67 |
#include <linux/types.h> |
|---|
| 68 |
*/ |
|---|
| 69 |
|
|---|
| 70 |
import ioctl; |
|---|
| 71 |
import tango.stdc.posix.sys.time; |
|---|
| 72 |
//TODO: what about __attribute__ ((packed)); |
|---|
| 73 |
|
|---|
| 74 |
alias uint __u32; |
|---|
| 75 |
alias int __s32; |
|---|
| 76 |
alias char __u8; |
|---|
| 77 |
alias long __s64; |
|---|
| 78 |
alias ulong __u64; |
|---|
| 79 |
alias ushort __u16; |
|---|
| 80 |
alias uint __le32; //TODO!! defined in /usr/include/linux/types.h |
|---|
| 81 |
|
|---|
| 82 |
/* |
|---|
| 83 |
* Common stuff for both V4L1 and V4L2 |
|---|
| 84 |
* Moved from videodev.h |
|---|
| 85 |
*/ |
|---|
| 86 |
const VIDEO_MAX_FRAME = 32; |
|---|
| 87 |
|
|---|
| 88 |
|
|---|
| 89 |
/* These defines are V4L1 specific and should not be used with the V4L2 API! |
|---|
| 90 |
They will be removed from this header in the future. */ |
|---|
| 91 |
|
|---|
| 92 |
const VID_TYPE_CAPTURE = 1; /* Can capture */ |
|---|
| 93 |
const VID_TYPE_TUNER = 2; /* Can tune */ |
|---|
| 94 |
const VID_TYPE_TELETEXT = 4; /* Does teletext */ |
|---|
| 95 |
const VID_TYPE_OVERLAY = 8; /* Overlay onto frame buffer */ |
|---|
| 96 |
const VID_TYPE_CHROMAKEY = 16; /* Overlay by chromakey */ |
|---|
| 97 |
const VID_TYPE_CLIPPING = 32; /* Can clip */ |
|---|
| 98 |
const VID_TYPE_FRAMERAM = 64; /* Uses the frame buffer memory */ |
|---|
| 99 |
const VID_TYPE_SCALES = 128; /* Scalable */ |
|---|
| 100 |
const VID_TYPE_MONOCHROME = 256; /* Monochrome only */ |
|---|
| 101 |
const VID_TYPE_SUBCAPTURE = 512; /* Can capture subareas of the image */ |
|---|
| 102 |
const VID_TYPE_MPEG_DECODER = 1024; /* Can decode MPEG streams */ |
|---|
| 103 |
const VID_TYPE_MPEG_ENCODER = 2048; /* Can encode MPEG streams */ |
|---|
| 104 |
const VID_TYPE_MJPEG_DECODER = 4096; /* Can decode MJPEG streams */ |
|---|
| 105 |
const VID_TYPE_MJPEG_ENCODER = 8192; /* Can encode MJPEG streams */ |
|---|
| 106 |
|
|---|
| 107 |
/* |
|---|
| 108 |
* M I S C E L L A N E O U S |
|---|
| 109 |
*/ |
|---|
| 110 |
|
|---|
| 111 |
/* Four-character-code (FOURCC) */ |
|---|
| 112 |
template v4l2_fourcc(char a, char b, char c, char d) |
|---|
| 113 |
{ |
|---|
| 114 |
const v4l2_fourcc = ((cast(__u32) a) | ((cast(__u32) b) << 8) | ((cast(__u32) c) << 16) | ((cast(__u32) d) << 24)); |
|---|
| 115 |
} |
|---|
| 116 |
|
|---|
| 117 |
/* |
|---|
| 118 |
* E N U M S |
|---|
| 119 |
*/ |
|---|
| 120 |
enum v4l2_field { |
|---|
| 121 |
V4L2_FIELD_ANY = 0, /* driver can choose from none, |
|---|
| 122 |
top, bottom, interlaced |
|---|
| 123 |
depending on whatever it thinks |
|---|
| 124 |
is approximate ... */ |
|---|
| 125 |
V4L2_FIELD_NONE = 1, /* this device has no fields ... */ |
|---|
| 126 |
V4L2_FIELD_TOP = 2, /* top field only */ |
|---|
| 127 |
V4L2_FIELD_BOTTOM = 3, /* bottom field only */ |
|---|
| 128 |
V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */ |
|---|
| 129 |
V4L2_FIELD_SEQ_TB = 5, /* both fields sequential into one |
|---|
| 130 |
buffer, top-bottom order */ |
|---|
| 131 |
V4L2_FIELD_SEQ_BT = 6, /* same as above + bottom-top order */ |
|---|
| 132 |
V4L2_FIELD_ALTERNATE = 7, /* both fields alternating into |
|---|
| 133 |
separate buffers */ |
|---|
| 134 |
V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field |
|---|
| 135 |
first and the top field is |
|---|
| 136 |
transmitted first */ |
|---|
| 137 |
V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field |
|---|
| 138 |
first and the bottom field is |
|---|
| 139 |
transmitted first */ |
|---|
| 140 |
} |
|---|
| 141 |
template V4L2_FIELD_HAS_TOP(field) |
|---|
| 142 |
{ |
|---|
| 143 |
const V4L2_FIELD_HAS_TOP = |
|---|
| 144 |
((field) == V4L2_FIELD_TOP || |
|---|
| 145 |
(field) == V4L2_FIELD_INTERLACED || |
|---|
| 146 |
(field) == V4L2_FIELD_INTERLACED_TB || |
|---|
| 147 |
(field) == V4L2_FIELD_INTERLACED_BT || |
|---|
| 148 |
(field) == V4L2_FIELD_SEQ_TB || |
|---|
| 149 |
(field) == V4L2_FIELD_SEQ_BT); |
|---|
| 150 |
} |
|---|
| 151 |
template V4L2_FIELD_HAS_BOTTOM(field) |
|---|
| 152 |
{ |
|---|
| 153 |
const V4L2_FIELD_HAS_BOTTOM = |
|---|
| 154 |
((field) == V4L2_FIELD_BOTTOM || |
|---|
| 155 |
(field) == V4L2_FIELD_INTERLACED || |
|---|
| 156 |
(field) == V4L2_FIELD_INTERLACED_TB || |
|---|
| 157 |
(field) == V4L2_FIELD_INTERLACED_BT || |
|---|
| 158 |
(field) == V4L2_FIELD_SEQ_TB || |
|---|
| 159 |
(field) == V4L2_FIELD_SEQ_BT); |
|---|
| 160 |
} |
|---|
| 161 |
template V4L2_FIELD_HAS_BOTH(field) |
|---|
| 162 |
{ |
|---|
| 163 |
const V4L2_FIELD_HAS_BOTH = |
|---|
| 164 |
((field) == V4L2_FIELD_INTERLACED || |
|---|
| 165 |
(field) == V4L2_FIELD_INTERLACED_TB || |
|---|
| 166 |
(field) == V4L2_FIELD_INTERLACED_BT || |
|---|
| 167 |
(field) == V4L2_FIELD_SEQ_TB || |
|---|
| 168 |
(field) == V4L2_FIELD_SEQ_BT); |
|---|
| 169 |
} |
|---|
| 170 |
|
|---|
| 171 |
enum v4l2_buf_type { |
|---|
| 172 |
V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, |
|---|
| 173 |
V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, |
|---|
| 174 |
V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, |
|---|
| 175 |
V4L2_BUF_TYPE_VBI_CAPTURE = 4, |
|---|
| 176 |
V4L2_BUF_TYPE_VBI_OUTPUT = 5, |
|---|
| 177 |
V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, |
|---|
| 178 |
V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, |
|---|
| 179 |
//#if 1 |
|---|
| 180 |
/* Experimental */ |
|---|
| 181 |
V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8, |
|---|
| 182 |
//#endif |
|---|
| 183 |
V4L2_BUF_TYPE_PRIVATE = 0x80, |
|---|
| 184 |
} |
|---|
| 185 |
|
|---|
| 186 |
enum v4l2_ctrl_type { |
|---|
| 187 |
V4L2_CTRL_TYPE_INTEGER = 1, |
|---|
| 188 |
V4L2_CTRL_TYPE_BOOLEAN = 2, |
|---|
| 189 |
V4L2_CTRL_TYPE_MENU = 3, |
|---|
| 190 |
V4L2_CTRL_TYPE_BUTTON = 4, |
|---|
| 191 |
V4L2_CTRL_TYPE_INTEGER64 = 5, |
|---|
| 192 |
V4L2_CTRL_TYPE_CTRL_CLASS = 6, |
|---|
| 193 |
} |
|---|
| 194 |
|
|---|
| 195 |
enum v4l2_tuner_type { |
|---|
| 196 |
V4L2_TUNER_RADIO = 1, |
|---|
| 197 |
V4L2_TUNER_ANALOG_TV = 2, |
|---|
| 198 |
V4L2_TUNER_DIGITAL_TV = 3, |
|---|
| 199 |
} |
|---|
| 200 |
|
|---|
| 201 |
enum v4l2_memory { |
|---|
| 202 |
V4L2_MEMORY_MMAP = 1, |
|---|
| 203 |
V4L2_MEMORY_USERPTR = 2, |
|---|
| 204 |
V4L2_MEMORY_OVERLAY = 3, |
|---|
| 205 |
} |
|---|
| 206 |
|
|---|
| 207 |
/* see also http://vektor.theorem.ca/graphics/ycbcr/ */ |
|---|
| 208 |
enum v4l2_colorspace { |
|---|
| 209 |
/* ITU-R 601 -- broadcast NTSC/PAL */ |
|---|
| 210 |
V4L2_COLORSPACE_SMPTE170M = 1, |
|---|
| 211 |
|
|---|
| 212 |
/* 1125-Line (US) HDTV */ |
|---|
| 213 |
V4L2_COLORSPACE_SMPTE240M = 2, |
|---|
| 214 |
|
|---|
| 215 |
/* HD and modern captures. */ |
|---|
| 216 |
V4L2_COLORSPACE_REC709 = 3, |
|---|
| 217 |
|
|---|
| 218 |
/* broken BT878 extents (601, luma range 16-253 instead of 16-235) */ |
|---|
| 219 |
V4L2_COLORSPACE_BT878 = 4, |
|---|
| 220 |
|
|---|
| 221 |
/* These should be useful. Assume 601 extents. */ |
|---|
| 222 |
V4L2_COLORSPACE_470_SYSTEM_M = 5, |
|---|
| 223 |
V4L2_COLORSPACE_470_SYSTEM_BG = 6, |
|---|
| 224 |
|
|---|
| 225 |
/* I know there will be cameras that send this. So, this is |
|---|
| 226 |
* unspecified chromaticities and full 0-255 on each of the |
|---|
| 227 |
* Y'CbCr components |
|---|
| 228 |
*/ |
|---|
| 229 |
V4L2_COLORSPACE_JPEG = 7, |
|---|
| 230 |
|
|---|
| 231 |
/* For RGB colourspaces, this is probably a good start. */ |
|---|
| 232 |
V4L2_COLORSPACE_SRGB = 8, |
|---|
| 233 |
} |
|---|
| 234 |
|
|---|
| 235 |
enum v4l2_priority { |
|---|
| 236 |
V4L2_PRIORITY_UNSET = 0, /* not initialized */ |
|---|
| 237 |
V4L2_PRIORITY_BACKGROUND = 1, |
|---|
| 238 |
V4L2_PRIORITY_INTERACTIVE = 2, |
|---|
| 239 |
V4L2_PRIORITY_RECORD = 3, |
|---|
| 240 |
V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE, |
|---|
| 241 |
} |
|---|
| 242 |
|
|---|
| 243 |
struct v4l2_rect { |
|---|
| 244 |
__s32 left; |
|---|
| 245 |
__s32 top; |
|---|
| 246 |
__s32 width; |
|---|
| 247 |
__s32 height; |
|---|
| 248 |
} |
|---|
| 249 |
|
|---|
| 250 |
struct v4l2_fract { |
|---|
| 251 |
__u32 numerator; |
|---|
| 252 |
__u32 denominator; |
|---|
| 253 |
} |
|---|
| 254 |
|
|---|
| 255 |
/* |
|---|
| 256 |
* D R I V E R C A P A B I L I T I E S |
|---|
| 257 |
*/ |
|---|
| 258 |
struct v4l2_capability { |
|---|
| 259 |
__u8[16] driver; /* i.e. "bttv" */ |
|---|
| 260 |
__u8[32] card; /* i.e. "Hauppauge WinTV" */ |
|---|
| 261 |
__u8[32] bus_info; /* "PCI:" + pci_name(pci_dev) */ |
|---|
| 262 |
__u32 version_; /* should use KERNEL_VERSION() */ |
|---|
| 263 |
__u32 capabilities; /* Device capabilities */ |
|---|
| 264 |
__u32[4] reserved; |
|---|
| 265 |
} |
|---|
| 266 |
|
|---|
| 267 |
/* Values for 'capabilities' field */ |
|---|
| 268 |
const V4L2_CAP_VIDEO_CAPTURE = 0x00000001; /* Is a video capture device */ |
|---|
| 269 |
const V4L2_CAP_VIDEO_OUTPUT = 0x00000002; /* Is a video output device */ |
|---|
| 270 |
const V4L2_CAP_VIDEO_OVERLAY = 0x00000004; /* Can do video overlay */ |
|---|
| 271 |
const V4L2_CAP_VBI_CAPTURE = 0x00000010; /* Is a raw VBI capture device */ |
|---|
| 272 |
const V4L2_CAP_VBI_OUTPUT = 0x00000020; /* Is a raw VBI output device */ |
|---|
| 273 |
const V4L2_CAP_SLICED_VBI_CAPTURE = 0x00000040; /* Is a sliced VBI capture device */ |
|---|
| 274 |
const V4L2_CAP_SLICED_VBI_OUTPUT = 0x00000080; /* Is a sliced VBI output device */ |
|---|
| 275 |
const V4L2_CAP_RDS_CAPTURE = 0x00000100; /* RDS data capture */ |
|---|
| 276 |
const V4L2_CAP_VIDEO_OUTPUT_OVERLAY = 0x00000200; /* Can do video output overlay */ |
|---|
| 277 |
const V4L2_CAP_HW_FREQ_SEEK = 0x00000400; /* Can do hardware frequency seek */ |
|---|
| 278 |
|
|---|
| 279 |
const V4L2_CAP_TUNER = 0x00010000; /* has a tuner */ |
|---|
| 280 |
const V4L2_CAP_AUDIO = 0x00020000; /* has audio support */ |
|---|
| 281 |
const V4L2_CAP_RADIO = 0x00040000; /* is a radio device */ |
|---|
| 282 |
|
|---|
| 283 |
const V4L2_CAP_READWRITE = 0x01000000; /* read/write systemcalls */ |
|---|
| 284 |
const V4L2_CAP_ASYNCIO = 0x02000000; /* async I/O */ |
|---|
| 285 |
const V4L2_CAP_STREAMING = 0x04000000; /* streaming I/O ioctls */ |
|---|
| 286 |
|
|---|
| 287 |
/* |
|---|
| 288 |
* V I D E O I M A G E F O R M A T |
|---|
| 289 |
*/ |
|---|
| 290 |
struct v4l2_pix_format { |
|---|
| 291 |
__u32 width; |
|---|
| 292 |
__u32 height; |
|---|
| 293 |
__u32 pixelformat; |
|---|
| 294 |
/*enum*/ v4l2_field field; |
|---|
| 295 |
__u32 bytesperline; /* for padding, zero if unused */ |
|---|
| 296 |
__u32 sizeimage; |
|---|
| 297 |
/*enum*/ v4l2_colorspace colorspace; |
|---|
| 298 |
__u32 priv; /* private data, depends on pixelformat */ |
|---|
| 299 |
} |
|---|
| 300 |
|
|---|
| 301 |
/* Pixel format FOURCC depth Description */ |
|---|
| 302 |
const V4L2_PIX_FMT_RGB332 = v4l2_fourcc!('R', 'G', 'B', '1'); /* 8 RGB-3-3-2 */ |
|---|
| 303 |
const V4L2_PIX_FMT_RGB444 = v4l2_fourcc!('R', '4', '4', '4'); /* 16 xxxxrrrr ggggbbbb */ |
|---|
| 304 |
const V4L2_PIX_FMT_RGB555 = v4l2_fourcc!('R', 'G', 'B', 'O'); /* 16 RGB-5-5-5 */ |
|---|
| 305 |
const V4L2_PIX_FMT_RGB565 = v4l2_fourcc!('R', 'G', 'B', 'P'); /* 16 RGB-5-6-5 */ |
|---|
| 306 |
const V4L2_PIX_FMT_RGB555X = v4l2_fourcc!('R', 'G', 'B', 'Q'); /* 16 RGB-5-5-5 BE */ |
|---|
| 307 |
const V4L2_PIX_FMT_RGB565X = v4l2_fourcc!('R', 'G', 'B', 'R'); /* 16 RGB-5-6-5 BE */ |
|---|
| 308 |
const V4L2_PIX_FMT_BGR24 = v4l2_fourcc!('B', 'G', 'R', '3'); /* 24 BGR-8-8-8 */ |
|---|
| 309 |
const V4L2_PIX_FMT_RGB24 = v4l2_fourcc!('R', 'G', 'B', '3'); /* 24 RGB-8-8-8 */ |
|---|
| 310 |
const V4L2_PIX_FMT_BGR32 = v4l2_fourcc!('B', 'G', 'R', '4'); /* 32 BGR-8-8-8-8 */ |
|---|
| 311 |
const V4L2_PIX_FMT_RGB32 = v4l2_fourcc!('R', 'G', 'B', '4'); /* 32 RGB-8-8-8-8 */ |
|---|
| 312 |
const V4L2_PIX_FMT_GREY = v4l2_fourcc!('G', 'R', 'E', 'Y'); /* 8 Greyscale */ |
|---|
| 313 |
const V4L2_PIX_FMT_Y16 = v4l2_fourcc!('Y', '1', '6', ' '); /* 16 Greyscale */ |
|---|
| 314 |
const V4L2_PIX_FMT_PAL8 = v4l2_fourcc!('P', 'A', 'L', '8'); /* 8 8-bit palette */ |
|---|
| 315 |
const V4L2_PIX_FMT_YVU410 = v4l2_fourcc!('Y', 'V', 'U', '9'); /* 9 YVU 4:1:0 */ |
|---|
| 316 |
const V4L2_PIX_FMT_YVU420 = v4l2_fourcc!('Y', 'V', '1', '2'); /* 12 YVU 4:2:0 */ |
|---|
| 317 |
const V4L2_PIX_FMT_YUYV = v4l2_fourcc!('Y', 'U', 'Y', 'V'); /* 16 YUV 4:2:2 */ |
|---|
| 318 |
const V4L2_PIX_FMT_UYVY = v4l2_fourcc!('U', 'Y', 'V', 'Y'); /* 16 YUV 4:2:2 */ |
|---|
| 319 |
const V4L2_PIX_FMT_VYUY = v4l2_fourcc!('V', 'Y', 'U', 'Y'); /* 16 YUV 4:2:2 */ |
|---|
| 320 |
const V4L2_PIX_FMT_YUV422P = v4l2_fourcc!('4', '2', '2', 'P'); /* 16 YVU422 planar */ |
|---|
| 321 |
const V4L2_PIX_FMT_YUV411P = v4l2_fourcc!('4', '1', '1', 'P'); /* 16 YVU411 planar */ |
|---|
| 322 |
const V4L2_PIX_FMT_Y41P = v4l2_fourcc!('Y', '4', '1', 'P'); /* 12 YUV 4:1:1 */ |
|---|
| 323 |
const V4L2_PIX_FMT_YUV444 = v4l2_fourcc!('Y', '4', '4', '4'); /* 16 xxxxyyyy uuuuvvvv */ |
|---|
| 324 |
const V4L2_PIX_FMT_YUV555 = v4l2_fourcc!('Y', 'U', 'V', 'O'); /* 16 YUV-5-5-5 */ |
|---|
| 325 |
const V4L2_PIX_FMT_YUV565 = v4l2_fourcc!('Y', 'U', 'V', 'P'); /* 16 YUV-5-6-5 */ |
|---|
| 326 |
const V4L2_PIX_FMT_YUV32 = v4l2_fourcc!('Y', 'U', 'V', '4'); /* 32 YUV-8-8-8-8 */ |
|---|
| 327 |
|
|---|
| 328 |
/* two planes -- one Y, one Cr + Cb interleaved */ |
|---|
| 329 |
const V4L2_PIX_FMT_NV12 = v4l2_fourcc!('N', 'V', '1', '2'); /* 12 Y/CbCr 4:2:0 */ |
|---|
| 330 |
const V4L2_PIX_FMT_NV21 = v4l2_fourcc!('N', 'V', '2', '1'); /* 12 Y/CrCb 4:2:0 */ |
|---|
| 331 |
const V4L2_PIX_FMT_NV16 = v4l2_fourcc!('N', 'V', '1', '6'); /* 16 Y/CbCr 4:2:2 */ |
|---|
| 332 |
const V4L2_PIX_FMT_NV61 = v4l2_fourcc!('N', 'V', '6', '1'); /* 16 Y/CrCb 4:2:2 */ |
|---|
| 333 |
|
|---|
| 334 |
/* The following formats are not defined in the V4L2 specification */ |
|---|
| 335 |
const V4L2_PIX_FMT_YUV410 = v4l2_fourcc!('Y', 'U', 'V', '9'); /* 9 YUV 4:1:0 */ |
|---|
| 336 |
const V4L2_PIX_FMT_YUV420 = v4l2_fourcc!('Y', 'U', '1', '2'); /* 12 YUV 4:2:0 */ |
|---|
| 337 |
const V4L2_PIX_FMT_YYUV = v4l2_fourcc!('Y', 'Y', 'U', 'V'); /* 16 YUV 4:2:2 */ |
|---|
| 338 |
const V4L2_PIX_FMT_HI240 = v4l2_fourcc!('H', 'I', '2', '4'); /* 8 8-bit color */ |
|---|
| 339 |
const V4L2_PIX_FMT_HM12 = v4l2_fourcc!('H', 'M', '1', '2'); /* 8 YUV 4:2:0 16x16 macroblocks */ |
|---|
| 340 |
|
|---|
| 341 |
/* see http://www.siliconimaging.com/RGB%20Bayer.htm */ |
|---|
| 342 |
const V4L2_PIX_FMT_SBGGR8 = v4l2_fourcc!('B', 'A', '8', '1'); /* 8 BGBG.. GRGR.. */ |
|---|
| 343 |
const V4L2_PIX_FMT_SGBRG8 = v4l2_fourcc!('G', 'B', 'R', 'G'); /* 8 GBGB.. RGRG.. */ |
|---|
| 344 |
/* |
|---|
| 345 |
* 10bit raw bayer, expanded to 16 bits |
|---|
| 346 |
* xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... |
|---|
| 347 |
*/ |
|---|
| 348 |
const V4L2_PIX_FMT_SGRBG10 = v4l2_fourcc!('B', 'A', '1', '0'); |
|---|
| 349 |
/* 10bit raw bayer DPCM compressed to 8 bits */ |
|---|
| 350 |
const V4L2_PIX_FMT_SGRBG10DPCM8 = v4l2_fourcc!('B', 'D', '1', '0'); |
|---|
| 351 |
const V4L2_PIX_FMT_SBGGR16 = v4l2_fourcc!('B', 'Y', 'R', '2'); /* 16 BGBG.. GRGR.. */ |
|---|
| 352 |
|
|---|
| 353 |
/* compressed formats */ |
|---|
| 354 |
const V4L2_PIX_FMT_MJPEG = v4l2_fourcc!('M', 'J', 'P', 'G'); /* Motion-JPEG */ |
|---|
| 355 |
const V4L2_PIX_FMT_JPEG = v4l2_fourcc!('J', 'P', 'E', 'G'); /* JFIF JPEG */ |
|---|
| 356 |
const V4L2_PIX_FMT_DV = v4l2_fourcc!('d', 'v', 's', 'd'); /* 1394 */ |
|---|
| 357 |
const V4L2_PIX_FMT_MPEG = v4l2_fourcc!('M', 'P', 'E', 'G'); /* MPEG-1/2/4 */ |
|---|
| 358 |
|
|---|
| 359 |
/* Vendor-specific formats */ |
|---|
| 360 |
const V4L2_PIX_FMT_WNVA = v4l2_fourcc!('W', 'N', 'V', 'A'); /* Winnov hw compress */ |
|---|
| 361 |
const V4L2_PIX_FMT_SN9C10X = v4l2_fourcc!('S', '9', '1', '0'); /* SN9C10x compression */ |
|---|
| 362 |
const V4L2_PIX_FMT_PWC1 = v4l2_fourcc!('P', 'W', 'C', '1'); /* pwc older webcam */ |
|---|
| 363 |
const V4L2_PIX_FMT_PWC2 = v4l2_fourcc!('P', 'W', 'C', '2'); /* pwc newer webcam */ |
|---|
| 364 |
const V4L2_PIX_FMT_ET61X251 = v4l2_fourcc!('E', '6', '2', '5'); /* ET61X251 compression */ |
|---|
| 365 |
const V4L2_PIX_FMT_SPCA501 = v4l2_fourcc!('S', '5', '0', '1'); /* YUYV per line */ |
|---|
| 366 |
const V4L2_PIX_FMT_SPCA505 = v4l2_fourcc!('S', '5', '0', '5'); /* YYUV per line */ |
|---|
| 367 |
const V4L2_PIX_FMT_SPCA508 = v4l2_fourcc!('S', '5', '0', '8'); /* YUVY per line */ |
|---|
| 368 |
const V4L2_PIX_FMT_SPCA561 = v4l2_fourcc!('S', '5', '6', '1'); /* compressed GBRG bayer */ |
|---|
| 369 |
const V4L2_PIX_FMT_PAC207 = v4l2_fourcc!('P', '2', '0', '7'); /* compressed BGGR bayer */ |
|---|
| 370 |
const V4L2_PIX_FMT_MR97310A = v4l2_fourcc!('M', '3', '1', '0'); /* compressed BGGR bayer */ |
|---|
| 371 |
const V4L2_PIX_FMT_SQ905C = v4l2_fourcc!('9', '0', '5', 'C'); /* compressed RGGB bayer */ |
|---|
| 372 |
const V4L2_PIX_FMT_PJPG = v4l2_fourcc!('P', 'J', 'P', 'G'); /* Pixart 73xx JPEG */ |
|---|
| 373 |
const V4L2_PIX_FMT_YVYU = v4l2_fourcc!('Y', 'V', 'Y', 'U'); /* 16 YVU 4:2:2 */ |
|---|
| 374 |
|
|---|
| 375 |
/* |
|---|
| 376 |
* F O R M A T E N U M E R A T I O N |
|---|
| 377 |
*/ |
|---|
| 378 |
struct v4l2_fmtdesc { |
|---|
| 379 |
__u32 index; /* Format number */ |
|---|
| 380 |
/*enum*/ v4l2_buf_type type; /* buffer type */ |
|---|
| 381 |
__u32 flags; |
|---|
| 382 |
__u8[32] description; /* Description string */ |
|---|
| 383 |
__u32 pixelformat; /* Format fourcc */ |
|---|
| 384 |
__u32[4] reserved; |
|---|
| 385 |
} |
|---|
| 386 |
|
|---|
| 387 |
const V4L2_FMT_FLAG_COMPRESSED = 0x0001; |
|---|
| 388 |
|
|---|
| 389 |
//#if 1 |
|---|
| 390 |
/* Experimental Frame Size and frame rate enumeration */ |
|---|
| 391 |
/* |
|---|
| 392 |
* F R A M E S I Z E E N U M E R A T I O N |
|---|
| 393 |
*/ |
|---|
| 394 |
enum v4l2_frmsizetypes { |
|---|
| 395 |
V4L2_FRMSIZE_TYPE_DISCRETE = 1, |
|---|
| 396 |
V4L2_FRMSIZE_TYPE_CONTINUOUS = 2, |
|---|
| 397 |
V4L2_FRMSIZE_TYPE_STEPWISE = 3, |
|---|
| 398 |
} |
|---|
| 399 |
|
|---|
| 400 |
struct v4l2_frmsize_discrete { |
|---|
| 401 |
__u32 width; /* Frame width [pixel] */ |
|---|
| 402 |
__u32 height; /* Frame height [pixel] */ |
|---|
| 403 |
} |
|---|
| 404 |
|
|---|
| 405 |
struct v4l2_frmsize_stepwise { |
|---|
| 406 |
__u32 min_width; /* Minimum frame width [pixel] */ |
|---|
| 407 |
__u32 max_width; /* Maximum frame width [pixel] */ |
|---|
| 408 |
__u32 step_width; /* Frame width step size [pixel] */ |
|---|
| 409 |
__u32 min_height; /* Minimum frame height [pixel] */ |
|---|
| 410 |
__u32 max_height; /* Maximum frame height [pixel] */ |
|---|
| 411 |
__u32 step_height; /* Frame height step size [pixel] */ |
|---|
| 412 |
} |
|---|
| 413 |
|
|---|
| 414 |
struct v4l2_frmsizeenum { |
|---|
| 415 |
__u32 index; /* Frame size number */ |
|---|
| 416 |
__u32 pixel_format; /* Pixel format */ |
|---|
| 417 |
__u32 type; /* Frame size type the device supports. */ |
|---|
| 418 |
|
|---|
| 419 |
union { /* Frame size */ |
|---|
| 420 |
/*struct*/ v4l2_frmsize_discrete discrete; |
|---|
| 421 |
/*struct*/ v4l2_frmsize_stepwise stepwise; |
|---|
| 422 |
} |
|---|
| 423 |
|
|---|
| 424 |
__u32[2] reserved; /* Reserved space for future use */ |
|---|
| 425 |
} |
|---|
| 426 |
|
|---|
| 427 |
/* |
|---|
| 428 |
* F R A M E R A T E E N U M E R A T I O N |
|---|
| 429 |
*/ |
|---|
| 430 |
enum v4l2_frmivaltypes { |
|---|
| 431 |
V4L2_FRMIVAL_TYPE_DISCRETE = 1, |
|---|
| 432 |
V4L2_FRMIVAL_TYPE_CONTINUOUS = 2, |
|---|
| 433 |
V4L2_FRMIVAL_TYPE_STEPWISE = 3, |
|---|
| 434 |
} |
|---|
| 435 |
|
|---|
| 436 |
struct v4l2_frmival_stepwise { |
|---|
| 437 |
/*struct*/ v4l2_fract min; /* Minimum frame interval [s] */ |
|---|
| 438 |
/*struct*/ v4l2_fract max; /* Maximum frame interval [s] */ |
|---|
| 439 |
/*struct*/ v4l2_fract step; /* Frame interval step size [s] */ |
|---|
| 440 |
} |
|---|
| 441 |
|
|---|
| 442 |
struct v4l2_frmivalenum { |
|---|
| 443 |
__u32 index; /* Frame format index */ |
|---|
| 444 |
__u32 pixel_format; /* Pixel format */ |
|---|
| 445 |
__u32 width; /* Frame width */ |
|---|
| 446 |
__u32 height; /* Frame height */ |
|---|
| 447 |
__u32 type; /* Frame interval type the device supports. */ |
|---|
| 448 |
|
|---|
| 449 |
union { /* Frame interval */ |
|---|
| 450 |
/*struct*/ v4l2_fract discrete; |
|---|
| 451 |
/*struct*/ v4l2_frmival_stepwise stepwise; |
|---|
| 452 |
} |
|---|
| 453 |
|
|---|
| 454 |
__u32[2] reserved; /* Reserved space for future use */ |
|---|
| 455 |
} |
|---|
| 456 |
//#endif |
|---|
| 457 |
|
|---|
| 458 |
/* |
|---|
| 459 |
* T I M E C O D E |
|---|
| 460 |
*/ |
|---|
| 461 |
struct v4l2_timecode { |
|---|
| 462 |
__u32 type; |
|---|
| 463 |
__u32 flags; |
|---|
| 464 |
__u8 frames; |
|---|
| 465 |
__u8 seconds; |
|---|
| 466 |
__u8 minutes; |
|---|
| 467 |
__u8 hours; |
|---|
| 468 |
__u8[4] userbits; |
|---|
| 469 |
} |
|---|
| 470 |
|
|---|
| 471 |
/* Type */ |
|---|
| 472 |
const V4L2_TC_TYPE_24FPS = 1; |
|---|
| 473 |
const V4L2_TC_TYPE_25FPS = 2; |
|---|
| 474 |
const V4L2_TC_TYPE_30FPS = 3; |
|---|
| 475 |
const V4L2_TC_TYPE_50FPS = 4; |
|---|
| 476 |
const V4L2_TC_TYPE_60FPS = 5; |
|---|
| 477 |
|
|---|
| 478 |
/* Flags */ |
|---|
| 479 |
const V4L2_TC_FLAG_DROPFRAME = 0x0001; /* "drop-frame" mode */ |
|---|
| 480 |
const V4L2_TC_FLAG_COLORFRAME = 0x0002; |
|---|
| 481 |
const V4L2_TC_USERBITS_field = 0x000C; |
|---|
| 482 |
const V4L2_TC_USERBITS_USERDEFINED = 0x0000; |
|---|
| 483 |
const V4L2_TC_USERBITS_8BITCHARS = 0x0008; |
|---|
| 484 |
/* The above is based on SMPTE timecodes */ |
|---|
| 485 |
|
|---|
| 486 |
struct v4l2_jpegcompression { |
|---|
| 487 |
int quality; |
|---|
| 488 |
|
|---|
| 489 |
int APPn; /* Number of APP segment to be written, |
|---|
| 490 |
* must be 0..15 */ |
|---|
| 491 |
int APP_len; /* Length of data in JPEG APPn segment */ |
|---|
| 492 |
char[60] APP_data; /* Data in the JPEG APPn segment. */ |
|---|
| 493 |
|
|---|
| 494 |
int COM_len; /* Length of data in JPEG COM segment */ |
|---|
| 495 |
char[60] COM_data; /* Data in JPEG COM segment */ |
|---|
| 496 |
|
|---|
| 497 |
__u32 jpeg_markers; /* Which markers should go into the JPEG |
|---|
| 498 |
* output. Unless you exactly know what |
|---|
| 499 |
* you do, leave them untouched. |
|---|
| 500 |
* Inluding less markers will make the |
|---|
| 501 |
* resulting code smaller, but there will |
|---|
| 502 |
* be fewer aplications which can read it. |
|---|
| 503 |
* The presence of the APP and COM marker |
|---|
| 504 |
* is influenced by APP_len and COM_len |
|---|
| 505 |
* ONLY, not by this property! */ |
|---|
| 506 |
|
|---|
| 507 |
const V4L2_JPEG_MARKER_DHT = (1<<3) ; /* Define Huffman Tables */ |
|---|
| 508 |
const V4L2_JPEG_MARKER_DQT = (1<<4) ; /* Define Quantization Tables */ |
|---|
| 509 |
const V4L2_JPEG_MARKER_DRI = (1<<5); /* Define Restart Interval */ |
|---|
| 510 |
const V4L2_JPEG_MARKER_COM = (1<<6); /* Comment segment */ |
|---|
| 511 |
const V4L2_JPEG_MARKER_APP = (1<<7); /* App segment, driver will |
|---|
| 512 |
* allways use APP0 */ |
|---|
| 513 |
} |
|---|
| 514 |
|
|---|
| 515 |
/* |
|---|
| 516 |
* M E M O R Y - M A P P I N G B U F F E R S |
|---|
| 517 |
*/ |
|---|
| 518 |
struct v4l2_requestbuffers { |
|---|
| 519 |
__u32 count; |
|---|
| 520 |
/*enum*/ v4l2_buf_type type; |
|---|
| 521 |
/*enum*/ v4l2_memory memory; |
|---|
| 522 |
__u32[2] reserved; |
|---|
| 523 |
} |
|---|
| 524 |
|
|---|
| 525 |
union M { |
|---|
| 526 |
__u32 offset; |
|---|
| 527 |
size_t userptr; |
|---|
| 528 |
} |
|---|
| 529 |
|
|---|
| 530 |
struct v4l2_buffer { |
|---|
| 531 |
__u32 index; |
|---|
| 532 |
/*enum*/ v4l2_buf_type type; |
|---|
| 533 |
__u32 bytesused; |
|---|
| 534 |
__u32 flags; |
|---|
| 535 |
/*enum*/ v4l2_field field; |
|---|
| 536 |
/*struct*/ timeval timestamp; |
|---|
| 537 |
/*struct*/ v4l2_timecode timecode; |
|---|
| 538 |
__u32 sequence; |
|---|
| 539 |
|
|---|
| 540 |
/* memory location */ |
|---|
| 541 |
/*enum*/ v4l2_memory memory; |
|---|
| 542 |
/*union*/ M /*{ |
|---|
| 543 |
__u32 offset; |
|---|
| 544 |
size_t userptr; |
|---|
| 545 |
}*/ m; |
|---|
| 546 |
__u32 length; |
|---|
| 547 |
__u32 input; |
|---|
| 548 |
__u32 reserved; |
|---|
| 549 |
} |
|---|
| 550 |
|
|---|
| 551 |
/* Flags for 'flags' field */ |
|---|
| 552 |
const V4L2_BUF_FLAG_MAPPED = 0x0001; /* Buffer is mapped (flag) */ |
|---|
| 553 |
const V4L2_BUF_FLAG_QUEUED = 0x0002; /* Buffer is queued for processing */ |
|---|
| 554 |
const V4L2_BUF_FLAG_DONE = 0x0004; /* Buffer is ready */ |
|---|
| 555 |
const V4L2_BUF_FLAG_KEYFRAME = 0x0008; /* Image is a keyframe (I-frame) */ |
|---|
| 556 |
const V4L2_BUF_FLAG_PFRAME = 0x0010; /* Image is a P-frame */ |
|---|
| 557 |
const V4L2_BUF_FLAG_BFRAME = 0x0020; /* Image is a B-frame */ |
|---|
| 558 |
const V4L2_BUF_FLAG_TIMECODE = 0x0100; /* timecode field is valid */ |
|---|
| 559 |
const V4L2_BUF_FLAG_INPUT = 0x0200; /* input field is valid */ |
|---|
| 560 |
|
|---|
| 561 |
/* |
|---|
| 562 |
* O V E R L A Y P R E V I E W |
|---|
| 563 |
*/ |
|---|
| 564 |
struct v4l2_framebuffer { |
|---|
| 565 |
__u32 capability; |
|---|
| 566 |
__u32 flags; |
|---|
| 567 |
/* FIXME: in theory we should pass something like PCI device + memory |
|---|
| 568 |
* region + offset instead of some physical address */ |
|---|
| 569 |
void *base; |
|---|
| 570 |
/*struct*/ v4l2_pix_format fmt; |
|---|
| 571 |
} |
|---|
| 572 |
/* Flags for the 'capability' field. Read only */ |
|---|
| 573 |
const V4L2_FBUF_CAP_EXTERNOVERLAY = 0x0001; |
|---|
| 574 |
const V4L2_FBUF_CAP_CHROMAKEY = 0x0002; |
|---|
| 575 |
const V4L2_FBUF_CAP_LIST_CLIPPING = 0x0004; |
|---|
| 576 |
const V4L2_FBUF_CAP_BITMAP_CLIPPING = 0x0008; |
|---|
| 577 |
const V4L2_FBUF_CAP_LOCAL_ALPHA = 0x0010; |
|---|
| 578 |
const V4L2_FBUF_CAP_GLOBAL_ALPHA = 0x0020; |
|---|
| 579 |
const V4L2_FBUF_CAP_LOCAL_INV_ALPHA = 0x0040; |
|---|
| 580 |
/* Flags for the 'flags' field. */ |
|---|
| 581 |
const V4L2_FBUF_FLAG_PRIMARY = 0x0001; |
|---|
| 582 |
const V4L2_FBUF_FLAG_OVERLAY = 0x0002; |
|---|
| 583 |
const V4L2_FBUF_FLAG_CHROMAKEY = 0x0004; |
|---|
| 584 |
const V4L2_FBUF_FLAG_LOCAL_ALPHA = 0x0008; |
|---|
| 585 |
const V4L2_FBUF_FLAG_GLOBAL_ALPHA = 0x0010; |
|---|
| 586 |
const V4L2_FBUF_FLAG_LOCAL_INV_ALPHA = 0x0020; |
|---|
| 587 |
|
|---|
| 588 |
struct v4l2_clip { |
|---|
| 589 |
/*struct*/ v4l2_rect c; |
|---|
| 590 |
/*struct*/ v4l2_clip* next; |
|---|
| 591 |
} |
|---|
| 592 |
|
|---|
| 593 |
struct v4l2_window { |
|---|
| 594 |
/*struct*/ v4l2_rect w; |
|---|
| 595 |
/*enum*/ v4l2_field field; |
|---|
| 596 |
__u32 chromakey; |
|---|
| 597 |
/*struct*/ v4l2_clip* clips; |
|---|
| 598 |
__u32 clipcount; |
|---|
| 599 |
void* bitmap; |
|---|
| 600 |
__u8 global_alpha; |
|---|
| 601 |
} |
|---|
| 602 |
|
|---|
| 603 |
/* |
|---|
| 604 |
* C A P T U R E P A R A M E T E R S |
|---|
| 605 |
*/ |
|---|
| 606 |
struct v4l2_captureparm { |
|---|
| 607 |
__u32 capability; /* Supported modes */ |
|---|
| 608 |
__u32 capturemode; /* Current mode */ |
|---|
| 609 |
/*struct*/ v4l2_fract timeperframe; /* Time per frame in .1us units */ |
|---|
| 610 |
__u32 extendedmode; /* Driver-specific extensions */ |
|---|
| 611 |
__u32 readbuffers; /* # of buffers for read */ |
|---|
| 612 |
__u32[4] reserved; |
|---|
| 613 |
} |
|---|
| 614 |
|
|---|
| 615 |
/* Flags for 'capability' and 'capturemode' fields */ |
|---|
| 616 |
const V4L2_MODE_HIGHQUALITY = 0x0001; /* High quality imaging mode */ |
|---|
| 617 |
const V4L2_CAP_TIMEPERFRAME = 0x1000; /* timeperframe field is supported */ |
|---|
| 618 |
|
|---|
| 619 |
struct v4l2_outputparm { |
|---|
| 620 |
__u32 capability; /* Supported modes */ |
|---|
| 621 |
__u32 outputmode; /* Current mode */ |
|---|
| 622 |
/*struct*/ v4l2_fract timeperframe; /* Time per frame in seconds */ |
|---|
| 623 |
__u32 extendedmode; /* Driver-specific extensions */ |
|---|
| 624 |
__u32 writebuffers; /* # of buffers for write */ |
|---|
| 625 |
__u32[4] reserved; |
|---|
| 626 |
} |
|---|
| 627 |
|
|---|
| 628 |
/* |
|---|
| 629 |
* I N P U T I M A G E C R O P P I N G |
|---|
| 630 |
*/ |
|---|
| 631 |
struct v4l2_cropcap { |
|---|
| 632 |
/*enum*/ v4l2_buf_type type; |
|---|
| 633 |
/*struct*/ v4l2_rect bounds; |
|---|
| 634 |
/*struct*/ v4l2_rect defrect; |
|---|
| 635 |
/*struct*/ v4l2_fract pixelaspect; |
|---|
| 636 |
} |
|---|
| 637 |
|
|---|
| 638 |
struct v4l2_crop { |
|---|
| 639 |
/*enum*/ v4l2_buf_type type; |
|---|
| 640 |
/*struct*/ v4l2_rect c; |
|---|
| 641 |
} |
|---|
| 642 |
|
|---|
| 643 |
/* |
|---|
| 644 |
* A N A L O G V I D E O S T A N D A R D |
|---|
| 645 |
*/ |
|---|
| 646 |
|
|---|
| 647 |
typedef __u64 v4l2_std_id; |
|---|
| 648 |
|
|---|
| 649 |
/* one bit for each */ |
|---|
| 650 |
const V4L2_STD_PAL_B = (cast(v4l2_std_id)0x00000001); |
|---|
| 651 |
const V4L2_STD_PAL_B1 = (cast(v4l2_std_id)0x00000002); |
|---|
| 652 |
const V4L2_STD_PAL_G = (cast(v4l2_std_id)0x00000004); |
|---|
| 653 |
const V4L2_STD_PAL_H = (cast(v4l2_std_id)0x00000008); |
|---|
| 654 |
const V4L2_STD_PAL_I = (cast(v4l2_std_id)0x00000010); |
|---|
| 655 |
const V4L2_STD_PAL_D = (cast(v4l2_std_id)0x00000020); |
|---|
| 656 |
const V4L2_STD_PAL_D1 = (cast(v4l2_std_id)0x00000040); |
|---|
| 657 |
const V4L2_STD_PAL_K = (cast(v4l2_std_id)0x00000080); |
|---|
| 658 |
|
|---|
| 659 |
const V4L2_STD_PAL_M = (cast(v4l2_std_id)0x00000100); |
|---|
| 660 |
const V4L2_STD_PAL_N = (cast(v4l2_std_id)0x00000200); |
|---|
| 661 |
const V4L2_STD_PAL_Nc = (cast(v4l2_std_id)0x00000400); |
|---|
| 662 |
const V4L2_STD_PAL_60 = (cast(v4l2_std_id)0x00000800); |
|---|
| 663 |
|
|---|
| 664 |
const V4L2_STD_NTSC_M = (cast(v4l2_std_id)0x00001000); |
|---|
| 665 |
const V4L2_STD_NTSC_M_JP = (cast(v4l2_std_id)0x00002000); |
|---|
| 666 |
const V4L2_STD_NTSC_443 = (cast(v4l2_std_id)0x00004000); |
|---|
| 667 |
const V4L2_STD_NTSC_M_KR = (cast(v4l2_std_id)0x00008000); |
|---|
| 668 |
|
|---|
| 669 |
const V4L2_STD_SECAM_B = (cast(v4l2_std_id)0x00010000); |
|---|
| 670 |
const V4L2_STD_SECAM_D = (cast(v4l2_std_id)0x00020000); |
|---|
| 671 |
const V4L2_STD_SECAM_G = (cast(v4l2_std_id)0x00040000); |
|---|
| 672 |
const V4L2_STD_SECAM_H = (cast(v4l2_std_id)0x00080000); |
|---|
| 673 |
const V4L2_STD_SECAM_K = (cast(v4l2_std_id)0x00100000); |
|---|
| 674 |
const V4L2_STD_SECAM_K1 = (cast(v4l2_std_id)0x00200000); |
|---|
| 675 |
const V4L2_STD_SECAM_L = (cast(v4l2_std_id)0x00400000); |
|---|
| 676 |
const V4L2_STD_SECAM_LC = (cast(v4l2_std_id)0x00800000); |
|---|
| 677 |
|
|---|
| 678 |
/* ATSC/HDTV */ |
|---|
| 679 |
const V4L2_STD_ATSC_8_VSB = (cast(v4l2_std_id)0x01000000); |
|---|
| 680 |
const V4L2_STD_ATSC_16_VSB = (cast(v4l2_std_id)0x02000000); |
|---|
| 681 |
|
|---|
| 682 |
/* FIXME: |
|---|
| 683 |
Although std_id is 64 bits, there is an issue on PPC32 architecture that |
|---|
| 684 |
makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding |
|---|
| 685 |
this value to 32 bits. |
|---|
| 686 |
As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide), |
|---|
| 687 |
it should work fine. However, if needed to add more than two standards, |
|---|
| 688 |
v4l2-common.c should be fixed. |
|---|
| 689 |
*/ |
|---|
| 690 |
|
|---|
| 691 |
/* some common needed stuff */ |
|---|
| 692 |
const V4L2_STD_PAL_BG = (V4L2_STD_PAL_B | |
|---|
| 693 |
V4L2_STD_PAL_B1 | |
|---|
| 694 |
V4L2_STD_PAL_G); |
|---|
| 695 |
const V4L2_STD_PAL_DK = (V4L2_STD_PAL_D | |
|---|
| 696 |
V4L2_STD_PAL_D1 | |
|---|
| 697 |
V4L2_STD_PAL_K); |
|---|
| 698 |
const V4L2_STD_PAL = (V4L2_STD_PAL_BG | |
|---|
| 699 |
V4L2_STD_PAL_DK | |
|---|
| 700 |
V4L2_STD_PAL_H | |
|---|
| 701 |
V4L2_STD_PAL_I); |
|---|
| 702 |
const V4L2_STD_NTSC = (V4L2_STD_NTSC_M | |
|---|
| 703 |
V4L2_STD_NTSC_M_JP | |
|---|
| 704 |
V4L2_STD_NTSC_M_KR); |
|---|
| 705 |
const V4L2_STD_SECAM_DK = (V4L2_STD_SECAM_D | |
|---|
| 706 |
V4L2_STD_SECAM_K | |
|---|
| 707 |
V4L2_STD_SECAM_K1); |
|---|
| 708 |
const V4L2_STD_SECAM = (V4L2_STD_SECAM_B | |
|---|
| 709 |
V4L2_STD_SECAM_G | |
|---|
| 710 |
V4L2_STD_SECAM_H | |
|---|
| 711 |
V4L2_STD_SECAM_DK | |
|---|
| 712 |
V4L2_STD_SECAM_L | |
|---|
| 713 |
V4L2_STD_SECAM_LC); |
|---|
| 714 |
|
|---|
| 715 |
const V4L2_STD_525_60 = (V4L2_STD_PAL_M | |
|---|
| 716 |
V4L2_STD_PAL_60 | |
|---|
| 717 |
V4L2_STD_NTSC | |
|---|
| 718 |
V4L2_STD_NTSC_443); |
|---|
| 719 |
const V4L2_STD_625_50 = (V4L2_STD_PAL | |
|---|
| 720 |
V4L2_STD_PAL_N | |
|---|
| 721 |
V4L2_STD_PAL_Nc | |
|---|
| 722 |
V4L2_STD_SECAM); |
|---|
| 723 |
const V4L2_STD_ATSC = (V4L2_STD_ATSC_8_VSB | V4L2_STD_ATSC_16_VSB); |
|---|
| 724 |
|
|---|
| 725 |
const V4L2_STD_UNKNOWN = 0; |
|---|
| 726 |
const V4L2_STD_ALL = (V4L2_STD_525_60 | V4L2_STD_625_50); |
|---|
| 727 |
|
|---|
| 728 |
/* some merged standards */ |
|---|
| 729 |
const V4L2_STD_MN = (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC); |
|---|
| 730 |
const V4L2_STD_B = (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B); |
|---|
| 731 |
const V4L2_STD_GH = (V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H); |
|---|
| 732 |
const V4L2_STD_DK = (V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK); |
|---|
| 733 |
|
|---|
| 734 |
struct v4l2_standard { |
|---|
| 735 |
__u32 index; |
|---|
| 736 |
v4l2_std_id id; |
|---|
| 737 |
__u8[24] name; |
|---|
| 738 |
/*struct*/ v4l2_fract frameperiod; /* Frames, not fields */ |
|---|
| 739 |
__u32 framelines; |
|---|
| 740 |
__u32[4] reserved; |
|---|
| 741 |
} |
|---|
| 742 |
|
|---|
| 743 |
/* |
|---|
| 744 |
* V I D E O I N P U T S |
|---|
| 745 |
*/ |
|---|
| 746 |
struct v4l2_input { |
|---|
| 747 |
__u32 index; /* Which input */ |
|---|
| 748 |
__u8[32] name; /* Label */ |
|---|
| 749 |
__u32 type; /* Type of input */ |
|---|
| 750 |
__u32 audioset; /* Associated audios (bitfield) */ |
|---|
| 751 |
__u32 tuner; /* Associated tuner */ |
|---|
| 752 |
v4l2_std_id std; |
|---|
| 753 |
__u32 status; |
|---|
| 754 |
__u32[4] reserved; |
|---|
| 755 |
} |
|---|
| 756 |
|
|---|
| 757 |
/* Values for the 'type' field */ |
|---|
| 758 |
const V4L2_INPUT_TYPE_TUNER = 1; |
|---|
| 759 |
const V4L2_INPUT_TYPE_CAMERA = 2; |
|---|
| 760 |
|
|---|
| 761 |
/* field 'status' - general */ |
|---|
| 762 |
const V4L2_IN_ST_NO_POWER = 0x00000001; /* Attached device is off */ |
|---|
| 763 |
const V4L2_IN_ST_NO_SIGNAL = 0x00000002; |
|---|
| 764 |
const V4L2_IN_ST_NO_COLOR = 0x00000004; |
|---|
| 765 |
|
|---|
| 766 |
/* field 'status' - sensor orientation */ |
|---|
| 767 |
/* If sensor is mounted upside down set both bits */ |
|---|
| 768 |
const V4L2_IN_ST_HFLIP = 0x00000010; /* Frames are flipped horizontally */ |
|---|
| 769 |
const V4L2_IN_ST_VFLIP = 0x00000020; /* Frames are flipped vertically */ |
|---|
| 770 |
|
|---|
| 771 |
/* field 'status' - analog */ |
|---|
| 772 |
const V4L2_IN_ST_NO_H_LOCK = 0x00000100; /* No horizontal sync lock */ |
|---|
| 773 |
const V4L2_IN_ST_COLOR_KILL = 0x00000200; /* Color killer is active */ |
|---|
| 774 |
|
|---|
| 775 |
/* field 'status' - digital */ |
|---|
| 776 |
const V4L2_IN_ST_NO_SYNC = 0x00010000; /* No synchronization lock */ |
|---|
| 777 |
const V4L2_IN_ST_NO_EQU = 0x00020000; /* No equalizer lock */ |
|---|
| 778 |
const V4L2_IN_ST_NO_CARRIER = 0x00040000; /* Carrier recovery failed */ |
|---|
| 779 |
|
|---|
| 780 |
/* field 'status' - VCR and set-top box */ |
|---|
| 781 |
const V4L2_IN_ST_MACROVISION = 0x01000000; /* Macrovision detected */ |
|---|
| 782 |
const V4L2_IN_ST_NO_ACCESS = 0x02000000; /* Conditional access denied */ |
|---|
| 783 |
const V4L2_IN_ST_VTR = 0x04000000; /* VTR time constant */ |
|---|
| 784 |
|
|---|
| 785 |
/* |
|---|
| 786 |
* V I D E O O U T P U T S |
|---|
| 787 |
*/ |
|---|
| 788 |
struct v4l2_output { |
|---|
| 789 |
__u32 index; /* Which output */ |
|---|
| 790 |
__u8[32] name; /* Label */ |
|---|
| 791 |
__u32 type; /* Type of output */ |
|---|
| 792 |
__u32 audioset; /* Associated audios (bitfield) */ |
|---|
| 793 |
__u32 modulator; /* Associated modulator */ |
|---|
| 794 |
v4l2_std_id std; |
|---|
| 795 |
__u32[4] reserved; |
|---|
| 796 |
} |
|---|
| 797 |
/* Values for the 'type' field */ |
|---|
| 798 |
const V4L2_OUTPUT_TYPE_MODULATOR = 1; |
|---|
| 799 |
const V4L2_OUTPUT_TYPE_ANALOG = 2; |
|---|
| 800 |
const V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY = 3; |
|---|
| 801 |
|
|---|
| 802 |
/* |
|---|
| 803 |
* C O N T R O L S |
|---|
| 804 |
*/ |
|---|
| 805 |
struct v4l2_control { |
|---|
| 806 |
__u32 id; |
|---|
| 807 |
__s32 value; |
|---|
| 808 |
} |
|---|
| 809 |
|
|---|
| 810 |
struct v4l2_ext_control { |
|---|
| 811 |
__u32 id; |
|---|
| 812 |
__u32[2] reserved2; |
|---|
| 813 |
union { |
|---|
| 814 |
__s32 value; |
|---|
| 815 |
__s64 value64; |
|---|
| 816 |
void* reserved; |
|---|
| 817 |
} |
|---|
| 818 |
} //__attribute__ ((packed)); |
|---|
| 819 |
|
|---|
| 820 |
struct v4l2_ext_controls { |
|---|
| 821 |
__u32 ctrl_class; |
|---|
| 822 |
__u32 count; |
|---|
| 823 |
__u32 error_idx; |
|---|
| 824 |
__u32[2] reserved; |
|---|
| 825 |
/*struct*/ v4l2_ext_control* controls; |
|---|
| 826 |
} |
|---|
| 827 |
|
|---|
| 828 |
/* Values for ctrl_class field */ |
|---|
| 829 |
const V4L2_CTRL_CLASS_USER = 0x00980000; /* Old-style 'user' controls */ |
|---|
| 830 |
const V4L2_CTRL_CLASS_MPEG = 0x00990000; /* MPEG-compression controls */ |
|---|
| 831 |
const V4L2_CTRL_CLASS_CAMERA = 0x009a0000; /* Camera class controls */ |
|---|
| 832 |
|
|---|
| 833 |
const V4L2_CTRL_ID_MASK = (0x0fffffff); |
|---|
| 834 |
template V4L2_CTRL_ID2CLASS(id) { |
|---|
| 835 |
const V4L2_CTRL_ID2CLASS = ((id) & 0x0fff0000UL); |
|---|
| 836 |
} |
|---|
| 837 |
template V4L2_CTRL_DRIVER_PRIV(id) { |
|---|
| 838 |
const V4L2_CTRL_DRIVER_PRIV = (((id) & 0xffff) >= 0x1000); |
|---|
| 839 |
} |
|---|
| 840 |
|
|---|
| 841 |
/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ |
|---|
| 842 |
struct v4l2_queryctrl { |
|---|
| 843 |
__u32 id; |
|---|
| 844 |
/*enum*/ v4l2_ctrl_type type; |
|---|
| 845 |
__u8[32] name; /* Whatever */ |
|---|
| 846 |
__s32 minimum; /* Note signedness */ |
|---|
| 847 |
__s32 maximum; |
|---|
| 848 |
__s32 step; |
|---|
| 849 |
__s32 default_value; |
|---|
| 850 |
__u32 flags; |
|---|
| 851 |
__u32[2] reserved; |
|---|
| 852 |
} |
|---|
| 853 |
|
|---|
| 854 |
/* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */ |
|---|
| 855 |
struct v4l2_querymenu { |
|---|
| 856 |
__u32 id; |
|---|
| 857 |
__u32 index; |
|---|
| 858 |
__u8[32] name; /* Whatever */ |
|---|
| 859 |
__u32 reserved; |
|---|
| 860 |
} |
|---|
| 861 |
|
|---|
| 862 |
/* Control flags */ |
|---|
| 863 |
const V4L2_CTRL_FLAG_DISABLED = 0x0001; |
|---|
| 864 |
const V4L2_CTRL_FLAG_GRABBED = 0x0002; |
|---|
| 865 |
const V4L2_CTRL_FLAG_READ_ONLY = 0x0004; |
|---|
| 866 |
const V4L2_CTRL_FLAG_UPDATE = 0x0008; |
|---|
| 867 |
const V4L2_CTRL_FLAG_INACTIVE = 0x0010; |
|---|
| 868 |
const V4L2_CTRL_FLAG_SLIDER = 0x0020; |
|---|
| 869 |
const V4L2_CTRL_FLAG_WRITE_ONLY = 0x0040; |
|---|
| 870 |
|
|---|
| 871 |
/* Query flag, to be ORed with the control ID */ |
|---|
| 872 |
const V4L2_CTRL_FLAG_NEXT_CTRL = 0x80000000; |
|---|
| 873 |
|
|---|
| 874 |
/* User-class control IDs defined by V4L2 */ |
|---|
| 875 |
const V4L2_CID_BASE = (V4L2_CTRL_CLASS_USER | 0x900); |
|---|
| 876 |
const V4L2_CID_USER_BASE = V4L2_CID_BASE; |
|---|
| 877 |
/* IDs reserved for driver specific controls */ |
|---|
| 878 |
const V4L2_CID_PRIVATE_BASE = 0x08000000; |
|---|
| 879 |
|
|---|
| 880 |
const V4L2_CID_USER_CLASS = (V4L2_CTRL_CLASS_USER | 1); |
|---|
| 881 |
const V4L2_CID_BRIGHTNESS = (V4L2_CID_BASE+0); |
|---|
| 882 |
const V4L2_CID_CONTRAST = (V4L2_CID_BASE+1); |
|---|
| 883 |
const V4L2_CID_SATURATION = (V4L2_CID_BASE+2); |
|---|
| 884 |
const V4L2_CID_HUE = (V4L2_CID_BASE+3); |
|---|
| 885 |
const V4L2_CID_AUDIO_VOLUME = (V4L2_CID_BASE+5); |
|---|
| 886 |
const V4L2_CID_AUDIO_BALANCE = (V4L2_CID_BASE+6); |
|---|
| 887 |
const V4L2_CID_AUDIO_BASS = (V4L2_CID_BASE+7); |
|---|
| 888 |
const V4L2_CID_AUDIO_TREBLE = (V4L2_CID_BASE+8); |
|---|
| 889 |
const V4L2_CID_AUDIO_MUTE = (V4L2_CID_BASE+9); |
|---|
| 890 |
const V4L2_CID_AUDIO_LOUDNESS = (V4L2_CID_BASE+10); |
|---|
| 891 |
const V4L2_CID_BLACK_LEVEL = (V4L2_CID_BASE+11); /* Deprecated */ |
|---|
| 892 |
const V4L2_CID_AUTO_WHITE_BALANCE = (V4L2_CID_BASE+12); |
|---|
| 893 |
const V4L2_CID_DO_WHITE_BALANCE = (V4L2_CID_BASE+13); |
|---|
| 894 |
const V4L2_CID_RED_BALANCE = (V4L2_CID_BASE+14); |
|---|
| 895 |
const V4L2_CID_BLUE_BALANCE = (V4L2_CID_BASE+15); |
|---|
| 896 |
const V4L2_CID_GAMMA = (V4L2_CID_BASE+16); |
|---|
| 897 |
const V4L2_CID_WHITENESS = (V4L2_CID_GAMMA); /* Deprecated */ |
|---|
| 898 |
const V4L2_CID_EXPOSURE = (V4L2_CID_BASE+17); |
|---|
| 899 |
const V4L2_CID_AUTOGAIN = (V4L2_CID_BASE+18); |
|---|
| 900 |
const V4L2_CID_GAIN = (V4L2_CID_BASE+19); |
|---|
| 901 |
const V4L2_CID_HFLIP = (V4L2_CID_BASE+20); |
|---|
| 902 |
const V4L2_CID_VFLIP = (V4L2_CID_BASE+21); |
|---|
| 903 |
|
|---|
| 904 |
/* Deprecated; use V4L2_CID_PAN_RESET and V4L2_CID_TILT_RESET */ |
|---|
| 905 |
const V4L2_CID_HCENTER = (V4L2_CID_BASE+22); |
|---|
| 906 |
const V4L2_CID_VCENTER = (V4L2_CID_BASE+23); |
|---|
| 907 |
|
|---|
| 908 |
const V4L2_CID_POWER_LINE_FREQUENCY = (V4L2_CID_BASE+24); |
|---|
| 909 |
enum v4l2_power_line_frequency { |
|---|
| 910 |
V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0, |
|---|
| 911 |
V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1, |
|---|
| 912 |
V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2, |
|---|
| 913 |
} |
|---|
| 914 |
const V4L2_CID_HUE_AUTO = (V4L2_CID_BASE+25); |
|---|
| 915 |
const V4L2_CID_WHITE_BALANCE_TEMPERATURE = (V4L2_CID_BASE+26); |
|---|
| 916 |
const V4L2_CID_SHARPNESS = (V4L2_CID_BASE+27); |
|---|
| 917 |
const V4L2_CID_BACKLIGHT_COMPENSATION = (V4L2_CID_BASE+28); |
|---|
| 918 |
const V4L2_CID_CHROMA_AGC = (V4L2_CID_BASE+29); |
|---|
| 919 |
const V4L2_CID_COLOR_KILLER = (V4L2_CID_BASE+30); |
|---|
| 920 |
const V4L2_CID_COLORFX = (V4L2_CID_BASE+31); |
|---|
| 921 |
enum v4l2_colorfx { |
|---|
| 922 |
V4L2_COLORFX_NONE = 0, |
|---|
| 923 |
V4L2_COLORFX_BW = 1, |
|---|
| 924 |
V4L2_COLORFX_SEPIA = 2, |
|---|
| 925 |
} |
|---|
| 926 |
|
|---|
| 927 |
/* last CID + 1 */ |
|---|
| 928 |
const V4L2_CID_LASTP1 = (V4L2_CID_BASE+32); |
|---|
| 929 |
|
|---|
| 930 |
/* MPEG-class control IDs defined by V4L2 */ |
|---|
| 931 |
const V4L2_CID_MPEG_BASE = (V4L2_CTRL_CLASS_MPEG | 0x900); |
|---|
| 932 |
const V4L2_CID_MPEG_CLASS = (V4L2_CTRL_CLASS_MPEG | 1); |
|---|
| 933 |
|
|---|
| 934 |
/* MPEG streams */ |
|---|
| 935 |
const V4L2_CID_MPEG_STREAM_TYPE = (V4L2_CID_MPEG_BASE+0); |
|---|
| 936 |
enum v4l2_mpeg_stream_type { |
|---|
| 937 |
V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */ |
|---|
| 938 |
V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */ |
|---|
| 939 |
V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2, /* MPEG-1 system stream */ |
|---|
| 940 |
V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3, /* MPEG-2 DVD-compatible stream */ |
|---|
| 941 |
V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */ |
|---|
| 942 |
V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */ |
|---|
| 943 |
} |
|---|
| 944 |
const V4L2_CID_MPEG_STREAM_PID_PMT = (V4L2_CID_MPEG_BASE+1); |
|---|
| 945 |
const V4L2_CID_MPEG_STREAM_PID_AUDIO = (V4L2_CID_MPEG_BASE+2); |
|---|
| 946 |
const V4L2_CID_MPEG_STREAM_PID_VIDEO = (V4L2_CID_MPEG_BASE+3); |
|---|
| 947 |
const V4L2_CID_MPEG_STREAM_PID_PCR = (V4L2_CID_MPEG_BASE+4); |
|---|
| 948 |
const V4L2_CID_MPEG_STREAM_PES_ID_AUDIO = (V4L2_CID_MPEG_BASE+5); |
|---|
| 949 |
const V4L2_CID_MPEG_STREAM_PES_ID_VIDEO = (V4L2_CID_MPEG_BASE+6); |
|---|
| 950 |
const V4L2_CID_MPEG_STREAM_VBI_FMT = (V4L2_CID_MPEG_BASE+7); |
|---|
| 951 |
enum v4l2_mpeg_stream_vbi_fmt { |
|---|
| 952 |
V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */ |
|---|
| 953 |
V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */ |
|---|
| 954 |
} |
|---|
| 955 |
|
|---|
| 956 |
/* MPEG audio */ |
|---|
| 957 |
const V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ = (V4L2_CID_MPEG_BASE+100); |
|---|
| 958 |
enum v4l2_mpeg_audio_sampling_freq { |
|---|
| 959 |
V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0, |
|---|
| 960 |
V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1, |
|---|
| 961 |
V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2, |
|---|
| 962 |
} |
|---|
| 963 |
const V4L2_CID_MPEG_AUDIO_ENCODING = (V4L2_CID_MPEG_BASE+101); |
|---|
| 964 |
enum v4l2_mpeg_audio_encoding { |
|---|
| 965 |
V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0, |
|---|
| 966 |
V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1, |
|---|
| 967 |
V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2, |
|---|
| 968 |
V4L2_MPEG_AUDIO_ENCODING_AAC = 3, |
|---|
| 969 |
V4L2_MPEG_AUDIO_ENCODING_AC3 = 4, |
|---|
| 970 |
} |
|---|
| 971 |
const V4L2_CID_MPEG_AUDIO_L1_BITRATE = (V4L2_CID_MPEG_BASE+102); |
|---|
| 972 |
enum v4l2_mpeg_audio_l1_bitrate { |
|---|
| 973 |
V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0, |
|---|
| 974 |
V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1, |
|---|
| 975 |
V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2, |
|---|
| 976 |
V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3, |
|---|
| 977 |
V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4, |
|---|
| 978 |
V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5, |
|---|
| 979 |
V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6, |
|---|
| 980 |
V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7, |
|---|
| 981 |
V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8, |
|---|
| 982 |
V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9, |
|---|
| 983 |
V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10, |
|---|
| 984 |
V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11, |
|---|
| 985 |
V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12, |
|---|
| 986 |
V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13, |
|---|
| 987 |
} |
|---|
| 988 |
const V4L2_CID_MPEG_AUDIO_L2_BITRATE = (V4L2_CID_MPEG_BASE+103); |
|---|
| 989 |
enum v4l2_mpeg_audio_l2_bitrate { |
|---|
| 990 |
V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0, |
|---|
| 991 |
V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1, |
|---|
| 992 |
V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2, |
|---|
| 993 |
V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3, |
|---|
| 994 |
V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4, |
|---|
| 995 |
V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5, |
|---|
| 996 |
V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6, |
|---|
| 997 |
V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7, |
|---|
| 998 |
V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8, |
|---|
| 999 |
V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9, |
|---|
| 1000 |
V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10, |
|---|
| 1001 |
V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11, |
|---|
| 1002 |
V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12, |
|---|
| 1003 |
V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13, |
|---|
| 1004 |
} |
|---|
| 1005 |
const V4L2_CID_MPEG_AUDIO_L3_BITRATE = (V4L2_CID_MPEG_BASE+104); |
|---|
| 1006 |
enum v4l2_mpeg_audio_l3_bitrate { |
|---|
| 1007 |
V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0, |
|---|
| 1008 |
V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1, |
|---|
| 1009 |
V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2, |
|---|
| 1010 |
V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3, |
|---|
| 1011 |
V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4, |
|---|
| 1012 |
V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5, |
|---|
| 1013 |
V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6, |
|---|
| 1014 |
V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7, |
|---|
| 1015 |
V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8, |
|---|
| 1016 |
V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9, |
|---|
| 1017 |
V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10, |
|---|
| 1018 |
V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11, |
|---|
| 1019 |
V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12, |
|---|
| 1020 |
V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13, |
|---|
| 1021 |
} |
|---|
| 1022 |
const V4L2_CID_MPEG_AUDIO_MODE = (V4L2_CID_MPEG_BASE+105); |
|---|
| 1023 |
enum v4l2_mpeg_audio_mode { |
|---|
| 1024 |
V4L2_MPEG_AUDIO_MODE_STEREO = 0, |
|---|
| 1025 |
V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1, |
|---|
| 1026 |
V4L2_MPEG_AUDIO_MODE_DUAL = 2, |
|---|
| 1027 |
V4L2_MPEG_AUDIO_MODE_MONO = 3, |
|---|
| 1028 |
} |
|---|
| 1029 |
const V4L2_CID_MPEG_AUDIO_MODE_EXTENSION = (V4L2_CID_MPEG_BASE+106); |
|---|
| 1030 |
enum v4l2_mpeg_audio_mode_extension { |
|---|
| 1031 |
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0, |
|---|
| 1032 |
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1, |
|---|
| 1033 |
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2, |
|---|
| 1034 |
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3, |
|---|
| 1035 |
} |
|---|
| 1036 |
const V4L2_CID_MPEG_AUDIO_EMPHASIS = (V4L2_CID_MPEG_BASE+107); |
|---|
| 1037 |
enum v4l2_mpeg_audio_emphasis { |
|---|
| 1038 |
V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0, |
|---|
| 1039 |
V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1, |
|---|
| 1040 |
V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2, |
|---|
| 1041 |
} |
|---|
| 1042 |
const V4L2_CID_MPEG_AUDIO_CRC = (V4L2_CID_MPEG_BASE+108); |
|---|
| 1043 |
enum v4l2_mpeg_audio_crc { |
|---|
| 1044 |
V4L2_MPEG_AUDIO_CRC_NONE = 0, |
|---|
| 1045 |
V4L2_MPEG_AUDIO_CRC_CRC16 = 1, |
|---|
| 1046 |
} |
|---|
| 1047 |
const V4L2_CID_MPEG_AUDIO_MUTE = (V4L2_CID_MPEG_BASE+109); |
|---|
| 1048 |
const V4L2_CID_MPEG_AUDIO_AAC_BITRATE = (V4L2_CID_MPEG_BASE+110); |
|---|
| 1049 |
const V4L2_CID_MPEG_AUDIO_AC3_BITRATE = (V4L2_CID_MPEG_BASE+111); |
|---|
| 1050 |
enum v4l2_mpeg_audio_ac3_bitrate { |
|---|
| 1051 |
V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0, |
|---|
| 1052 |
V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1, |
|---|
| 1053 |
V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2, |
|---|
| 1054 |
V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3, |
|---|
| 1055 |
V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4, |
|---|
| 1056 |
V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5, |
|---|
| 1057 |
V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6, |
|---|
| 1058 |
V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7, |
|---|
| 1059 |
V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8, |
|---|
| 1060 |
V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9, |
|---|
| 1061 |
V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10, |
|---|
| 1062 |
V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11, |
|---|
| 1063 |
V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12, |
|---|
| 1064 |
V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13, |
|---|
| 1065 |
V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14, |
|---|
| 1066 |
V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15, |
|---|
| 1067 |
V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16, |
|---|
| 1068 |
V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17, |
|---|
| 1069 |
V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18, |
|---|
| 1070 |
} |
|---|
| 1071 |
|
|---|
| 1072 |
/* MPEG video */ |
|---|
| 1073 |
const V4L2_CID_MPEG_VIDEO_ENCODING = (V4L2_CID_MPEG_BASE+200); |
|---|
| 1074 |
enum v4l2_mpeg_video_encoding { |
|---|
| 1075 |
V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0, |
|---|
| 1076 |
V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1, |
|---|
| 1077 |
V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2, |
|---|
| 1078 |
} |
|---|
| 1079 |
const V4L2_CID_MPEG_VIDEO_ASPECT = (V4L2_CID_MPEG_BASE+201); |
|---|
| 1080 |
enum v4l2_mpeg_video_aspect { |
|---|
| 1081 |
V4L2_MPEG_VIDEO_ASPECT_1x1 = 0, |
|---|
| 1082 |
V4L2_MPEG_VIDEO_ASPECT_4x3 = 1, |
|---|
| 1083 |
V4L2_MPEG_VIDEO_ASPECT_16x9 = 2, |
|---|
| 1084 |
V4L2_MPEG_VIDEO_ASPECT_221x100 = 3, |
|---|
| 1085 |
} |
|---|
| 1086 |
const V4L2_CID_MPEG_VIDEO_B_FRAMES = (V4L2_CID_MPEG_BASE+202); |
|---|
| 1087 |
const V4L2_CID_MPEG_VIDEO_GOP_SIZE = (V4L2_CID_MPEG_BASE+203); |
|---|
| 1088 |
const V4L2_CID_MPEG_VIDEO_GOP_CLOSURE = (V4L2_CID_MPEG_BASE+204); |
|---|
| 1089 |
const V4L2_CID_MPEG_VIDEO_PULLDOWN = (V4L2_CID_MPEG_BASE+205); |
|---|
| 1090 |
const V4L2_CID_MPEG_VIDEO_BITRATE_MODE = (V4L2_CID_MPEG_BASE+206); |
|---|
| 1091 |
enum v4l2_mpeg_video_bitrate_mode { |
|---|
| 1092 |
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0, |
|---|
| 1093 |
V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1, |
|---|
| 1094 |
} |
|---|
| 1095 |
const V4L2_CID_MPEG_VIDEO_BITRATE = (V4L2_CID_MPEG_BASE+207); |
|---|
| 1096 |
const V4L2_CID_MPEG_VIDEO_BITRATE_PEAK = (V4L2_CID_MPEG_BASE+208); |
|---|
| 1097 |
const V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION = (V4L2_CID_MPEG_BASE+209); |
|---|
| 1098 |
const V4L2_CID_MPEG_VIDEO_MUTE = (V4L2_CID_MPEG_BASE+210); |
|---|
| 1099 |
const V4L2_CID_MPEG_VIDEO_MUTE_YUV = (V4L2_CID_MPEG_BASE+211); |
|---|
| 1100 |
|
|---|
| 1101 |
/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */ |
|---|
| 1102 |
const V4L2_CID_MPEG_CX2341X_BASE = (V4L2_CTRL_CLASS_MPEG | 0x1000); |
|---|
| 1103 |
const V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE = (V4L2_CID_MPEG_CX2341X_BASE+0); |
|---|
| 1104 |
enum v4l2_mpeg_cx2341x_video_spatial_filter_mode { |
|---|
| 1105 |
V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0, |
|---|
| 1106 |
V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1, |
|---|
| 1107 |
} |
|---|
| 1108 |
const V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER = (V4L2_CID_MPEG_CX2341X_BASE+1); |
|---|
| 1109 |
const V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE = (V4L2_CID_MPEG_CX2341X_BASE+2); |
|---|
| 1110 |
enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type { |
|---|
| 1111 |
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0, |
|---|
| 1112 |
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1, |
|---|
| 1113 |
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2, |
|---|
| 1114 |
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3, |
|---|
| 1115 |
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4, |
|---|
| 1116 |
} |
|---|
| 1117 |
const V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE = (V4L2_CID_MPEG_CX2341X_BASE+3); |
|---|
| 1118 |
enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type { |
|---|
| 1119 |
V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0, |
|---|
| 1120 |
V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1, |
|---|
| 1121 |
} |
|---|
| 1122 |
const V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE = (V4L2_CID_MPEG_CX2341X_BASE+4); |
|---|
| 1123 |
enum v4l2_mpeg_cx2341x_video_temporal_filter_mode { |
|---|
| 1124 |
V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0, |
|---|
| 1125 |
V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1, |
|---|
| 1126 |
} |
|---|
| 1127 |
const V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER = (V4L2_CID_MPEG_CX2341X_BASE+5); |
|---|
| 1128 |
const V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE = (V4L2_CID_MPEG_CX2341X_BASE+6); |
|---|
| 1129 |
enum v4l2_mpeg_cx2341x_video_median_filter_type { |
|---|
| 1130 |
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0, |
|---|
| 1131 |
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1, |
|---|
| 1132 |
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2, |
|---|
| 1133 |
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3, |
|---|
| 1134 |
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4, |
|---|
| 1135 |
} |
|---|
| 1136 |
const V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM = (V4L2_CID_MPEG_CX2341X_BASE+7); |
|---|
| 1137 |
const V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP = (V4L2_CID_MPEG_CX2341X_BASE+8); |
|---|
| 1138 |
const V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM = (V4L2_CID_MPEG_CX2341X_BASE+9); |
|---|
| 1139 |
const V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP = (V4L2_CID_MPEG_CX2341X_BASE+10); |
|---|
| 1140 |
const V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS = (V4L2_CID_MPEG_CX2341X_BASE+11); |
|---|
| 1141 |
|
|---|
| 1142 |
/* Camera class control IDs */ |
|---|
| 1143 |
const V4L2_CID_CAMERA_CLASS_BASE = (V4L2_CTRL_CLASS_CAMERA | 0x900); |
|---|
| 1144 |
const V4L2_CID_CAMERA_CLASS = (V4L2_CTRL_CLASS_CAMERA | 1); |
|---|
| 1145 |
|
|---|
| 1146 |
const V4L2_CID_EXPOSURE_AUTO = (V4L2_CID_CAMERA_CLASS_BASE+1); |
|---|
| 1147 |
enum v4l2_exposure_auto_type { |
|---|
| 1148 |
V4L2_EXPOSURE_AUTO = 0, |
|---|
| 1149 |
V4L2_EXPOSURE_MANUAL = 1, |
|---|
| 1150 |
V4L2_EXPOSURE_SHUTTER_PRIORITY = 2, |
|---|
| 1151 |
V4L2_EXPOSURE_APERTURE_PRIORITY = 3 |
|---|
| 1152 |
} |
|---|
| 1153 |
const V4L2_CID_EXPOSURE_ABSOLUTE = (V4L2_CID_CAMERA_CLASS_BASE+2); |
|---|
| 1154 |
const V4L2_CID_EXPOSURE_AUTO_PRIORITY = (V4L2_CID_CAMERA_CLASS_BASE+3); |
|---|
| 1155 |
|
|---|
| 1156 |
const V4L2_CID_PAN_RELATIVE = (V4L2_CID_CAMERA_CLASS_BASE+4); |
|---|
| 1157 |
const V4L2_CID_TILT_RELATIVE = (V4L2_CID_CAMERA_CLASS_BASE+5); |
|---|
| 1158 |
const V4L2_CID_PAN_RESET = (V4L2_CID_CAMERA_CLASS_BASE+6); |
|---|
| 1159 |
const V4L2_CID_TILT_RESET = (V4L2_CID_CAMERA_CLASS_BASE+7); |
|---|
| 1160 |
|
|---|
| 1161 |
const V4L2_CID_PAN_ABSOLUTE = (V4L2_CID_CAMERA_CLASS_BASE+8); |
|---|
| 1162 |
const V4L2_CID_TILT_ABSOLUTE = (V4L2_CID_CAMERA_CLASS_BASE+9); |
|---|
| 1163 |
|
|---|
| 1164 |
const V4L2_CID_FOCUS_ABSOLUTE = (V4L2_CID_CAMERA_CLASS_BASE+10); |
|---|
| 1165 |
const V4L2_CID_FOCUS_RELATIVE = (V4L2_CID_CAMERA_CLASS_BASE+11); |
|---|
| 1166 |
const V4L2_CID_FOCUS_AUTO = (V4L2_CID_CAMERA_CLASS_BASE+12); |
|---|
| 1167 |
|
|---|
| 1168 |
const V4L2_CID_ZOOM_ABSOLUTE = (V4L2_CID_CAMERA_CLASS_BASE+13); |
|---|
| 1169 |
const V4L2_CID_ZOOM_RELATIVE = (V4L2_CID_CAMERA_CLASS_BASE+14); |
|---|
| 1170 |
const V4L2_CID_ZOOM_CONTINUOUS = (V4L2_CID_CAMERA_CLASS_BASE+15); |
|---|
| 1171 |
|
|---|
| 1172 |
const V4L2_CID_PRIVACY = (V4L2_CID_CAMERA_CLASS_BASE+16); |
|---|
| 1173 |
|
|---|
| 1174 |
/* |
|---|
| 1175 |
* T U N I N G |
|---|
| 1176 |
*/ |
|---|
| 1177 |
struct v4l2_tuner { |
|---|
| 1178 |
__u32 index; |
|---|
| 1179 |
__u8[32] name; |
|---|
| 1180 |
/*enum*/ v4l2_tuner_type type; |
|---|
| 1181 |
__u32 capability; |
|---|
| 1182 |
__u32 rangelow; |
|---|
| 1183 |
__u32 rangehigh; |
|---|
| 1184 |
__u32 rxsubchans; |
|---|
| 1185 |
__u32 audmode; |
|---|
| 1186 |
__s32 signal; |
|---|
| 1187 |
__s32 afc; |
|---|
| 1188 |
__u32[4] reserved; |
|---|
| 1189 |
} |
|---|
| 1190 |
|
|---|
| 1191 |
struct v4l2_modulator { |
|---|
| 1192 |
__u32 index; |
|---|
| 1193 |
__u8[32] name; |
|---|
| 1194 |
__u32 capability; |
|---|
| 1195 |
__u32 rangelow; |
|---|
| 1196 |
__u32 rangehigh; |
|---|
| 1197 |
__u32 txsubchans; |
|---|
| 1198 |
__u32[4] reserved; |
|---|
| 1199 |
} |
|---|
| 1200 |
|
|---|
| 1201 |
/* Flags for the 'capability' field */ |
|---|
| 1202 |
const V4L2_TUNER_CAP_LOW = 0x0001; |
|---|
| 1203 |
const V4L2_TUNER_CAP_NORM = 0x0002; |
|---|
| 1204 |
const V4L2_TUNER_CAP_STEREO = 0x0010; |
|---|
| 1205 |
const V4L2_TUNER_CAP_LANG2 = 0x0020; |
|---|
| 1206 |
const V4L2_TUNER_CAP_SAP = 0x0020; |
|---|
| 1207 |
const V4L2_TUNER_CAP_LANG1 = 0x0040; |
|---|
| 1208 |
|
|---|
| 1209 |
/* Flags for the 'rxsubchans' field */ |
|---|
| 1210 |
const V4L2_TUNER_SUB_MONO = 0x0001; |
|---|
| 1211 |
const V4L2_TUNER_SUB_STEREO = 0x0002; |
|---|
| 1212 |
const V4L2_TUNER_SUB_LANG2 = 0x0004; |
|---|
| 1213 |
const V4L2_TUNER_SUB_SAP = 0x0004; |
|---|
| 1214 |
const V4L2_TUNER_SUB_LANG1 = 0x0008; |
|---|
| 1215 |
|
|---|
| 1216 |
/* Values for the 'audmode' field */ |
|---|
| 1217 |
const V4L2_TUNER_MODE_MONO = 0x0000; |
|---|
| 1218 |
const V4L2_TUNER_MODE_STEREO = 0x0001; |
|---|
| 1219 |
const V4L2_TUNER_MODE_LANG2 = 0x0002; |
|---|
| 1220 |
const V4L2_TUNER_MODE_SAP = 0x0002; |
|---|
| 1221 |
const V4L2_TUNER_MODE_LANG1 = 0x0003; |
|---|
| 1222 |
const V4L2_TUNER_MODE_LANG1_LANG2 = 0x0004; |
|---|
| 1223 |
|
|---|
| 1224 |
struct v4l2_frequency { |
|---|
| 1225 |
__u32 tuner; |
|---|
| 1226 |
/*enum*/ v4l2_tuner_type type; |
|---|
| 1227 |
__u32 frequency; |
|---|
| 1228 |
__u32[8] reserved; |
|---|
| 1229 |
} |
|---|
| 1230 |
|
|---|
| 1231 |
struct v4l2_hw_freq_seek { |
|---|
| 1232 |
__u32 tuner; |
|---|
| 1233 |
/*enum*/ v4l2_tuner_type type; |
|---|
| 1234 |
__u32 seek_upward; |
|---|
| 1235 |
__u32 wrap_around; |
|---|
| 1236 |
__u32[8] reserved; |
|---|
| 1237 |
} |
|---|
| 1238 |
|
|---|
| 1239 |
/* |
|---|
| 1240 |
* A U D I O |
|---|
| 1241 |
*/ |
|---|
| 1242 |
struct v4l2_audio { |
|---|
| 1243 |
__u32 index; |
|---|
| 1244 |
__u8[32] name; |
|---|
| 1245 |
__u32 capability; |
|---|
| 1246 |
__u32 mode; |
|---|
| 1247 |
__u32[2] reserved; |
|---|
| 1248 |
} |
|---|
| 1249 |
|
|---|
| 1250 |
/* Flags for the 'capability' field */ |
|---|
| 1251 |
const V4L2_AUDCAP_STEREO = 0x00001; |
|---|
| 1252 |
const V4L2_AUDCAP_AVL = 0x00002; |
|---|
| 1253 |
|
|---|
| 1254 |
/* Flags for the 'mode' field */ |
|---|
| 1255 |
const V4L2_AUDMODE_AVL = 0x00001; |
|---|
| 1256 |
|
|---|
| 1257 |
struct v4l2_audioout { |
|---|
| 1258 |
__u32 index; |
|---|
| 1259 |
__u8[32] name; |
|---|
| 1260 |
__u32 capability; |
|---|
| 1261 |
__u32 mode; |
|---|
| 1262 |
__u32[2] reserved; |
|---|
| 1263 |
} |
|---|
| 1264 |
|
|---|
| 1265 |
/* |
|---|
| 1266 |
* M P E G S E R V I C E S |
|---|
| 1267 |
* |
|---|
| 1268 |
* NOTE: EXPERIMENTAL API |
|---|
| 1269 |
*/ |
|---|
| 1270 |
//#if 1 |
|---|
| 1271 |
const V4L2_ENC_IDX_FRAME_I = (0); |
|---|
| 1272 |
const V4L2_ENC_IDX_FRAME_P = (1); |
|---|
| 1273 |
const V4L2_ENC_IDX_FRAME_B = (2); |
|---|
| 1274 |
const V4L2_ENC_IDX_FRAME_MASK = (0xf); |
|---|
| 1275 |
|
|---|
| 1276 |
struct v4l2_enc_idx_entry { |
|---|
| 1277 |
__u64 offset; |
|---|
| 1278 |
__u64 pts; |
|---|
| 1279 |
__u32 length; |
|---|
| 1280 |
__u32 flags; |
|---|
| 1281 |
__u32[2] reserved; |
|---|
| 1282 |
} |
|---|
| 1283 |
|
|---|
| 1284 |
const V4L2_ENC_IDX_ENTRIES = (64); |
|---|
| 1285 |
struct v4l2_enc_idx { |
|---|
| 1286 |
__u32 entries; |
|---|
| 1287 |
__u32 entries_cap; |
|---|
| 1288 |
__u32[4] reserved; |
|---|
| 1289 |
/*struct*/ v4l2_enc_idx_entry[V4L2_ENC_IDX_ENTRIES] entry; |
|---|
| 1290 |
} |
|---|
| 1291 |
|
|---|
| 1292 |
|
|---|
| 1293 |
const V4L2_ENC_CMD_START =(0); |
|---|
| 1294 |
const V4L2_ENC_CMD_STOP = (1); |
|---|
| 1295 |
const V4L2_ENC_CMD_PAUSE = (2); |
|---|
| 1296 |
const V4L2_ENC_CMD_RESUME = (3); |
|---|
| 1297 |
|
|---|
| 1298 |
/* Flags for V4L2_ENC_CMD_STOP */ |
|---|
| 1299 |
const V4L2_ENC_CMD_STOP_AT_GOP_END = (1 << 0); |
|---|
| 1300 |
|
|---|
| 1301 |
union Raw { |
|---|
| 1302 |
struct { |
|---|
| 1303 |
__u32[8] data; |
|---|
| 1304 |
} |
|---|
| 1305 |
} |
|---|
| 1306 |
|
|---|
| 1307 |
struct v4l2_encoder_cmd { |
|---|
| 1308 |
__u32 cmd; |
|---|
| 1309 |
__u32 flags; |
|---|
| 1310 |
/* union { |
|---|
| 1311 |
struct { |
|---|
| 1312 |
__u32[8] data; |
|---|
| 1313 |
}*/ Raw raw; |
|---|
| 1314 |
//} |
|---|
| 1315 |
} |
|---|
| 1316 |
|
|---|
| 1317 |
//#endif |
|---|
| 1318 |
|
|---|
| 1319 |
|
|---|
| 1320 |
/* |
|---|
| 1321 |
* D A T A S E R V I C E S ( V B I ) |
|---|
| 1322 |
* |
|---|
| 1323 |
* Data services API by Michael Schimek |
|---|
| 1324 |
*/ |
|---|
| 1325 |
|
|---|
| 1326 |
/* Raw VBI */ |
|---|
| 1327 |
struct v4l2_vbi_format { |
|---|
| 1328 |
__u32 sampling_rate; /* in 1 Hz */ |
|---|
| 1329 |
__u32 offset; |
|---|
| 1330 |
__u32 samples_per_line; |
|---|
| 1331 |
__u32 sample_format; /* V4L2_PIX_FMT_* */ |
|---|
| 1332 |
__s32[2] start; |
|---|
| 1333 |
__u32[2] count; |
|---|
| 1334 |
__u32 flags; /* V4L2_VBI_* */ |
|---|
| 1335 |
__u32[2] reserved; /* must be zero */ |
|---|
| 1336 |
} |
|---|
| 1337 |
|
|---|
| 1338 |
/* VBI flags */ |
|---|
| 1339 |
const V4L2_VBI_UNSYNC = (1 << 0); |
|---|
| 1340 |
const V4L2_VBI_INTERLACED = (1 << 1); |
|---|
| 1341 |
|
|---|
| 1342 |
/* Sliced VBI |
|---|
| 1343 |
* |
|---|
| 1344 |
* This implements is a proposal V4L2 API to allow SLICED VBI |
|---|
| 1345 |
* required for some hardware encoders. It should change without |
|---|
| 1346 |
* notice in the definitive implementation. |
|---|
| 1347 |
*/ |
|---|
| 1348 |
|
|---|
| 1349 |
struct v4l2_sliced_vbi_format { |
|---|
| 1350 |
__u16 service_set; |
|---|
| 1351 |
/* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field |
|---|
| 1352 |
service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field |
|---|
| 1353 |
(equals frame lines 313-336 for 625 line video |
|---|
| 1354 |
standards, 263-286 for 525 line standards) */ |
|---|
| 1355 |
__u16[24][2] service_lines; |
|---|
| 1356 |
__u32 io_size; |
|---|
| 1357 |
__u32[2] reserved; /* must be zero */ |
|---|
| 1358 |
} |
|---|
| 1359 |
|
|---|
| 1360 |
/* Teletext World System Teletext |
|---|
| 1361 |
(WST), defined on ITU-R BT.653-2 */ |
|---|
| 1362 |
const V4L2_SLICED_TELETEXT_B = (0x0001); |
|---|
| 1363 |
/* Video Program System, defined on ETS 300 231*/ |
|---|
| 1364 |
const V4L2_SLICED_VPS = (0x0400); |
|---|
| 1365 |
/* Closed Caption, defined on EIA-608 */ |
|---|
| 1366 |
const V4L2_SLICED_CAPTION_525 = (0x1000); |
|---|
| 1367 |
/* Wide Screen System, defined on ITU-R BT1119.1 */ |
|---|
| 1368 |
const V4L2_SLICED_WSS_625 = (0x4000); |
|---|
| 1369 |
|
|---|
| 1370 |
const V4L2_SLICED_VBI_525 = (V4L2_SLICED_CAPTION_525); |
|---|
| 1371 |
const V4L2_SLICED_VBI_625 = (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625); |
|---|
| 1372 |
|
|---|
| 1373 |
struct v4l2_sliced_vbi_cap { |
|---|
| 1374 |
__u16 service_set; |
|---|
| 1375 |
/* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field |
|---|
| 1376 |
service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field |
|---|
| 1377 |
(equals frame lines 313-336 for 625 line video |
|---|
| 1378 |
standards, 263-286 for 525 line standards) */ |
|---|
| 1379 |
__u16[24][2] service_lines; |
|---|
| 1380 |
/*enum*/ v4l2_buf_type type; |
|---|
| 1381 |
__u32[3] reserved; /* must be 0 */ |
|---|
| 1382 |
} |
|---|
| 1383 |
|
|---|
| 1384 |
struct v4l2_sliced_vbi_data { |
|---|
| 1385 |
__u32 id; |
|---|
| 1386 |
__u32 field; /* 0: first field, 1: second field */ |
|---|
| 1387 |
__u32 line; /* 1-23 */ |
|---|
| 1388 |
__u32 reserved; /* must be 0 */ |
|---|
| 1389 |
__u8[48] data; |
|---|
| 1390 |
} |
|---|
| 1391 |
|
|---|
| 1392 |
/* |
|---|
| 1393 |
* Sliced VBI data inserted into MPEG Streams |
|---|
| 1394 |
*/ |
|---|
| 1395 |
|
|---|
| 1396 |
/* |
|---|
| 1397 |
* V4L2_MPEG_STREAM_VBI_FMT_IVTV: |
|---|
| 1398 |
* |
|---|
| 1399 |
* Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an |
|---|
| 1400 |
* MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI |
|---|
| 1401 |
* data |
|---|
| 1402 |
* |
|---|
| 1403 |
* Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header |
|---|
| 1404 |
* definitions are not included here. See the MPEG-2 specifications for details |
|---|
| 1405 |
* on these headers. |
|---|
| 1406 |
*/ |
|---|
| 1407 |
|
|---|
| 1408 |
/* Line type IDs */ |
|---|
| 1409 |
const V4L2_MPEG_VBI_IVTV_TELETEXT_B = (1); |
|---|
| 1410 |
const V4L2_MPEG_VBI_IVTV_CAPTION_525 = (4); |
|---|
| 1411 |
const V4L2_MPEG_VBI_IVTV_WSS_625 = (5); |
|---|
| 1412 |
const V4L2_MPEG_VBI_IVTV_VPS = (7); |
|---|
| 1413 |
|
|---|
| 1414 |
struct v4l2_mpeg_vbi_itv0_line { |
|---|
| 1415 |
__u8 id; /* One of V4L2_MPEG_VBI_IVTV_* above */ |
|---|
| 1416 |
__u8[42] data; /* Sliced VBI data for the line */ |
|---|
| 1417 |
} //__attribute__ ((packed)); |
|---|
| 1418 |
|
|---|
| 1419 |
struct v4l2_mpeg_vbi_itv0 { |
|---|
| 1420 |
__le32[2] linemask; /* Bitmasks of VBI service lines present */ |
|---|
| 1421 |
/*struct*/ v4l2_mpeg_vbi_itv0_line[35] line; |
|---|
| 1422 |
} //__attribute__ ((packed)); |
|---|
| 1423 |
|
|---|
| 1424 |
struct v4l2_mpeg_vbi_ITV0 { |
|---|
| 1425 |
/*struct*/ v4l2_mpeg_vbi_itv0_line[36] line; |
|---|
| 1426 |
} //__attribute__ ((packed)); |
|---|
| 1427 |
|
|---|
| 1428 |
const V4L2_MPEG_VBI_IVTV_MAGIC0 = "itv0"; |
|---|
| 1429 |
const V4L2_MPEG_VBI_IVTV_MAGIC1 = "ITV0"; |
|---|
| 1430 |
|
|---|
| 1431 |
struct v4l2_mpeg_vbi_fmt_ivtv { |
|---|
| 1432 |
__u8 magic[4]; |
|---|
| 1433 |
union { |
|---|
| 1434 |
/*struct*/ v4l2_mpeg_vbi_itv0 itv0; |
|---|
| 1435 |
/*struct*/ v4l2_mpeg_vbi_ITV0 ITV0; |
|---|
| 1436 |
} |
|---|
| 1437 |
} //__attribute__ ((packed)); |
|---|
| 1438 |
|
|---|
| 1439 |
/* |
|---|
| 1440 |
* A G G R E G A T E S T R U C T U R E S |
|---|
| 1441 |
*/ |
|---|
| 1442 |
|
|---|
| 1443 |
union Fmt{ |
|---|
| 1444 |
/*struct*/ v4l2_pix_format pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */ |
|---|
| 1445 |
/*struct*/ v4l2_window win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */ |
|---|
| 1446 |
/*struct*/ v4l2_vbi_format vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */ |
|---|
| 1447 |
/*struct*/ v4l2_sliced_vbi_format sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ |
|---|
| 1448 |
__u8[200] raw_data; /* user-defined */ |
|---|
| 1449 |
} |
|---|
| 1450 |
|
|---|
| 1451 |
/* Stream data format |
|---|
| 1452 |
*/ |
|---|
| 1453 |
struct v4l2_format { |
|---|
| 1454 |
/*enum*/ v4l2_buf_type type; |
|---|
| 1455 |
/+union { |
|---|
| 1456 |
/*struct*/ v4l2_pix_format pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */ |
|---|
| 1457 |
/*struct*/ v4l2_window win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */ |
|---|
| 1458 |
/*struct*/ v4l2_vbi_format vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */ |
|---|
| 1459 |
/*struct*/ v4l2_sliced_vbi_format sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ |
|---|
| 1460 |
__u8[200] raw_data; /* user-defined */ |
|---|
| 1461 |
}+/Fmt fmt; |
|---|
| 1462 |
} |
|---|
| 1463 |
|
|---|
| 1464 |
union Parm { |
|---|
| 1465 |
/*struct*/ v4l2_captureparm capture; |
|---|
| 1466 |
/*struct*/ v4l2_outputparm output; |
|---|
| 1467 |
__u8[200] raw_data; /* user-defined */ |
|---|
| 1468 |
} |
|---|
| 1469 |
|
|---|
| 1470 |
/* Stream type-dependent parameters |
|---|
| 1471 |
*/ |
|---|
| 1472 |
struct v4l2_streamparm { |
|---|
| 1473 |
/*enum*/ v4l2_buf_type type; |
|---|
| 1474 |
/+union { |
|---|
| 1475 |
/*struct*/ v4l2_captureparm capture; |
|---|
| 1476 |
/*struct*/ v4l2_outputparm output; |
|---|
| 1477 |
__u8[200] raw_data; /* user-defined */ |
|---|
| 1478 |
} +/ Parm parm; |
|---|
| 1479 |
} |
|---|
| 1480 |
|
|---|
| 1481 |
/* |
|---|
| 1482 |
* A D V A N C E D D E B U G G I N G |
|---|
| 1483 |
* |
|---|
| 1484 |
* NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS! |
|---|
| 1485 |
* FOR DEBUGGING, TESTING AND INTERNAL USE ONLY! |
|---|
| 1486 |
*/ |
|---|
| 1487 |
|
|---|
| 1488 |
/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */ |
|---|
| 1489 |
|
|---|
| 1490 |
const V4L2_CHIP_MATCH_HOST = 0; /* Match against chip ID on host (0 for the host) */ |
|---|
| 1491 |
const V4L2_CHIP_MATCH_I2C_DRIVER = 1; /* Match against I2C driver name */ |
|---|
| 1492 |
const V4L2_CHIP_MATCH_I2C_ADDR = 2; /* Match against I2C 7-bit address */ |
|---|
| 1493 |
const V4L2_CHIP_MATCH_AC97 = 3; /* Match against anciliary AC97 chip */ |
|---|
| 1494 |
|
|---|
| 1495 |
struct v4l2_dbg_match { |
|---|
| 1496 |
__u32 type; /* Match type */ |
|---|
| 1497 |
union { /* Match this chip, meaning determined by type */ |
|---|
| 1498 |
__u32 addr; |
|---|
| 1499 |
char[32] name; |
|---|
| 1500 |
} |
|---|
| 1501 |
} //__attribute__ ((packed)); |
|---|
| 1502 |
|
|---|
| 1503 |
struct v4l2_dbg_register { |
|---|
| 1504 |
/*struct*/ v4l2_dbg_match match; |
|---|
| 1505 |
__u32 size; /* register size in bytes */ |
|---|
| 1506 |
__u64 reg; |
|---|
| 1507 |
__u64 val; |
|---|
| 1508 |
} //__attribute__ ((packed)); |
|---|
| 1509 |
|
|---|
| 1510 |
/* VIDIOC_DBG_G_CHIP_IDENT */ |
|---|
| 1511 |
struct v4l2_dbg_chip_ident { |
|---|
| 1512 |
/*struct*/ v4l2_dbg_match match; |
|---|
| 1513 |
__u32 ident; /* chip identifier as specified in <media/v4l2-chip-ident.h> */ |
|---|
| 1514 |
__u32 revision; /* chip revision, chip specific */ |
|---|
| 1515 |
} //__attribute__ ((packed)); |
|---|
| 1516 |
|
|---|
| 1517 |
/* |
|---|
| 1518 |
* I O C T L C O D E S F O R V I D E O D E V I C E S |
|---|
| 1519 |
* |
|---|
| 1520 |
*/ |
|---|
| 1521 |
const VIDIOC_QUERYCAP = _IOR!('V', 0, /*struct*/ v4l2_capability); |
|---|
| 1522 |
const VIDIOC_RESERVED = _IO!('V', 1); |
|---|
| 1523 |
const VIDIOC_ENUM_FMT = _IOWR!('V', 2, /*struct*/ v4l2_fmtdesc); |
|---|
| 1524 |
const VIDIOC_G_FMT = _IOWR!('V', 4, /*struct*/ v4l2_format); |
|---|
| 1525 |
const VIDIOC_S_FMT = _IOWR!('V', 5, /*struct*/ v4l2_format); |
|---|
| 1526 |
const VIDIOC_REQBUFS = _IOWR!('V', 8, /*struct*/ v4l2_requestbuffers); |
|---|
| 1527 |
const VIDIOC_QUERYBUF = _IOWR!('V', 9, /*struct*/ v4l2_buffer); |
|---|
| 1528 |
const VIDIOC_G_FBUF = _IOR!('V', 10, /*struct*/ v4l2_framebuffer); |
|---|
| 1529 |
const VIDIOC_S_FBUF = _IOW!('V', 11, /*struct*/ v4l2_framebuffer); |
|---|
| 1530 |
const VIDIOC_OVERLAY = _IOW!('V', 14, int); |
|---|
| 1531 |
const VIDIOC_QBUF = _IOWR!('V', 15, /*struct*/ v4l2_buffer); |
|---|
| 1532 |
const VIDIOC_DQBUF = _IOWR!('V', 17, /*struct*/ v4l2_buffer); |
|---|
| 1533 |
const VIDIOC_STREAMON = _IOW!('V', 18, int); |
|---|
| 1534 |
const VIDIOC_STREAMOFF = _IOW!('V', 19, int); |
|---|
| 1535 |
const VIDIOC_G_PARM = _IOWR!('V', 21, /*struct*/ v4l2_streamparm); |
|---|
| 1536 |
const VIDIOC_S_PARM = _IOWR!('V', 22, /*struct*/ v4l2_streamparm); |
|---|
| 1537 |
const VIDIOC_G_STD = _IOR!('V', 23, v4l2_std_id); |
|---|
| 1538 |
const VIDIOC_S_STD = _IOW!('V', 24, v4l2_std_id); |
|---|
| 1539 |
const VIDIOC_ENUMSTD = _IOWR!('V', 25, /*struct*/ v4l2_standard); |
|---|
| 1540 |
const VIDIOC_ENUMINPUT = _IOWR!('V', 26, /*struct*/ v4l2_input); |
|---|
| 1541 |
const VIDIOC_G_CTRL = _IOWR!('V', 27, /*struct*/ v4l2_control); |
|---|
| 1542 |
const VIDIOC_S_CTRL = _IOWR!('V', 28, /*struct*/ v4l2_control); |
|---|
| 1543 |
const VIDIOC_G_TUNER = _IOWR!('V', 29, /*struct*/ v4l2_tuner); |
|---|
| 1544 |
const VIDIOC_S_TUNER = _IOW!('V', 30, /*struct*/ v4l2_tuner); |
|---|
| 1545 |
const VIDIOC_G_AUDIO = _IOR!('V', 33, /*struct*/ v4l2_audio); |
|---|
| 1546 |
const VIDIOC_S_AUDIO = _IOW!('V', 34, /*struct*/ v4l2_audio); |
|---|
| 1547 |
const VIDIOC_QUERYCTRL = _IOWR!('V', 36, /*struct*/ v4l2_queryctrl); |
|---|
| 1548 |
const VIDIOC_QUERYMENU = _IOWR!('V', 37, /*struct*/ v4l2_querymenu); |
|---|
| 1549 |
const VIDIOC_G_INPUT = _IOR!('V', 38, int); |
|---|
| 1550 |
const VIDIOC_S_INPUT = _IOWR!('V', 39, int); |
|---|
| 1551 |
const VIDIOC_G_OUTPUT = _IOR!('V', 46, int); |
|---|
| 1552 |
const VIDIOC_S_OUTPUT = _IOWR!('V', 47, int); |
|---|
| 1553 |
const VIDIOC_ENUMOUTPUT = _IOWR!('V', 48, /*struct*/ v4l2_output); |
|---|
| 1554 |
const VIDIOC_G_AUDOUT = _IOR!('V', 49, /*struct*/ v4l2_audioout); |
|---|
| 1555 |
const VIDIOC_S_AUDOUT = _IOW!('V', 50, /*struct*/ v4l2_audioout); |
|---|
| 1556 |
const VIDIOC_G_MODULATOR = _IOWR!('V', 54, /*struct*/ v4l2_modulator); |
|---|
| 1557 |
const VIDIOC_S_MODULATOR = _IOW!('V', 55, /*struct*/ v4l2_modulator); |
|---|
| 1558 |
const VIDIOC_G_FREQUENCY = _IOWR!('V', 56, /*struct*/ v4l2_frequency); |
|---|
| 1559 |
const VIDIOC_S_FREQUENCY = _IOW!('V', 57, /*struct*/ v4l2_frequency); |
|---|
| 1560 |
const VIDIOC_CROPCAP = _IOWR!('V', 58, /*struct*/ v4l2_cropcap); |
|---|
| 1561 |
const VIDIOC_G_CROP = _IOWR!('V', 59, /*struct*/ v4l2_crop); |
|---|
| 1562 |
const VIDIOC_S_CROP = _IOW!('V', 60, /*struct*/ v4l2_crop); |
|---|
| 1563 |
const VIDIOC_G_JPEGCOMP = _IOR!('V', 61, /*struct*/ v4l2_jpegcompression); |
|---|
| 1564 |
const VIDIOC_S_JPEGCOMP = _IOW!('V', 62, /*struct*/ v4l2_jpegcompression); |
|---|
| 1565 |
const VIDIOC_QUERYSTD = _IOR!('V', 63, v4l2_std_id); |
|---|
| 1566 |
const VIDIOC_TRY_FMT = _IOWR!('V', 64, /*struct*/ v4l2_format); |
|---|
| 1567 |
const VIDIOC_ENUMAUDIO = _IOWR!('V', 65, /*struct*/ v4l2_audio); |
|---|
| 1568 |
const VIDIOC_ENUMAUDOUT = _IOWR!('V', 66, /*struct*/ v4l2_audioout); |
|---|
| 1569 |
const VIDIOC_G_PRIORITY = _IOR!('V', 67, /*enum*/ v4l2_priority); |
|---|
| 1570 |
const VIDIOC_S_PRIORITY = _IOW!('V', 68, /*enum*/ v4l2_priority); |
|---|
| 1571 |
const VIDIOC_G_SLICED_VBI_CAP = _IOWR!('V', 69, /*struct*/ v4l2_sliced_vbi_cap); |
|---|
| 1572 |
const VIDIOC_LOG_STATUS = _IO!('V', 70); |
|---|
| 1573 |
const VIDIOC_G_EXT_CTRLS = _IOWR!('V', 71, /*struct*/ v4l2_ext_controls); |
|---|
| 1574 |
const VIDIOC_S_EXT_CTRLS = _IOWR!('V', 72, /*struct*/ v4l2_ext_controls); |
|---|
| 1575 |
const VIDIOC_TRY_EXT_CTRLS = _IOWR!('V', 73, /*struct*/ v4l2_ext_controls); |
|---|
| 1576 |
//#if 1 |
|---|
| 1577 |
const VIDIOC_ENUM_FRAMESIZES = _IOWR!('V', 74, /*struct*/ v4l2_frmsizeenum); |
|---|
| 1578 |
const VIDIOC_ENUM_FRAMEINTERVALS = _IOWR!('V', 75, /*struct*/ v4l2_frmivalenum); |
|---|
| 1579 |
const VIDIOC_G_ENC_INDEX = _IOR!('V', 76, /*struct*/ v4l2_enc_idx); |
|---|
| 1580 |
const VIDIOC_ENCODER_CMD = _IOWR!('V', 77, /*struct*/ v4l2_encoder_cmd); |
|---|
| 1581 |
const VIDIOC_TRY_ENCODER_CMD = _IOWR!('V', 78, /*struct*/ v4l2_encoder_cmd); |
|---|
| 1582 |
//#endif |
|---|
| 1583 |
|
|---|
| 1584 |
//#if 1 |
|---|
| 1585 |
/* Experimental, meant for debugging, testing and internal use. |
|---|
| 1586 |
Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined. |
|---|
| 1587 |
You must be root to use these ioctls. Never use these in applications! */ |
|---|
| 1588 |
const VIDIOC_DBG_S_REGISTER = _IOW!('V', 79, /*struct*/ v4l2_dbg_register); |
|---|
| 1589 |
const VIDIOC_DBG_G_REGISTER = _IOWR!('V', 80, /*struct*/ v4l2_dbg_register); |
|---|
| 1590 |
|
|---|
| 1591 |
/* Experimental, meant for debugging, testing and internal use. |
|---|
| 1592 |
Never use this ioctl in applications! */ |
|---|
| 1593 |
const VIDIOC_DBG_G_CHIP_IDENT = _IOWR!('V', 81, /*struct*/ v4l2_dbg_chip_ident); |
|---|
| 1594 |
//#endif |
|---|
| 1595 |
|
|---|
| 1596 |
const VIDIOC_S_HW_FREQ_SEEK = _IOW!('V', 82, /*struct*/ v4l2_hw_freq_seek); |
|---|
| 1597 |
/* Reminder: when adding new ioctls please add support for them to |
|---|
| 1598 |
drivers/media/video/v4l2-compat-ioctl32.c as well! */ |
|---|
| 1599 |
|
|---|
| 1600 |
//#ifdef __OLD_VIDIOC_ |
|---|
| 1601 |
/* for compatibility, will go away some day */ |
|---|
| 1602 |
const VIDIOC_OVERLAY_OLD = _IOWR!('V', 14, int); |
|---|
| 1603 |
const VIDIOC_S_PARM_OLD = _IOW!('V', 22, /*struct*/ v4l2_streamparm); |
|---|
| 1604 |
const VIDIOC_S_CTRL_OLD = _IOW!('V', 28, /*struct*/ v4l2_control); |
|---|
| 1605 |
const VIDIOC_G_AUDIO_OLD = _IOWR!('V', 33, /*struct*/ v4l2_audio); |
|---|
| 1606 |
const VIDIOC_G_AUDOUT_OLD = _IOWR!('V', 49, /*struct*/ v4l2_audioout); |
|---|
| 1607 |
const VIDIOC_CROPCAP_OLD = _IOR!('V', 58, /*struct*/ v4l2_cropcap); |
|---|
| 1608 |
//#endif |
|---|
| 1609 |
|
|---|
| 1610 |
const BASE_VIDIOC_PRIVATE = 192; /* 192-255 are private */ |
|---|