| 1 | /* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */ | 
|---|
| 2 | /* | 
|---|
| 3 | *  Video for Linux Two header file | 
|---|
| 4 | * | 
|---|
| 5 | *  Copyright (C) 1999-2012 the contributors | 
|---|
| 6 | * | 
|---|
| 7 | *  This program is free software; you can redistribute it and/or modify | 
|---|
| 8 | *  it under the terms of the GNU General Public License as published by | 
|---|
| 9 | *  the Free Software Foundation; either version 2 of the License, or | 
|---|
| 10 | *  (at your option) any later version. | 
|---|
| 11 | * | 
|---|
| 12 | *  This program is distributed in the hope that it will be useful, | 
|---|
| 13 | *  but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 14 | *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|---|
| 15 | *  GNU General Public License for more details. | 
|---|
| 16 | * | 
|---|
| 17 | *  Alternatively you can redistribute this file under the terms of the | 
|---|
| 18 | *  BSD license as stated below: | 
|---|
| 19 | * | 
|---|
| 20 | *  Redistribution and use in source and binary forms, with or without | 
|---|
| 21 | *  modification, are permitted provided that the following conditions | 
|---|
| 22 | *  are met: | 
|---|
| 23 | *  1. Redistributions of source code must retain the above copyright | 
|---|
| 24 | *     notice, this list of conditions and the following disclaimer. | 
|---|
| 25 | *  2. Redistributions in binary form must reproduce the above copyright | 
|---|
| 26 | *     notice, this list of conditions and the following disclaimer in | 
|---|
| 27 | *     the documentation and/or other materials provided with the | 
|---|
| 28 | *     distribution. | 
|---|
| 29 | *  3. The names of its contributors may not be used to endorse or promote | 
|---|
| 30 | *     products derived from this software without specific prior written | 
|---|
| 31 | *     permission. | 
|---|
| 32 | * | 
|---|
| 33 | *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 
|---|
| 34 | *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 
|---|
| 35 | *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 
|---|
| 36 | *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 
|---|
| 37 | *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
|---|
| 38 | *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED | 
|---|
| 39 | *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 
|---|
| 40 | *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | 
|---|
| 41 | *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | 
|---|
| 42 | *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 
|---|
| 43 | *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
|---|
| 44 | * | 
|---|
| 45 | *	Header file for v4l or V4L2 drivers and applications | 
|---|
| 46 | * with public API. | 
|---|
| 47 | * All kernel-specific stuff were moved to media/v4l2-dev.h, so | 
|---|
| 48 | * no #if __KERNEL tests are allowed here | 
|---|
| 49 | * | 
|---|
| 50 | *	See https://linuxtv.org for more info | 
|---|
| 51 | * | 
|---|
| 52 | *	Author: Bill Dirks <bill@thedirks.org> | 
|---|
| 53 | *		Justin Schoeman | 
|---|
| 54 | *              Hans Verkuil <hverkuil@kernel.org> | 
|---|
| 55 | *		et al. | 
|---|
| 56 | */ | 
|---|
| 57 | #ifndef _UAPI__LINUX_VIDEODEV2_H | 
|---|
| 58 | #define _UAPI__LINUX_VIDEODEV2_H | 
|---|
| 59 |  | 
|---|
| 60 | #ifndef __KERNEL__ | 
|---|
| 61 | #include <sys/time.h> | 
|---|
| 62 | #endif | 
|---|
| 63 | #include <linux/compiler.h> | 
|---|
| 64 | #include <linux/ioctl.h> | 
|---|
| 65 | #include <linux/types.h> | 
|---|
| 66 | #include <linux/v4l2-common.h> | 
|---|
| 67 | #include <linux/v4l2-controls.h> | 
|---|
| 68 |  | 
|---|
| 69 | /* | 
|---|
| 70 | * Common stuff for both V4L1 and V4L2 | 
|---|
| 71 | * Moved from videodev.h | 
|---|
| 72 | */ | 
|---|
| 73 | #define VIDEO_MAX_FRAME               32 | 
|---|
| 74 | #define VIDEO_MAX_PLANES               8 | 
|---|
| 75 |  | 
|---|
| 76 | /* | 
|---|
| 77 | *	M I S C E L L A N E O U S | 
|---|
| 78 | */ | 
|---|
| 79 |  | 
|---|
| 80 | /*  Four-character-code (FOURCC) */ | 
|---|
| 81 | #define v4l2_fourcc(a, b, c, d)\ | 
|---|
| 82 | ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24)) | 
|---|
| 83 | #define v4l2_fourcc_be(a, b, c, d)	(v4l2_fourcc(a, b, c, d) | (1U << 31)) | 
|---|
| 84 |  | 
|---|
| 85 | /* | 
|---|
| 86 | *	E N U M S | 
|---|
| 87 | */ | 
|---|
| 88 | enum v4l2_field { | 
|---|
| 89 | V4L2_FIELD_ANY           = 0, /* driver can choose from none, | 
|---|
| 90 | top, bottom, interlaced | 
|---|
| 91 | depending on whatever it thinks | 
|---|
| 92 | is approximate ... */ | 
|---|
| 93 | V4L2_FIELD_NONE          = 1, /* this device has no fields ... */ | 
|---|
| 94 | V4L2_FIELD_TOP           = 2, /* top field only */ | 
|---|
| 95 | V4L2_FIELD_BOTTOM        = 3, /* bottom field only */ | 
|---|
| 96 | V4L2_FIELD_INTERLACED    = 4, /* both fields interlaced */ | 
|---|
| 97 | V4L2_FIELD_SEQ_TB        = 5, /* both fields sequential into one | 
|---|
| 98 | buffer, top-bottom order */ | 
|---|
| 99 | V4L2_FIELD_SEQ_BT        = 6, /* same as above + bottom-top order */ | 
|---|
| 100 | V4L2_FIELD_ALTERNATE     = 7, /* both fields alternating into | 
|---|
| 101 | separate buffers */ | 
|---|
| 102 | V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field | 
|---|
| 103 | first and the top field is | 
|---|
| 104 | transmitted first */ | 
|---|
| 105 | V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field | 
|---|
| 106 | first and the bottom field is | 
|---|
| 107 | transmitted first */ | 
|---|
| 108 | }; | 
|---|
| 109 | #define V4L2_FIELD_HAS_TOP(field)	\ | 
|---|
| 110 | ((field) == V4L2_FIELD_TOP	||\ | 
|---|
| 111 | (field) == V4L2_FIELD_INTERLACED ||\ | 
|---|
| 112 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | 
|---|
| 113 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | 
|---|
| 114 | (field) == V4L2_FIELD_SEQ_TB	||\ | 
|---|
| 115 | (field) == V4L2_FIELD_SEQ_BT) | 
|---|
| 116 | #define V4L2_FIELD_HAS_BOTTOM(field)	\ | 
|---|
| 117 | ((field) == V4L2_FIELD_BOTTOM	||\ | 
|---|
| 118 | (field) == V4L2_FIELD_INTERLACED ||\ | 
|---|
| 119 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | 
|---|
| 120 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | 
|---|
| 121 | (field) == V4L2_FIELD_SEQ_TB	||\ | 
|---|
| 122 | (field) == V4L2_FIELD_SEQ_BT) | 
|---|
| 123 | #define V4L2_FIELD_HAS_BOTH(field)	\ | 
|---|
| 124 | ((field) == V4L2_FIELD_INTERLACED ||\ | 
|---|
| 125 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | 
|---|
| 126 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | 
|---|
| 127 | (field) == V4L2_FIELD_SEQ_TB ||\ | 
|---|
| 128 | (field) == V4L2_FIELD_SEQ_BT) | 
|---|
| 129 | #define V4L2_FIELD_HAS_T_OR_B(field)	\ | 
|---|
| 130 | ((field) == V4L2_FIELD_BOTTOM ||\ | 
|---|
| 131 | (field) == V4L2_FIELD_TOP ||\ | 
|---|
| 132 | (field) == V4L2_FIELD_ALTERNATE) | 
|---|
| 133 | #define V4L2_FIELD_IS_INTERLACED(field) \ | 
|---|
| 134 | ((field) == V4L2_FIELD_INTERLACED ||\ | 
|---|
| 135 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | 
|---|
| 136 | (field) == V4L2_FIELD_INTERLACED_BT) | 
|---|
| 137 | #define V4L2_FIELD_IS_SEQUENTIAL(field) \ | 
|---|
| 138 | ((field) == V4L2_FIELD_SEQ_TB ||\ | 
|---|
| 139 | (field) == V4L2_FIELD_SEQ_BT) | 
|---|
| 140 |  | 
|---|
| 141 | enum v4l2_buf_type { | 
|---|
| 142 | V4L2_BUF_TYPE_VIDEO_CAPTURE        = 1, | 
|---|
| 143 | V4L2_BUF_TYPE_VIDEO_OUTPUT         = 2, | 
|---|
| 144 | V4L2_BUF_TYPE_VIDEO_OVERLAY        = 3, | 
|---|
| 145 | V4L2_BUF_TYPE_VBI_CAPTURE          = 4, | 
|---|
| 146 | V4L2_BUF_TYPE_VBI_OUTPUT           = 5, | 
|---|
| 147 | V4L2_BUF_TYPE_SLICED_VBI_CAPTURE   = 6, | 
|---|
| 148 | V4L2_BUF_TYPE_SLICED_VBI_OUTPUT    = 7, | 
|---|
| 149 | V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8, | 
|---|
| 150 | V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9, | 
|---|
| 151 | V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE  = 10, | 
|---|
| 152 | V4L2_BUF_TYPE_SDR_CAPTURE          = 11, | 
|---|
| 153 | V4L2_BUF_TYPE_SDR_OUTPUT           = 12, | 
|---|
| 154 | V4L2_BUF_TYPE_META_CAPTURE         = 13, | 
|---|
| 155 | V4L2_BUF_TYPE_META_OUTPUT	   = 14, | 
|---|
| 156 | /* | 
|---|
| 157 | * Note: V4L2_TYPE_IS_VALID and V4L2_TYPE_IS_OUTPUT must | 
|---|
| 158 | * be updated if a new type is added. | 
|---|
| 159 | */ | 
|---|
| 160 | /* Deprecated, do not use */ | 
|---|
| 161 | V4L2_BUF_TYPE_PRIVATE              = 0x80, | 
|---|
| 162 | }; | 
|---|
| 163 |  | 
|---|
| 164 | #define V4L2_TYPE_IS_VALID(type)		 \ | 
|---|
| 165 | ((type) >= V4L2_BUF_TYPE_VIDEO_CAPTURE &&\ | 
|---|
| 166 | (type) <= V4L2_BUF_TYPE_META_OUTPUT) | 
|---|
| 167 |  | 
|---|
| 168 | #define V4L2_TYPE_IS_MULTIPLANAR(type)			\ | 
|---|
| 169 | ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE	\ | 
|---|
| 170 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) | 
|---|
| 171 |  | 
|---|
| 172 | #define V4L2_TYPE_IS_OUTPUT(type)				\ | 
|---|
| 173 | ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT			\ | 
|---|
| 174 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE		\ | 
|---|
| 175 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY	\ | 
|---|
| 176 | || (type) == V4L2_BUF_TYPE_VBI_OUTPUT			\ | 
|---|
| 177 | || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT		\ | 
|---|
| 178 | || (type) == V4L2_BUF_TYPE_SDR_OUTPUT			\ | 
|---|
| 179 | || (type) == V4L2_BUF_TYPE_META_OUTPUT) | 
|---|
| 180 |  | 
|---|
| 181 | #define V4L2_TYPE_IS_CAPTURE(type)	\ | 
|---|
| 182 | (V4L2_TYPE_IS_VALID(type) && !V4L2_TYPE_IS_OUTPUT(type)) | 
|---|
| 183 |  | 
|---|
| 184 | enum v4l2_tuner_type { | 
|---|
| 185 | V4L2_TUNER_RADIO	     = 1, | 
|---|
| 186 | V4L2_TUNER_ANALOG_TV	     = 2, | 
|---|
| 187 | V4L2_TUNER_DIGITAL_TV	     = 3, | 
|---|
| 188 | V4L2_TUNER_SDR               = 4, | 
|---|
| 189 | V4L2_TUNER_RF                = 5, | 
|---|
| 190 | }; | 
|---|
| 191 |  | 
|---|
| 192 | /* Deprecated, do not use */ | 
|---|
| 193 | #define V4L2_TUNER_ADC  V4L2_TUNER_SDR | 
|---|
| 194 |  | 
|---|
| 195 | enum v4l2_memory { | 
|---|
| 196 | V4L2_MEMORY_MMAP             = 1, | 
|---|
| 197 | V4L2_MEMORY_USERPTR          = 2, | 
|---|
| 198 | V4L2_MEMORY_OVERLAY          = 3, | 
|---|
| 199 | V4L2_MEMORY_DMABUF           = 4, | 
|---|
| 200 | }; | 
|---|
| 201 |  | 
|---|
| 202 | /* see also http://vektor.theorem.ca/graphics/ycbcr/ */ | 
|---|
| 203 | enum v4l2_colorspace { | 
|---|
| 204 | /* | 
|---|
| 205 | * Default colorspace, i.e. let the driver figure it out. | 
|---|
| 206 | * Can only be used with video capture. | 
|---|
| 207 | */ | 
|---|
| 208 | V4L2_COLORSPACE_DEFAULT       = 0, | 
|---|
| 209 |  | 
|---|
| 210 | /* SMPTE 170M: used for broadcast NTSC/PAL SDTV */ | 
|---|
| 211 | V4L2_COLORSPACE_SMPTE170M     = 1, | 
|---|
| 212 |  | 
|---|
| 213 | /* Obsolete pre-1998 SMPTE 240M HDTV standard, superseded by Rec 709 */ | 
|---|
| 214 | V4L2_COLORSPACE_SMPTE240M     = 2, | 
|---|
| 215 |  | 
|---|
| 216 | /* Rec.709: used for HDTV */ | 
|---|
| 217 | V4L2_COLORSPACE_REC709        = 3, | 
|---|
| 218 |  | 
|---|
| 219 | /* | 
|---|
| 220 | * Deprecated, do not use. No driver will ever return this. This was | 
|---|
| 221 | * based on a misunderstanding of the bt878 datasheet. | 
|---|
| 222 | */ | 
|---|
| 223 | V4L2_COLORSPACE_BT878         = 4, | 
|---|
| 224 |  | 
|---|
| 225 | /* | 
|---|
| 226 | * NTSC 1953 colorspace. This only makes sense when dealing with | 
|---|
| 227 | * really, really old NTSC recordings. Superseded by SMPTE 170M. | 
|---|
| 228 | */ | 
|---|
| 229 | V4L2_COLORSPACE_470_SYSTEM_M  = 5, | 
|---|
| 230 |  | 
|---|
| 231 | /* | 
|---|
| 232 | * EBU Tech 3213 PAL/SECAM colorspace. | 
|---|
| 233 | */ | 
|---|
| 234 | V4L2_COLORSPACE_470_SYSTEM_BG = 6, | 
|---|
| 235 |  | 
|---|
| 236 | /* | 
|---|
| 237 | * Effectively shorthand for V4L2_COLORSPACE_SRGB, V4L2_YCBCR_ENC_601 | 
|---|
| 238 | * and V4L2_QUANTIZATION_FULL_RANGE. To be used for (Motion-)JPEG. | 
|---|
| 239 | */ | 
|---|
| 240 | V4L2_COLORSPACE_JPEG          = 7, | 
|---|
| 241 |  | 
|---|
| 242 | /* For RGB colorspaces such as produces by most webcams. */ | 
|---|
| 243 | V4L2_COLORSPACE_SRGB          = 8, | 
|---|
| 244 |  | 
|---|
| 245 | /* opRGB colorspace */ | 
|---|
| 246 | V4L2_COLORSPACE_OPRGB         = 9, | 
|---|
| 247 |  | 
|---|
| 248 | /* BT.2020 colorspace, used for UHDTV. */ | 
|---|
| 249 | V4L2_COLORSPACE_BT2020        = 10, | 
|---|
| 250 |  | 
|---|
| 251 | /* Raw colorspace: for RAW unprocessed images */ | 
|---|
| 252 | V4L2_COLORSPACE_RAW           = 11, | 
|---|
| 253 |  | 
|---|
| 254 | /* DCI-P3 colorspace, used by cinema projectors */ | 
|---|
| 255 | V4L2_COLORSPACE_DCI_P3        = 12, | 
|---|
| 256 |  | 
|---|
| 257 | #ifdef __KERNEL__ | 
|---|
| 258 | /* | 
|---|
| 259 | * Largest supported colorspace value, assigned by the compiler, used | 
|---|
| 260 | * by the framework to check for invalid values. | 
|---|
| 261 | */ | 
|---|
| 262 | V4L2_COLORSPACE_LAST, | 
|---|
| 263 | #endif | 
|---|
| 264 | }; | 
|---|
| 265 |  | 
|---|
| 266 | /* | 
|---|
| 267 | * Determine how COLORSPACE_DEFAULT should map to a proper colorspace. | 
|---|
| 268 | * This depends on whether this is a SDTV image (use SMPTE 170M), an | 
|---|
| 269 | * HDTV image (use Rec. 709), or something else (use sRGB). | 
|---|
| 270 | */ | 
|---|
| 271 | #define V4L2_MAP_COLORSPACE_DEFAULT(is_sdtv, is_hdtv) \ | 
|---|
| 272 | ((is_sdtv) ? V4L2_COLORSPACE_SMPTE170M : \ | 
|---|
| 273 | ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB)) | 
|---|
| 274 |  | 
|---|
| 275 | enum v4l2_xfer_func { | 
|---|
| 276 | /* | 
|---|
| 277 | * Mapping of V4L2_XFER_FUNC_DEFAULT to actual transfer functions | 
|---|
| 278 | * for the various colorspaces: | 
|---|
| 279 | * | 
|---|
| 280 | * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M, | 
|---|
| 281 | * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_REC709 and | 
|---|
| 282 | * V4L2_COLORSPACE_BT2020: V4L2_XFER_FUNC_709 | 
|---|
| 283 | * | 
|---|
| 284 | * V4L2_COLORSPACE_SRGB, V4L2_COLORSPACE_JPEG: V4L2_XFER_FUNC_SRGB | 
|---|
| 285 | * | 
|---|
| 286 | * V4L2_COLORSPACE_OPRGB: V4L2_XFER_FUNC_OPRGB | 
|---|
| 287 | * | 
|---|
| 288 | * V4L2_COLORSPACE_SMPTE240M: V4L2_XFER_FUNC_SMPTE240M | 
|---|
| 289 | * | 
|---|
| 290 | * V4L2_COLORSPACE_RAW: V4L2_XFER_FUNC_NONE | 
|---|
| 291 | * | 
|---|
| 292 | * V4L2_COLORSPACE_DCI_P3: V4L2_XFER_FUNC_DCI_P3 | 
|---|
| 293 | */ | 
|---|
| 294 | V4L2_XFER_FUNC_DEFAULT     = 0, | 
|---|
| 295 | V4L2_XFER_FUNC_709         = 1, | 
|---|
| 296 | V4L2_XFER_FUNC_SRGB        = 2, | 
|---|
| 297 | V4L2_XFER_FUNC_OPRGB       = 3, | 
|---|
| 298 | V4L2_XFER_FUNC_SMPTE240M   = 4, | 
|---|
| 299 | V4L2_XFER_FUNC_NONE        = 5, | 
|---|
| 300 | V4L2_XFER_FUNC_DCI_P3      = 6, | 
|---|
| 301 | V4L2_XFER_FUNC_SMPTE2084   = 7, | 
|---|
| 302 | #ifdef __KERNEL__ | 
|---|
| 303 | /* | 
|---|
| 304 | * Largest supported transfer function value, assigned by the compiler, | 
|---|
| 305 | * used by the framework to check for invalid values. | 
|---|
| 306 | */ | 
|---|
| 307 | V4L2_XFER_FUNC_LAST, | 
|---|
| 308 | #endif | 
|---|
| 309 | }; | 
|---|
| 310 |  | 
|---|
| 311 | /* | 
|---|
| 312 | * Determine how XFER_FUNC_DEFAULT should map to a proper transfer function. | 
|---|
| 313 | * This depends on the colorspace. | 
|---|
| 314 | */ | 
|---|
| 315 | #define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \ | 
|---|
| 316 | ((colsp) == V4L2_COLORSPACE_OPRGB ? V4L2_XFER_FUNC_OPRGB : \ | 
|---|
| 317 | ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \ | 
|---|
| 318 | ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : \ | 
|---|
| 319 | ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \ | 
|---|
| 320 | ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? \ | 
|---|
| 321 | V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709))))) | 
|---|
| 322 |  | 
|---|
| 323 | enum v4l2_ycbcr_encoding { | 
|---|
| 324 | /* | 
|---|
| 325 | * Mapping of V4L2_YCBCR_ENC_DEFAULT to actual encodings for the | 
|---|
| 326 | * various colorspaces: | 
|---|
| 327 | * | 
|---|
| 328 | * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M, | 
|---|
| 329 | * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_SRGB, | 
|---|
| 330 | * V4L2_COLORSPACE_OPRGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601 | 
|---|
| 331 | * | 
|---|
| 332 | * V4L2_COLORSPACE_REC709 and V4L2_COLORSPACE_DCI_P3: V4L2_YCBCR_ENC_709 | 
|---|
| 333 | * | 
|---|
| 334 | * V4L2_COLORSPACE_BT2020: V4L2_YCBCR_ENC_BT2020 | 
|---|
| 335 | * | 
|---|
| 336 | * V4L2_COLORSPACE_SMPTE240M: V4L2_YCBCR_ENC_SMPTE240M | 
|---|
| 337 | */ | 
|---|
| 338 | V4L2_YCBCR_ENC_DEFAULT        = 0, | 
|---|
| 339 |  | 
|---|
| 340 | /* ITU-R 601 -- SDTV */ | 
|---|
| 341 | V4L2_YCBCR_ENC_601            = 1, | 
|---|
| 342 |  | 
|---|
| 343 | /* Rec. 709 -- HDTV */ | 
|---|
| 344 | V4L2_YCBCR_ENC_709            = 2, | 
|---|
| 345 |  | 
|---|
| 346 | /* ITU-R 601/EN 61966-2-4 Extended Gamut -- SDTV */ | 
|---|
| 347 | V4L2_YCBCR_ENC_XV601          = 3, | 
|---|
| 348 |  | 
|---|
| 349 | /* Rec. 709/EN 61966-2-4 Extended Gamut -- HDTV */ | 
|---|
| 350 | V4L2_YCBCR_ENC_XV709          = 4, | 
|---|
| 351 |  | 
|---|
| 352 | #ifndef __KERNEL__ | 
|---|
| 353 | /* | 
|---|
| 354 | * sYCC (Y'CbCr encoding of sRGB), identical to ENC_601. It was added | 
|---|
| 355 | * originally due to a misunderstanding of the sYCC standard. It should | 
|---|
| 356 | * not be used, instead use V4L2_YCBCR_ENC_601. | 
|---|
| 357 | */ | 
|---|
| 358 | V4L2_YCBCR_ENC_SYCC           = 5, | 
|---|
| 359 | #endif | 
|---|
| 360 |  | 
|---|
| 361 | /* BT.2020 Non-constant Luminance Y'CbCr */ | 
|---|
| 362 | V4L2_YCBCR_ENC_BT2020         = 6, | 
|---|
| 363 |  | 
|---|
| 364 | /* BT.2020 Constant Luminance Y'CbcCrc */ | 
|---|
| 365 | V4L2_YCBCR_ENC_BT2020_CONST_LUM = 7, | 
|---|
| 366 |  | 
|---|
| 367 | /* SMPTE 240M -- Obsolete HDTV */ | 
|---|
| 368 | V4L2_YCBCR_ENC_SMPTE240M      = 8, | 
|---|
| 369 | #ifdef __KERNEL__ | 
|---|
| 370 | /* | 
|---|
| 371 | * Largest supported encoding value, assigned by the compiler, used by | 
|---|
| 372 | * the framework to check for invalid values. | 
|---|
| 373 | */ | 
|---|
| 374 | V4L2_YCBCR_ENC_LAST, | 
|---|
| 375 | #endif | 
|---|
| 376 | }; | 
|---|
| 377 |  | 
|---|
| 378 | /* | 
|---|
| 379 | * enum v4l2_hsv_encoding values should not collide with the ones from | 
|---|
| 380 | * enum v4l2_ycbcr_encoding. | 
|---|
| 381 | */ | 
|---|
| 382 | enum v4l2_hsv_encoding { | 
|---|
| 383 |  | 
|---|
| 384 | /* Hue mapped to 0 - 179 */ | 
|---|
| 385 | V4L2_HSV_ENC_180		= 128, | 
|---|
| 386 |  | 
|---|
| 387 | /* Hue mapped to 0-255 */ | 
|---|
| 388 | V4L2_HSV_ENC_256		= 129, | 
|---|
| 389 | }; | 
|---|
| 390 |  | 
|---|
| 391 | /* | 
|---|
| 392 | * Determine how YCBCR_ENC_DEFAULT should map to a proper Y'CbCr encoding. | 
|---|
| 393 | * This depends on the colorspace. | 
|---|
| 394 | */ | 
|---|
| 395 | #define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) \ | 
|---|
| 396 | (((colsp) == V4L2_COLORSPACE_REC709 || \ | 
|---|
| 397 | (colsp) == V4L2_COLORSPACE_DCI_P3) ? V4L2_YCBCR_ENC_709 : \ | 
|---|
| 398 | ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : \ | 
|---|
| 399 | ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : \ | 
|---|
| 400 | V4L2_YCBCR_ENC_601))) | 
|---|
| 401 |  | 
|---|
| 402 | enum v4l2_quantization { | 
|---|
| 403 | /* | 
|---|
| 404 | * The default for R'G'B' quantization is always full range. | 
|---|
| 405 | * For Y'CbCr the quantization is always limited range, except | 
|---|
| 406 | * for COLORSPACE_JPEG: this is full range. | 
|---|
| 407 | */ | 
|---|
| 408 | V4L2_QUANTIZATION_DEFAULT     = 0, | 
|---|
| 409 | V4L2_QUANTIZATION_FULL_RANGE  = 1, | 
|---|
| 410 | V4L2_QUANTIZATION_LIM_RANGE   = 2, | 
|---|
| 411 | }; | 
|---|
| 412 |  | 
|---|
| 413 | /* | 
|---|
| 414 | * Determine how QUANTIZATION_DEFAULT should map to a proper quantization. | 
|---|
| 415 | * This depends on whether the image is RGB or not, the colorspace. | 
|---|
| 416 | * The Y'CbCr encoding is not used anymore, but is still there for backwards | 
|---|
| 417 | * compatibility. | 
|---|
| 418 | */ | 
|---|
| 419 | #define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv, colsp, ycbcr_enc) \ | 
|---|
| 420 | (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \ | 
|---|
| 421 | V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE) | 
|---|
| 422 |  | 
|---|
| 423 | /* | 
|---|
| 424 | * Deprecated names for opRGB colorspace (IEC 61966-2-5) | 
|---|
| 425 | * | 
|---|
| 426 | * WARNING: Please don't use these deprecated defines in your code, as | 
|---|
| 427 | * there is a chance we have to remove them in the future. | 
|---|
| 428 | */ | 
|---|
| 429 | #ifndef __KERNEL__ | 
|---|
| 430 | #define V4L2_COLORSPACE_ADOBERGB V4L2_COLORSPACE_OPRGB | 
|---|
| 431 | #define V4L2_XFER_FUNC_ADOBERGB  V4L2_XFER_FUNC_OPRGB | 
|---|
| 432 | #endif | 
|---|
| 433 |  | 
|---|
| 434 | enum v4l2_priority { | 
|---|
| 435 | V4L2_PRIORITY_UNSET       = 0,  /* not initialized */ | 
|---|
| 436 | V4L2_PRIORITY_BACKGROUND  = 1, | 
|---|
| 437 | V4L2_PRIORITY_INTERACTIVE = 2, | 
|---|
| 438 | V4L2_PRIORITY_RECORD      = 3, | 
|---|
| 439 | V4L2_PRIORITY_DEFAULT     = V4L2_PRIORITY_INTERACTIVE, | 
|---|
| 440 | }; | 
|---|
| 441 |  | 
|---|
| 442 | struct v4l2_rect { | 
|---|
| 443 | __s32   left; | 
|---|
| 444 | __s32   top; | 
|---|
| 445 | __u32   width; | 
|---|
| 446 | __u32   height; | 
|---|
| 447 | }; | 
|---|
| 448 |  | 
|---|
| 449 | struct v4l2_fract { | 
|---|
| 450 | __u32   numerator; | 
|---|
| 451 | __u32   denominator; | 
|---|
| 452 | }; | 
|---|
| 453 |  | 
|---|
| 454 | struct v4l2_area { | 
|---|
| 455 | __u32   width; | 
|---|
| 456 | __u32   height; | 
|---|
| 457 | }; | 
|---|
| 458 |  | 
|---|
| 459 | /** | 
|---|
| 460 | * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP | 
|---|
| 461 | * | 
|---|
| 462 | * @driver:	   name of the driver module (e.g. "bttv") | 
|---|
| 463 | * @card:	   name of the card (e.g. "Hauppauge WinTV") | 
|---|
| 464 | * @bus_info:	   name of the bus (e.g. "PCI:" + pci_name(pci_dev) ) | 
|---|
| 465 | * @version:	   KERNEL_VERSION | 
|---|
| 466 | * @capabilities: capabilities of the physical device as a whole | 
|---|
| 467 | * @device_caps:  capabilities accessed via this particular device (node) | 
|---|
| 468 | * @reserved:	   reserved fields for future extensions | 
|---|
| 469 | */ | 
|---|
| 470 | struct v4l2_capability { | 
|---|
| 471 | __u8	driver[16]; | 
|---|
| 472 | __u8	card[32]; | 
|---|
| 473 | __u8	bus_info[32]; | 
|---|
| 474 | __u32   version; | 
|---|
| 475 | __u32	capabilities; | 
|---|
| 476 | __u32	device_caps; | 
|---|
| 477 | __u32	reserved[3]; | 
|---|
| 478 | }; | 
|---|
| 479 |  | 
|---|
| 480 | /* Values for 'capabilities' field */ | 
|---|
| 481 | #define V4L2_CAP_VIDEO_CAPTURE		0x00000001  /* Is a video capture device */ | 
|---|
| 482 | #define V4L2_CAP_VIDEO_OUTPUT		0x00000002  /* Is a video output device */ | 
|---|
| 483 | #define V4L2_CAP_VIDEO_OVERLAY		0x00000004  /* Can do video overlay */ | 
|---|
| 484 | #define V4L2_CAP_VBI_CAPTURE		0x00000010  /* Is a raw VBI capture device */ | 
|---|
| 485 | #define V4L2_CAP_VBI_OUTPUT		0x00000020  /* Is a raw VBI output device */ | 
|---|
| 486 | #define V4L2_CAP_SLICED_VBI_CAPTURE	0x00000040  /* Is a sliced VBI capture device */ | 
|---|
| 487 | #define V4L2_CAP_SLICED_VBI_OUTPUT	0x00000080  /* Is a sliced VBI output device */ | 
|---|
| 488 | #define V4L2_CAP_RDS_CAPTURE		0x00000100  /* RDS data capture */ | 
|---|
| 489 | #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY	0x00000200  /* Can do video output overlay */ | 
|---|
| 490 | #define V4L2_CAP_HW_FREQ_SEEK		0x00000400  /* Can do hardware frequency seek  */ | 
|---|
| 491 | #define V4L2_CAP_RDS_OUTPUT		0x00000800  /* Is an RDS encoder */ | 
|---|
| 492 |  | 
|---|
| 493 | /* Is a video capture device that supports multiplanar formats */ | 
|---|
| 494 | #define V4L2_CAP_VIDEO_CAPTURE_MPLANE	0x00001000 | 
|---|
| 495 | /* Is a video output device that supports multiplanar formats */ | 
|---|
| 496 | #define V4L2_CAP_VIDEO_OUTPUT_MPLANE	0x00002000 | 
|---|
| 497 | /* Is a video mem-to-mem device that supports multiplanar formats */ | 
|---|
| 498 | #define V4L2_CAP_VIDEO_M2M_MPLANE	0x00004000 | 
|---|
| 499 | /* Is a video mem-to-mem device */ | 
|---|
| 500 | #define V4L2_CAP_VIDEO_M2M		0x00008000 | 
|---|
| 501 |  | 
|---|
| 502 | #define V4L2_CAP_TUNER			0x00010000  /* has a tuner */ | 
|---|
| 503 | #define V4L2_CAP_AUDIO			0x00020000  /* has audio support */ | 
|---|
| 504 | #define V4L2_CAP_RADIO			0x00040000  /* is a radio device */ | 
|---|
| 505 | #define V4L2_CAP_MODULATOR		0x00080000  /* has a modulator */ | 
|---|
| 506 |  | 
|---|
| 507 | #define V4L2_CAP_SDR_CAPTURE		0x00100000  /* Is a SDR capture device */ | 
|---|
| 508 | #define V4L2_CAP_EXT_PIX_FORMAT		0x00200000  /* Supports the extended pixel format */ | 
|---|
| 509 | #define V4L2_CAP_SDR_OUTPUT		0x00400000  /* Is a SDR output device */ | 
|---|
| 510 | #define V4L2_CAP_META_CAPTURE		0x00800000  /* Is a metadata capture device */ | 
|---|
| 511 |  | 
|---|
| 512 | #define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */ | 
|---|
| 513 | #define V4L2_CAP_EDID			0x02000000  /* Is an EDID-only device */ | 
|---|
| 514 | #define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */ | 
|---|
| 515 | #define V4L2_CAP_META_OUTPUT		0x08000000  /* Is a metadata output device */ | 
|---|
| 516 |  | 
|---|
| 517 | #define V4L2_CAP_TOUCH                  0x10000000  /* Is a touch device */ | 
|---|
| 518 |  | 
|---|
| 519 | #define V4L2_CAP_IO_MC			0x20000000  /* Is input/output controlled by the media controller */ | 
|---|
| 520 |  | 
|---|
| 521 | #define V4L2_CAP_DEVICE_CAPS            0x80000000  /* sets device capabilities field */ | 
|---|
| 522 |  | 
|---|
| 523 | /* | 
|---|
| 524 | *	V I D E O   I M A G E   F O R M A T | 
|---|
| 525 | */ | 
|---|
| 526 | struct v4l2_pix_format { | 
|---|
| 527 | __u32			width; | 
|---|
| 528 | __u32			height; | 
|---|
| 529 | __u32			pixelformat; | 
|---|
| 530 | __u32			field;		/* enum v4l2_field */ | 
|---|
| 531 | __u32			bytesperline;	/* for padding, zero if unused */ | 
|---|
| 532 | __u32			sizeimage; | 
|---|
| 533 | __u32			colorspace;	/* enum v4l2_colorspace */ | 
|---|
| 534 | __u32			priv;		/* private data, depends on pixelformat */ | 
|---|
| 535 | __u32			flags;		/* format flags (V4L2_PIX_FMT_FLAG_*) */ | 
|---|
| 536 | union { | 
|---|
| 537 | /* enum v4l2_ycbcr_encoding */ | 
|---|
| 538 | __u32			ycbcr_enc; | 
|---|
| 539 | /* enum v4l2_hsv_encoding */ | 
|---|
| 540 | __u32			hsv_enc; | 
|---|
| 541 | }; | 
|---|
| 542 | __u32			quantization;	/* enum v4l2_quantization */ | 
|---|
| 543 | __u32			xfer_func;	/* enum v4l2_xfer_func */ | 
|---|
| 544 | }; | 
|---|
| 545 |  | 
|---|
| 546 | /*      Pixel format         FOURCC                          depth  Description  */ | 
|---|
| 547 |  | 
|---|
| 548 | /* RGB formats (1 or 2 bytes per pixel) */ | 
|---|
| 549 | #define V4L2_PIX_FMT_RGB332  v4l2_fourcc('R', 'G', 'B', '1') /*  8  RGB-3-3-2     */ | 
|---|
| 550 | #define V4L2_PIX_FMT_RGB444  v4l2_fourcc('R', '4', '4', '4') /* 16  xxxxrrrr ggggbbbb */ | 
|---|
| 551 | #define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16  aaaarrrr ggggbbbb */ | 
|---|
| 552 | #define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16  xxxxrrrr ggggbbbb */ | 
|---|
| 553 | #define V4L2_PIX_FMT_RGBA444 v4l2_fourcc('R', 'A', '1', '2') /* 16  rrrrgggg bbbbaaaa */ | 
|---|
| 554 | #define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16  rrrrgggg bbbbxxxx */ | 
|---|
| 555 | #define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16  aaaabbbb ggggrrrr */ | 
|---|
| 556 | #define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16  xxxxbbbb ggggrrrr */ | 
|---|
| 557 | #define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16  bbbbgggg rrrraaaa */ | 
|---|
| 558 | #define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16  bbbbgggg rrrrxxxx */ | 
|---|
| 559 | #define V4L2_PIX_FMT_RGB555  v4l2_fourcc('R', 'G', 'B', 'O') /* 16  RGB-5-5-5     */ | 
|---|
| 560 | #define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16  ARGB-1-5-5-5  */ | 
|---|
| 561 | #define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16  XRGB-1-5-5-5  */ | 
|---|
| 562 | #define V4L2_PIX_FMT_RGBA555 v4l2_fourcc('R', 'A', '1', '5') /* 16  RGBA-5-5-5-1  */ | 
|---|
| 563 | #define V4L2_PIX_FMT_RGBX555 v4l2_fourcc('R', 'X', '1', '5') /* 16  RGBX-5-5-5-1  */ | 
|---|
| 564 | #define V4L2_PIX_FMT_ABGR555 v4l2_fourcc('A', 'B', '1', '5') /* 16  ABGR-1-5-5-5  */ | 
|---|
| 565 | #define V4L2_PIX_FMT_XBGR555 v4l2_fourcc('X', 'B', '1', '5') /* 16  XBGR-1-5-5-5  */ | 
|---|
| 566 | #define V4L2_PIX_FMT_BGRA555 v4l2_fourcc('B', 'A', '1', '5') /* 16  BGRA-5-5-5-1  */ | 
|---|
| 567 | #define V4L2_PIX_FMT_BGRX555 v4l2_fourcc('B', 'X', '1', '5') /* 16  BGRX-5-5-5-1  */ | 
|---|
| 568 | #define V4L2_PIX_FMT_RGB565  v4l2_fourcc('R', 'G', 'B', 'P') /* 16  RGB-5-6-5     */ | 
|---|
| 569 | #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16  RGB-5-5-5 BE  */ | 
|---|
| 570 | #define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16  ARGB-5-5-5 BE */ | 
|---|
| 571 | #define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16  XRGB-5-5-5 BE */ | 
|---|
| 572 | #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16  RGB-5-6-5 BE  */ | 
|---|
| 573 |  | 
|---|
| 574 | /* RGB formats (3 or 4 bytes per pixel) */ | 
|---|
| 575 | #define V4L2_PIX_FMT_BGR666  v4l2_fourcc('B', 'G', 'R', 'H') /* 18  BGR-6-6-6	  */ | 
|---|
| 576 | #define V4L2_PIX_FMT_BGR24   v4l2_fourcc('B', 'G', 'R', '3') /* 24  BGR-8-8-8     */ | 
|---|
| 577 | #define V4L2_PIX_FMT_RGB24   v4l2_fourcc('R', 'G', 'B', '3') /* 24  RGB-8-8-8     */ | 
|---|
| 578 | #define V4L2_PIX_FMT_BGR32   v4l2_fourcc('B', 'G', 'R', '4') /* 32  BGR-8-8-8-8   */ | 
|---|
| 579 | #define V4L2_PIX_FMT_ABGR32  v4l2_fourcc('A', 'R', '2', '4') /* 32  BGRA-8-8-8-8  */ | 
|---|
| 580 | #define V4L2_PIX_FMT_XBGR32  v4l2_fourcc('X', 'R', '2', '4') /* 32  BGRX-8-8-8-8  */ | 
|---|
| 581 | #define V4L2_PIX_FMT_BGRA32  v4l2_fourcc('R', 'A', '2', '4') /* 32  ABGR-8-8-8-8  */ | 
|---|
| 582 | #define V4L2_PIX_FMT_BGRX32  v4l2_fourcc('R', 'X', '2', '4') /* 32  XBGR-8-8-8-8  */ | 
|---|
| 583 | #define V4L2_PIX_FMT_RGB32   v4l2_fourcc('R', 'G', 'B', '4') /* 32  RGB-8-8-8-8   */ | 
|---|
| 584 | #define V4L2_PIX_FMT_RGBA32  v4l2_fourcc('A', 'B', '2', '4') /* 32  RGBA-8-8-8-8  */ | 
|---|
| 585 | #define V4L2_PIX_FMT_RGBX32  v4l2_fourcc('X', 'B', '2', '4') /* 32  RGBX-8-8-8-8  */ | 
|---|
| 586 | #define V4L2_PIX_FMT_ARGB32  v4l2_fourcc('B', 'A', '2', '4') /* 32  ARGB-8-8-8-8  */ | 
|---|
| 587 | #define V4L2_PIX_FMT_XRGB32  v4l2_fourcc('B', 'X', '2', '4') /* 32  XRGB-8-8-8-8  */ | 
|---|
| 588 | #define V4L2_PIX_FMT_RGBX1010102 v4l2_fourcc('R', 'X', '3', '0') /* 32  RGBX-10-10-10-2 */ | 
|---|
| 589 | #define V4L2_PIX_FMT_RGBA1010102 v4l2_fourcc('R', 'A', '3', '0') /* 32  RGBA-10-10-10-2 */ | 
|---|
| 590 | #define V4L2_PIX_FMT_ARGB2101010 v4l2_fourcc('A', 'R', '3', '0') /* 32  ARGB-2-10-10-10 */ | 
|---|
| 591 |  | 
|---|
| 592 | /* RGB formats (6 or 8 bytes per pixel) */ | 
|---|
| 593 | #define V4L2_PIX_FMT_BGR48_12    v4l2_fourcc('B', '3', '1', '2') /* 48  BGR 12-bit per component */ | 
|---|
| 594 | #define V4L2_PIX_FMT_BGR48       v4l2_fourcc('B', 'G', 'R', '6') /* 48  BGR 16-bit per component */ | 
|---|
| 595 | #define V4L2_PIX_FMT_RGB48       v4l2_fourcc('R', 'G', 'B', '6') /* 48  RGB 16-bit per component */ | 
|---|
| 596 | #define V4L2_PIX_FMT_ABGR64_12   v4l2_fourcc('B', '4', '1', '2') /* 64  BGRA 12-bit per component */ | 
|---|
| 597 |  | 
|---|
| 598 | /* Grey formats */ | 
|---|
| 599 | #define V4L2_PIX_FMT_GREY    v4l2_fourcc('G', 'R', 'E', 'Y') /*  8  Greyscale     */ | 
|---|
| 600 | #define V4L2_PIX_FMT_Y4      v4l2_fourcc('Y', '0', '4', ' ') /*  4  Greyscale     */ | 
|---|
| 601 | #define V4L2_PIX_FMT_Y6      v4l2_fourcc('Y', '0', '6', ' ') /*  6  Greyscale     */ | 
|---|
| 602 | #define V4L2_PIX_FMT_Y10     v4l2_fourcc('Y', '1', '0', ' ') /* 10  Greyscale     */ | 
|---|
| 603 | #define V4L2_PIX_FMT_Y12     v4l2_fourcc('Y', '1', '2', ' ') /* 12  Greyscale     */ | 
|---|
| 604 | #define V4L2_PIX_FMT_Y012    v4l2_fourcc('Y', '0', '1', '2') /* 12  Greyscale     */ | 
|---|
| 605 | #define V4L2_PIX_FMT_Y14     v4l2_fourcc('Y', '1', '4', ' ') /* 14  Greyscale     */ | 
|---|
| 606 | #define V4L2_PIX_FMT_Y16     v4l2_fourcc('Y', '1', '6', ' ') /* 16  Greyscale     */ | 
|---|
| 607 | #define V4L2_PIX_FMT_Y16_BE  v4l2_fourcc_be('Y', '1', '6', ' ') /* 16  Greyscale BE  */ | 
|---|
| 608 |  | 
|---|
| 609 | /* Grey bit-packed formats */ | 
|---|
| 610 | #define V4L2_PIX_FMT_Y10BPACK    v4l2_fourcc('Y', '1', '0', 'B') /* 10  Greyscale bit-packed */ | 
|---|
| 611 | #define V4L2_PIX_FMT_Y10P    v4l2_fourcc('Y', '1', '0', 'P') /* 10  Greyscale, MIPI RAW10 packed */ | 
|---|
| 612 | #define V4L2_PIX_FMT_IPU3_Y10		v4l2_fourcc('i', 'p', '3', 'y') /* IPU3 packed 10-bit greyscale */ | 
|---|
| 613 | #define V4L2_PIX_FMT_Y12P    v4l2_fourcc('Y', '1', '2', 'P') /* 12  Greyscale, MIPI RAW12 packed */ | 
|---|
| 614 | #define V4L2_PIX_FMT_Y14P    v4l2_fourcc('Y', '1', '4', 'P') /* 14  Greyscale, MIPI RAW14 packed */ | 
|---|
| 615 |  | 
|---|
| 616 | /* Palette formats */ | 
|---|
| 617 | #define V4L2_PIX_FMT_PAL8    v4l2_fourcc('P', 'A', 'L', '8') /*  8  8-bit palette */ | 
|---|
| 618 |  | 
|---|
| 619 | /* Chrominance formats */ | 
|---|
| 620 | #define V4L2_PIX_FMT_UV8     v4l2_fourcc('U', 'V', '8', ' ') /*  8  UV 4:4 */ | 
|---|
| 621 |  | 
|---|
| 622 | /* Luminance+Chrominance formats */ | 
|---|
| 623 | #define V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16  YUV 4:2:2     */ | 
|---|
| 624 | #define V4L2_PIX_FMT_YYUV    v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16  YUV 4:2:2     */ | 
|---|
| 625 | #define V4L2_PIX_FMT_YVYU    v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ | 
|---|
| 626 | #define V4L2_PIX_FMT_UYVY    v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16  YUV 4:2:2     */ | 
|---|
| 627 | #define V4L2_PIX_FMT_VYUY    v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16  YUV 4:2:2     */ | 
|---|
| 628 | #define V4L2_PIX_FMT_Y41P    v4l2_fourcc('Y', '4', '1', 'P') /* 12  YUV 4:1:1     */ | 
|---|
| 629 | #define V4L2_PIX_FMT_YUV444  v4l2_fourcc('Y', '4', '4', '4') /* 16  xxxxyyyy uuuuvvvv */ | 
|---|
| 630 | #define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O') /* 16  YUV-5-5-5     */ | 
|---|
| 631 | #define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y', 'U', 'V', 'P') /* 16  YUV-5-6-5     */ | 
|---|
| 632 | #define V4L2_PIX_FMT_YUV24   v4l2_fourcc('Y', 'U', 'V', '3') /* 24  YUV-8-8-8     */ | 
|---|
| 633 | #define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  YUV-8-8-8-8   */ | 
|---|
| 634 | #define V4L2_PIX_FMT_AYUV32  v4l2_fourcc('A', 'Y', 'U', 'V') /* 32  AYUV-8-8-8-8  */ | 
|---|
| 635 | #define V4L2_PIX_FMT_XYUV32  v4l2_fourcc('X', 'Y', 'U', 'V') /* 32  XYUV-8-8-8-8  */ | 
|---|
| 636 | #define V4L2_PIX_FMT_VUYA32  v4l2_fourcc('V', 'U', 'Y', 'A') /* 32  VUYA-8-8-8-8  */ | 
|---|
| 637 | #define V4L2_PIX_FMT_VUYX32  v4l2_fourcc('V', 'U', 'Y', 'X') /* 32  VUYX-8-8-8-8  */ | 
|---|
| 638 | #define V4L2_PIX_FMT_YUVA32  v4l2_fourcc('Y', 'U', 'V', 'A') /* 32  YUVA-8-8-8-8  */ | 
|---|
| 639 | #define V4L2_PIX_FMT_YUVX32  v4l2_fourcc('Y', 'U', 'V', 'X') /* 32  YUVX-8-8-8-8  */ | 
|---|
| 640 | #define V4L2_PIX_FMT_M420    v4l2_fourcc('M', '4', '2', '0') /* 12  YUV 4:2:0 2 lines y, 1 line uv interleaved */ | 
|---|
| 641 | #define V4L2_PIX_FMT_YUV48_12    v4l2_fourcc('Y', '3', '1', '2') /* 48  YUV 4:4:4 12-bit per component */ | 
|---|
| 642 |  | 
|---|
| 643 | /* | 
|---|
| 644 | * YCbCr packed format. For each Y2xx format, xx bits of valid data occupy the MSBs | 
|---|
| 645 | * of the 16 bit components, and 16-xx bits of zero padding occupy the LSBs. | 
|---|
| 646 | */ | 
|---|
| 647 | #define V4L2_PIX_FMT_Y210    v4l2_fourcc('Y', '2', '1', '0') /* 32  YUYV 4:2:2 */ | 
|---|
| 648 | #define V4L2_PIX_FMT_Y212    v4l2_fourcc('Y', '2', '1', '2') /* 32  YUYV 4:2:2 */ | 
|---|
| 649 | #define V4L2_PIX_FMT_Y216    v4l2_fourcc('Y', '2', '1', '6') /* 32  YUYV 4:2:2 */ | 
|---|
| 650 |  | 
|---|
| 651 | /* two planes -- one Y, one Cr + Cb interleaved  */ | 
|---|
| 652 | #define V4L2_PIX_FMT_NV12    v4l2_fourcc('N', 'V', '1', '2') /* 12  Y/CbCr 4:2:0  */ | 
|---|
| 653 | #define V4L2_PIX_FMT_NV21    v4l2_fourcc('N', 'V', '2', '1') /* 12  Y/CrCb 4:2:0  */ | 
|---|
| 654 | #define V4L2_PIX_FMT_NV15    v4l2_fourcc('N', 'V', '1', '5') /* 15  Y/CbCr 4:2:0 10-bit packed */ | 
|---|
| 655 | #define V4L2_PIX_FMT_NV16    v4l2_fourcc('N', 'V', '1', '6') /* 16  Y/CbCr 4:2:2  */ | 
|---|
| 656 | #define V4L2_PIX_FMT_NV61    v4l2_fourcc('N', 'V', '6', '1') /* 16  Y/CrCb 4:2:2  */ | 
|---|
| 657 | #define V4L2_PIX_FMT_NV20    v4l2_fourcc('N', 'V', '2', '0') /* 20  Y/CbCr 4:2:2 10-bit packed */ | 
|---|
| 658 | #define V4L2_PIX_FMT_NV24    v4l2_fourcc('N', 'V', '2', '4') /* 24  Y/CbCr 4:4:4  */ | 
|---|
| 659 | #define V4L2_PIX_FMT_NV42    v4l2_fourcc('N', 'V', '4', '2') /* 24  Y/CrCb 4:4:4  */ | 
|---|
| 660 | #define V4L2_PIX_FMT_P010    v4l2_fourcc('P', '0', '1', '0') /* 24  Y/CbCr 4:2:0 10-bit per component */ | 
|---|
| 661 | #define V4L2_PIX_FMT_P012    v4l2_fourcc('P', '0', '1', '2') /* 24  Y/CbCr 4:2:0 12-bit per component */ | 
|---|
| 662 |  | 
|---|
| 663 | /* two non contiguous planes - one Y, one Cr + Cb interleaved  */ | 
|---|
| 664 | #define V4L2_PIX_FMT_NV12M   v4l2_fourcc('N', 'M', '1', '2') /* 12  Y/CbCr 4:2:0  */ | 
|---|
| 665 | #define V4L2_PIX_FMT_NV21M   v4l2_fourcc('N', 'M', '2', '1') /* 21  Y/CrCb 4:2:0  */ | 
|---|
| 666 | #define V4L2_PIX_FMT_NV16M   v4l2_fourcc('N', 'M', '1', '6') /* 16  Y/CbCr 4:2:2  */ | 
|---|
| 667 | #define V4L2_PIX_FMT_NV61M   v4l2_fourcc('N', 'M', '6', '1') /* 16  Y/CrCb 4:2:2  */ | 
|---|
| 668 | #define V4L2_PIX_FMT_P012M   v4l2_fourcc('P', 'M', '1', '2') /* 24  Y/CbCr 4:2:0 12-bit per component */ | 
|---|
| 669 |  | 
|---|
| 670 | /* three planes - Y Cb, Cr */ | 
|---|
| 671 | #define V4L2_PIX_FMT_YUV410  v4l2_fourcc('Y', 'U', 'V', '9') /*  9  YUV 4:1:0     */ | 
|---|
| 672 | #define V4L2_PIX_FMT_YVU410  v4l2_fourcc('Y', 'V', 'U', '9') /*  9  YVU 4:1:0     */ | 
|---|
| 673 | #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 12  YVU411 planar */ | 
|---|
| 674 | #define V4L2_PIX_FMT_YUV420  v4l2_fourcc('Y', 'U', '1', '2') /* 12  YUV 4:2:0     */ | 
|---|
| 675 | #define V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y', 'V', '1', '2') /* 12  YVU 4:2:0     */ | 
|---|
| 676 | #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16  YVU422 planar */ | 
|---|
| 677 |  | 
|---|
| 678 | /* three non contiguous planes - Y, Cb, Cr */ | 
|---|
| 679 | #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12  YUV420 planar */ | 
|---|
| 680 | #define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12  YVU420 planar */ | 
|---|
| 681 | #define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6') /* 16  YUV422 planar */ | 
|---|
| 682 | #define V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1') /* 16  YVU422 planar */ | 
|---|
| 683 | #define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24  YUV444 planar */ | 
|---|
| 684 | #define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24  YVU444 planar */ | 
|---|
| 685 |  | 
|---|
| 686 | /* Tiled YUV formats */ | 
|---|
| 687 | #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')   /* 12  Y/CbCr 4:2:0  4x4 tiles */ | 
|---|
| 688 | #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 16x16 tiles */ | 
|---|
| 689 | #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12  Y/CbCr 4:2:0 32x32 tiles */ | 
|---|
| 690 | #define V4L2_PIX_FMT_NV15_4L4 v4l2_fourcc('V', 'T', '1', '5') /* 15 Y/CbCr 4:2:0 10-bit 4x4 tiles */ | 
|---|
| 691 | #define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0') /* 12  Y/CbCr 4:2:0 10-bit 4x4 macroblocks */ | 
|---|
| 692 | #define V4L2_PIX_FMT_NV12_8L128       v4l2_fourcc('A', 'T', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */ | 
|---|
| 693 | #define V4L2_PIX_FMT_NV12_10BE_8L128  v4l2_fourcc_be('A', 'X', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */ | 
|---|
| 694 |  | 
|---|
| 695 | /* Tiled YUV formats, non contiguous planes */ | 
|---|
| 696 | #define V4L2_PIX_FMT_NV12MT  v4l2_fourcc('T', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 64x32 tiles */ | 
|---|
| 697 | #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 16x16 tiles */ | 
|---|
| 698 | #define V4L2_PIX_FMT_NV12M_8L128      v4l2_fourcc('N', 'A', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */ | 
|---|
| 699 | #define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */ | 
|---|
| 700 |  | 
|---|
| 701 | /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */ | 
|---|
| 702 | #define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B', 'A', '8', '1') /*  8  BGBG.. GRGR.. */ | 
|---|
| 703 | #define V4L2_PIX_FMT_SGBRG8  v4l2_fourcc('G', 'B', 'R', 'G') /*  8  GBGB.. RGRG.. */ | 
|---|
| 704 | #define V4L2_PIX_FMT_SGRBG8  v4l2_fourcc('G', 'R', 'B', 'G') /*  8  GRGR.. BGBG.. */ | 
|---|
| 705 | #define V4L2_PIX_FMT_SRGGB8  v4l2_fourcc('R', 'G', 'G', 'B') /*  8  RGRG.. GBGB.. */ | 
|---|
| 706 | #define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0') /* 10  BGBG.. GRGR.. */ | 
|---|
| 707 | #define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10  GBGB.. RGRG.. */ | 
|---|
| 708 | #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10  GRGR.. BGBG.. */ | 
|---|
| 709 | #define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10  RGRG.. GBGB.. */ | 
|---|
| 710 | /* 10bit raw bayer packed, 5 bytes for every 4 pixels */ | 
|---|
| 711 | #define V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A') | 
|---|
| 712 | #define V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A') | 
|---|
| 713 | #define V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A') | 
|---|
| 714 | #define V4L2_PIX_FMT_SRGGB10P v4l2_fourcc('p', 'R', 'A', 'A') | 
|---|
| 715 | /* 10bit raw bayer a-law compressed to 8 bits */ | 
|---|
| 716 | #define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8') | 
|---|
| 717 | #define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8') | 
|---|
| 718 | #define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8') | 
|---|
| 719 | #define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8') | 
|---|
| 720 | /* 10bit raw bayer DPCM compressed to 8 bits */ | 
|---|
| 721 | #define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8') | 
|---|
| 722 | #define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8') | 
|---|
| 723 | #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0') | 
|---|
| 724 | #define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8') | 
|---|
| 725 | #define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12  BGBG.. GRGR.. */ | 
|---|
| 726 | #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12  GBGB.. RGRG.. */ | 
|---|
| 727 | #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12  GRGR.. BGBG.. */ | 
|---|
| 728 | #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12  RGRG.. GBGB.. */ | 
|---|
| 729 | /* 12bit raw bayer packed, 3 bytes for every 2 pixels */ | 
|---|
| 730 | #define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C') | 
|---|
| 731 | #define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C') | 
|---|
| 732 | #define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C') | 
|---|
| 733 | #define V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C') | 
|---|
| 734 | #define V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4') /* 14  BGBG.. GRGR.. */ | 
|---|
| 735 | #define V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4') /* 14  GBGB.. RGRG.. */ | 
|---|
| 736 | #define V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('G', 'R', '1', '4') /* 14  GRGR.. BGBG.. */ | 
|---|
| 737 | #define V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4') /* 14  RGRG.. GBGB.. */ | 
|---|
| 738 | /* 14bit raw bayer packed, 7 bytes for every 4 pixels */ | 
|---|
| 739 | #define V4L2_PIX_FMT_SBGGR14P v4l2_fourcc('p', 'B', 'E', 'E') | 
|---|
| 740 | #define V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E') | 
|---|
| 741 | #define V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E') | 
|---|
| 742 | #define V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E') | 
|---|
| 743 | #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16  BGBG.. GRGR.. */ | 
|---|
| 744 | #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16  GBGB.. RGRG.. */ | 
|---|
| 745 | #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16  GRGR.. BGBG.. */ | 
|---|
| 746 | #define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16  RGRG.. GBGB.. */ | 
|---|
| 747 |  | 
|---|
| 748 | /* HSV formats */ | 
|---|
| 749 | #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3') | 
|---|
| 750 | #define V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4') | 
|---|
| 751 |  | 
|---|
| 752 | /* compressed formats */ | 
|---|
| 753 | #define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG   */ | 
|---|
| 754 | #define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG     */ | 
|---|
| 755 | #define V4L2_PIX_FMT_DV       v4l2_fourcc('d', 'v', 's', 'd') /* 1394          */ | 
|---|
| 756 | #define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */ | 
|---|
| 757 | #define V4L2_PIX_FMT_H264     v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */ | 
|---|
| 758 | #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */ | 
|---|
| 759 | #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */ | 
|---|
| 760 | #define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */ | 
|---|
| 761 | #define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */ | 
|---|
| 762 | #define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES     */ | 
|---|
| 763 | #define V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S') /* MPEG-2 parsed slice data */ | 
|---|
| 764 | #define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */ | 
|---|
| 765 | #define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */ | 
|---|
| 766 | #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */ | 
|---|
| 767 | #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */ | 
|---|
| 768 | #define V4L2_PIX_FMT_VP8      v4l2_fourcc('V', 'P', '8', '0') /* VP8 */ | 
|---|
| 769 | #define V4L2_PIX_FMT_VP8_FRAME v4l2_fourcc('V', 'P', '8', 'F') /* VP8 parsed frame */ | 
|---|
| 770 | #define V4L2_PIX_FMT_VP9      v4l2_fourcc('V', 'P', '9', '0') /* VP9 */ | 
|---|
| 771 | #define V4L2_PIX_FMT_VP9_FRAME v4l2_fourcc('V', 'P', '9', 'F') /* VP9 parsed frame */ | 
|---|
| 772 | #define V4L2_PIX_FMT_HEVC     v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */ | 
|---|
| 773 | #define V4L2_PIX_FMT_FWHT     v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */ | 
|---|
| 774 | #define V4L2_PIX_FMT_FWHT_STATELESS     v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */ | 
|---|
| 775 | #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */ | 
|---|
| 776 | #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */ | 
|---|
| 777 | #define V4L2_PIX_FMT_AV1_FRAME v4l2_fourcc('A', 'V', '1', 'F') /* AV1 parsed frame */ | 
|---|
| 778 | #define V4L2_PIX_FMT_SPK      v4l2_fourcc('S', 'P', 'K', '0') /* Sorenson Spark */ | 
|---|
| 779 | #define V4L2_PIX_FMT_RV30     v4l2_fourcc('R', 'V', '3', '0') /* RealVideo 8 */ | 
|---|
| 780 | #define V4L2_PIX_FMT_RV40     v4l2_fourcc('R', 'V', '4', '0') /* RealVideo 9 & 10 */ | 
|---|
| 781 |  | 
|---|
| 782 | /*  Vendor-specific formats   */ | 
|---|
| 783 | #define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ | 
|---|
| 784 | #define V4L2_PIX_FMT_WNVA     v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ | 
|---|
| 785 | #define V4L2_PIX_FMT_SN9C10X  v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ | 
|---|
| 786 | #define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */ | 
|---|
| 787 | #define V4L2_PIX_FMT_PWC1     v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */ | 
|---|
| 788 | #define V4L2_PIX_FMT_PWC2     v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */ | 
|---|
| 789 | #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */ | 
|---|
| 790 | #define V4L2_PIX_FMT_SPCA501  v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */ | 
|---|
| 791 | #define V4L2_PIX_FMT_SPCA505  v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */ | 
|---|
| 792 | #define V4L2_PIX_FMT_SPCA508  v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */ | 
|---|
| 793 | #define V4L2_PIX_FMT_SPCA561  v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */ | 
|---|
| 794 | #define V4L2_PIX_FMT_PAC207   v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */ | 
|---|
| 795 | #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ | 
|---|
| 796 | #define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0') /* compressed RGGB bayer */ | 
|---|
| 797 | #define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */ | 
|---|
| 798 | #define V4L2_PIX_FMT_SQ905C   v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ | 
|---|
| 799 | #define V4L2_PIX_FMT_PJPG     v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ | 
|---|
| 800 | #define V4L2_PIX_FMT_OV511    v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ | 
|---|
| 801 | #define V4L2_PIX_FMT_OV518    v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ | 
|---|
| 802 | #define V4L2_PIX_FMT_STV0680  v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */ | 
|---|
| 803 | #define V4L2_PIX_FMT_TM6000   v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */ | 
|---|
| 804 | #define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */ | 
|---|
| 805 | #define V4L2_PIX_FMT_KONICA420  v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */ | 
|---|
| 806 | #define V4L2_PIX_FMT_JPGL	v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */ | 
|---|
| 807 | #define V4L2_PIX_FMT_SE401      v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */ | 
|---|
| 808 | #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ | 
|---|
| 809 | #define V4L2_PIX_FMT_Y8I      v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */ | 
|---|
| 810 | #define V4L2_PIX_FMT_Y12I     v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */ | 
|---|
| 811 | #define V4L2_PIX_FMT_Y16I     v4l2_fourcc('Y', '1', '6', 'I') /* Greyscale 16-bit L/R interleaved */ | 
|---|
| 812 | #define V4L2_PIX_FMT_Z16      v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ | 
|---|
| 813 | #define V4L2_PIX_FMT_MT21C    v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode  */ | 
|---|
| 814 | #define V4L2_PIX_FMT_MM21     v4l2_fourcc('M', 'M', '2', '1') /* Mediatek 8-bit block mode, two non-contiguous planes */ | 
|---|
| 815 | #define V4L2_PIX_FMT_MT2110T  v4l2_fourcc('M', 'T', '2', 'T') /* Mediatek 10-bit block tile mode */ | 
|---|
| 816 | #define V4L2_PIX_FMT_MT2110R  v4l2_fourcc('M', 'T', '2', 'R') /* Mediatek 10-bit block raster mode */ | 
|---|
| 817 | #define V4L2_PIX_FMT_INZI     v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */ | 
|---|
| 818 | #define V4L2_PIX_FMT_CNF4     v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */ | 
|---|
| 819 | #define V4L2_PIX_FMT_HI240    v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */ | 
|---|
| 820 | #define V4L2_PIX_FMT_QC08C    v4l2_fourcc('Q', '0', '8', 'C') /* Qualcomm 8-bit compressed */ | 
|---|
| 821 | #define V4L2_PIX_FMT_QC10C    v4l2_fourcc('Q', '1', '0', 'C') /* Qualcomm 10-bit compressed */ | 
|---|
| 822 | #define V4L2_PIX_FMT_AJPG     v4l2_fourcc('A', 'J', 'P', 'G') /* Aspeed JPEG */ | 
|---|
| 823 | #define V4L2_PIX_FMT_HEXTILE  v4l2_fourcc('H', 'X', 'T', 'L') /* Hextile compressed */ | 
|---|
| 824 |  | 
|---|
| 825 | /* 10bit raw packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */ | 
|---|
| 826 | #define V4L2_PIX_FMT_IPU3_SBGGR10	v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */ | 
|---|
| 827 | #define V4L2_PIX_FMT_IPU3_SGBRG10	v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 packed 10-bit GBRG bayer */ | 
|---|
| 828 | #define V4L2_PIX_FMT_IPU3_SGRBG10	v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */ | 
|---|
| 829 | #define V4L2_PIX_FMT_IPU3_SRGGB10	v4l2_fourcc('i', 'p', '3', 'r') /* IPU3 packed 10-bit RGGB bayer */ | 
|---|
| 830 |  | 
|---|
| 831 | /* Raspberry Pi PiSP compressed formats. */ | 
|---|
| 832 | #define V4L2_PIX_FMT_PISP_COMP1_RGGB	v4l2_fourcc('P', 'C', '1', 'R') /* PiSP 8-bit mode 1 compressed RGGB bayer */ | 
|---|
| 833 | #define V4L2_PIX_FMT_PISP_COMP1_GRBG	v4l2_fourcc('P', 'C', '1', 'G') /* PiSP 8-bit mode 1 compressed GRBG bayer */ | 
|---|
| 834 | #define V4L2_PIX_FMT_PISP_COMP1_GBRG	v4l2_fourcc('P', 'C', '1', 'g') /* PiSP 8-bit mode 1 compressed GBRG bayer */ | 
|---|
| 835 | #define V4L2_PIX_FMT_PISP_COMP1_BGGR	v4l2_fourcc('P', 'C', '1', 'B') /* PiSP 8-bit mode 1 compressed BGGR bayer */ | 
|---|
| 836 | #define V4L2_PIX_FMT_PISP_COMP1_MONO	v4l2_fourcc('P', 'C', '1', 'M') /* PiSP 8-bit mode 1 compressed monochrome */ | 
|---|
| 837 | #define V4L2_PIX_FMT_PISP_COMP2_RGGB	v4l2_fourcc('P', 'C', '2', 'R') /* PiSP 8-bit mode 2 compressed RGGB bayer */ | 
|---|
| 838 | #define V4L2_PIX_FMT_PISP_COMP2_GRBG	v4l2_fourcc('P', 'C', '2', 'G') /* PiSP 8-bit mode 2 compressed GRBG bayer */ | 
|---|
| 839 | #define V4L2_PIX_FMT_PISP_COMP2_GBRG	v4l2_fourcc('P', 'C', '2', 'g') /* PiSP 8-bit mode 2 compressed GBRG bayer */ | 
|---|
| 840 | #define V4L2_PIX_FMT_PISP_COMP2_BGGR	v4l2_fourcc('P', 'C', '2', 'B') /* PiSP 8-bit mode 2 compressed BGGR bayer */ | 
|---|
| 841 | #define V4L2_PIX_FMT_PISP_COMP2_MONO	v4l2_fourcc('P', 'C', '2', 'M') /* PiSP 8-bit mode 2 compressed monochrome */ | 
|---|
| 842 |  | 
|---|
| 843 | /* Renesas RZ/V2H CRU packed formats. 64-bit units with contiguous pixels */ | 
|---|
| 844 | #define V4L2_PIX_FMT_RAW_CRU10	v4l2_fourcc('C', 'R', '1', '0') | 
|---|
| 845 | #define V4L2_PIX_FMT_RAW_CRU12	v4l2_fourcc('C', 'R', '1', '2') | 
|---|
| 846 | #define V4L2_PIX_FMT_RAW_CRU14	v4l2_fourcc('C', 'R', '1', '4') | 
|---|
| 847 | #define V4L2_PIX_FMT_RAW_CRU20	v4l2_fourcc('C', 'R', '2', '0') | 
|---|
| 848 |  | 
|---|
| 849 | /* SDR formats - used only for Software Defined Radio devices */ | 
|---|
| 850 | #define V4L2_SDR_FMT_CU8          v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ | 
|---|
| 851 | #define V4L2_SDR_FMT_CU16LE       v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */ | 
|---|
| 852 | #define V4L2_SDR_FMT_CS8          v4l2_fourcc('C', 'S', '0', '8') /* complex s8 */ | 
|---|
| 853 | #define V4L2_SDR_FMT_CS14LE       v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */ | 
|---|
| 854 | #define V4L2_SDR_FMT_RU12LE       v4l2_fourcc('R', 'U', '1', '2') /* real u12le */ | 
|---|
| 855 | #define V4L2_SDR_FMT_PCU16BE	  v4l2_fourcc('P', 'C', '1', '6') /* planar complex u16be */ | 
|---|
| 856 | #define V4L2_SDR_FMT_PCU18BE	  v4l2_fourcc('P', 'C', '1', '8') /* planar complex u18be */ | 
|---|
| 857 | #define V4L2_SDR_FMT_PCU20BE	  v4l2_fourcc('P', 'C', '2', '0') /* planar complex u20be */ | 
|---|
| 858 |  | 
|---|
| 859 | /* Touch formats - used for Touch devices */ | 
|---|
| 860 | #define V4L2_TCH_FMT_DELTA_TD16	v4l2_fourcc('T', 'D', '1', '6') /* 16-bit signed deltas */ | 
|---|
| 861 | #define V4L2_TCH_FMT_DELTA_TD08	v4l2_fourcc('T', 'D', '0', '8') /* 8-bit signed deltas */ | 
|---|
| 862 | #define V4L2_TCH_FMT_TU16	v4l2_fourcc('T', 'U', '1', '6') /* 16-bit unsigned touch data */ | 
|---|
| 863 | #define V4L2_TCH_FMT_TU08	v4l2_fourcc('T', 'U', '0', '8') /* 8-bit unsigned touch data */ | 
|---|
| 864 |  | 
|---|
| 865 | /* Meta-data formats */ | 
|---|
| 866 | #define V4L2_META_FMT_VSP1_HGO    v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 1-D Histogram */ | 
|---|
| 867 | #define V4L2_META_FMT_VSP1_HGT    v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */ | 
|---|
| 868 | #define V4L2_META_FMT_UVC         v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */ | 
|---|
| 869 | #define V4L2_META_FMT_D4XX        v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */ | 
|---|
| 870 | #define V4L2_META_FMT_UVC_MSXU_1_5  v4l2_fourcc('U', 'V', 'C', 'M') /* UVC MSXU metadata */ | 
|---|
| 871 | #define V4L2_META_FMT_VIVID	  v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */ | 
|---|
| 872 |  | 
|---|
| 873 | /* Vendor specific - used for RK_ISP1 camera sub-system */ | 
|---|
| 874 | #define V4L2_META_FMT_RK_ISP1_PARAMS	v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */ | 
|---|
| 875 | #define V4L2_META_FMT_RK_ISP1_STAT_3A	v4l2_fourcc('R', 'K', '1', 'S') /* Rockchip ISP1 3A Statistics */ | 
|---|
| 876 | #define V4L2_META_FMT_RK_ISP1_EXT_PARAMS	v4l2_fourcc('R', 'K', '1', 'E') /* Rockchip ISP1 3a Extensible Parameters */ | 
|---|
| 877 |  | 
|---|
| 878 | /* Vendor specific - used for C3_ISP */ | 
|---|
| 879 | #define V4L2_META_FMT_C3ISP_PARAMS	v4l2_fourcc('C', '3', 'P', 'M') /* Amlogic C3 ISP Parameters */ | 
|---|
| 880 | #define V4L2_META_FMT_C3ISP_STATS	v4l2_fourcc('C', '3', 'S', 'T') /* Amlogic C3 ISP Statistics */ | 
|---|
| 881 |  | 
|---|
| 882 | /* Vendor specific - used for RaspberryPi PiSP */ | 
|---|
| 883 | #define V4L2_META_FMT_RPI_BE_CFG	v4l2_fourcc('R', 'P', 'B', 'C') /* PiSP BE configuration */ | 
|---|
| 884 | #define V4L2_META_FMT_RPI_FE_CFG	v4l2_fourcc('R', 'P', 'F', 'C') /* PiSP FE configuration */ | 
|---|
| 885 | #define V4L2_META_FMT_RPI_FE_STATS	v4l2_fourcc('R', 'P', 'F', 'S') /* PiSP FE stats */ | 
|---|
| 886 |  | 
|---|
| 887 | #ifdef __KERNEL__ | 
|---|
| 888 | /* | 
|---|
| 889 | * Line-based metadata formats. Remember to update v4l_fill_fmtdesc() when | 
|---|
| 890 | * adding new ones! | 
|---|
| 891 | */ | 
|---|
| 892 | #define V4L2_META_FMT_GENERIC_8		v4l2_fourcc('M', 'E', 'T', '8') /* Generic 8-bit metadata */ | 
|---|
| 893 | #define V4L2_META_FMT_GENERIC_CSI2_10	v4l2_fourcc('M', 'C', '1', 'A') /* 10-bit CSI-2 packed 8-bit metadata */ | 
|---|
| 894 | #define V4L2_META_FMT_GENERIC_CSI2_12	v4l2_fourcc('M', 'C', '1', 'C') /* 12-bit CSI-2 packed 8-bit metadata */ | 
|---|
| 895 | #define V4L2_META_FMT_GENERIC_CSI2_14	v4l2_fourcc('M', 'C', '1', 'E') /* 14-bit CSI-2 packed 8-bit metadata */ | 
|---|
| 896 | #define V4L2_META_FMT_GENERIC_CSI2_16	v4l2_fourcc('M', 'C', '1', 'G') /* 16-bit CSI-2 packed 8-bit metadata */ | 
|---|
| 897 | #define V4L2_META_FMT_GENERIC_CSI2_20	v4l2_fourcc('M', 'C', '1', 'K') /* 20-bit CSI-2 packed 8-bit metadata */ | 
|---|
| 898 | #define V4L2_META_FMT_GENERIC_CSI2_24	v4l2_fourcc('M', 'C', '1', 'O') /* 24-bit CSI-2 packed 8-bit metadata */ | 
|---|
| 899 | #endif | 
|---|
| 900 |  | 
|---|
| 901 | /* priv field value to indicates that subsequent fields are valid. */ | 
|---|
| 902 | #define V4L2_PIX_FMT_PRIV_MAGIC		0xfeedcafe | 
|---|
| 903 |  | 
|---|
| 904 | /* Flags */ | 
|---|
| 905 | #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA	0x00000001 | 
|---|
| 906 | #define V4L2_PIX_FMT_FLAG_SET_CSC	0x00000002 | 
|---|
| 907 |  | 
|---|
| 908 | /* | 
|---|
| 909 | *	F O R M A T   E N U M E R A T I O N | 
|---|
| 910 | */ | 
|---|
| 911 | struct v4l2_fmtdesc { | 
|---|
| 912 | __u32		    index;             /* Format number      */ | 
|---|
| 913 | __u32		    type;              /* enum v4l2_buf_type */ | 
|---|
| 914 | __u32               flags; | 
|---|
| 915 | __u8		    description[32];   /* Description string */ | 
|---|
| 916 | __u32		    pixelformat;       /* Format fourcc      */ | 
|---|
| 917 | __u32		    mbus_code;		/* Media bus code    */ | 
|---|
| 918 | __u32		    reserved[3]; | 
|---|
| 919 | }; | 
|---|
| 920 |  | 
|---|
| 921 | #define V4L2_FMT_FLAG_COMPRESSED		0x0001 | 
|---|
| 922 | #define V4L2_FMT_FLAG_EMULATED			0x0002 | 
|---|
| 923 | #define V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM	0x0004 | 
|---|
| 924 | #define V4L2_FMT_FLAG_DYN_RESOLUTION		0x0008 | 
|---|
| 925 | #define V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL	0x0010 | 
|---|
| 926 | #define V4L2_FMT_FLAG_CSC_COLORSPACE		0x0020 | 
|---|
| 927 | #define V4L2_FMT_FLAG_CSC_XFER_FUNC		0x0040 | 
|---|
| 928 | #define V4L2_FMT_FLAG_CSC_YCBCR_ENC		0x0080 | 
|---|
| 929 | #define V4L2_FMT_FLAG_CSC_HSV_ENC		V4L2_FMT_FLAG_CSC_YCBCR_ENC | 
|---|
| 930 | #define V4L2_FMT_FLAG_CSC_QUANTIZATION		0x0100 | 
|---|
| 931 | #define V4L2_FMT_FLAG_META_LINE_BASED		0x0200 | 
|---|
| 932 |  | 
|---|
| 933 | /*  Format description flag, to be ORed with the index */ | 
|---|
| 934 | #define V4L2_FMTDESC_FLAG_ENUM_ALL		0x80000000 | 
|---|
| 935 |  | 
|---|
| 936 | /* Frame Size and frame rate enumeration */ | 
|---|
| 937 | /* | 
|---|
| 938 | *	F R A M E   S I Z E   E N U M E R A T I O N | 
|---|
| 939 | */ | 
|---|
| 940 | enum v4l2_frmsizetypes { | 
|---|
| 941 | V4L2_FRMSIZE_TYPE_DISCRETE	= 1, | 
|---|
| 942 | V4L2_FRMSIZE_TYPE_CONTINUOUS	= 2, | 
|---|
| 943 | V4L2_FRMSIZE_TYPE_STEPWISE	= 3, | 
|---|
| 944 | }; | 
|---|
| 945 |  | 
|---|
| 946 | struct v4l2_frmsize_discrete { | 
|---|
| 947 | __u32			width;		/* Frame width [pixel] */ | 
|---|
| 948 | __u32			height;		/* Frame height [pixel] */ | 
|---|
| 949 | }; | 
|---|
| 950 |  | 
|---|
| 951 | struct v4l2_frmsize_stepwise { | 
|---|
| 952 | __u32			min_width;	/* Minimum frame width [pixel] */ | 
|---|
| 953 | __u32			max_width;	/* Maximum frame width [pixel] */ | 
|---|
| 954 | __u32			step_width;	/* Frame width step size [pixel] */ | 
|---|
| 955 | __u32			min_height;	/* Minimum frame height [pixel] */ | 
|---|
| 956 | __u32			max_height;	/* Maximum frame height [pixel] */ | 
|---|
| 957 | __u32			step_height;	/* Frame height step size [pixel] */ | 
|---|
| 958 | }; | 
|---|
| 959 |  | 
|---|
| 960 | struct v4l2_frmsizeenum { | 
|---|
| 961 | __u32			index;		/* Frame size number */ | 
|---|
| 962 | __u32			pixel_format;	/* Pixel format */ | 
|---|
| 963 | __u32			type;		/* Frame size type the device supports. */ | 
|---|
| 964 |  | 
|---|
| 965 | union {					/* Frame size */ | 
|---|
| 966 | struct v4l2_frmsize_discrete	discrete; | 
|---|
| 967 | struct v4l2_frmsize_stepwise	stepwise; | 
|---|
| 968 | }; | 
|---|
| 969 |  | 
|---|
| 970 | __u32   reserved[2];			/* Reserved space for future use */ | 
|---|
| 971 | }; | 
|---|
| 972 |  | 
|---|
| 973 | /* | 
|---|
| 974 | *	F R A M E   R A T E   E N U M E R A T I O N | 
|---|
| 975 | */ | 
|---|
| 976 | enum v4l2_frmivaltypes { | 
|---|
| 977 | V4L2_FRMIVAL_TYPE_DISCRETE	= 1, | 
|---|
| 978 | V4L2_FRMIVAL_TYPE_CONTINUOUS	= 2, | 
|---|
| 979 | V4L2_FRMIVAL_TYPE_STEPWISE	= 3, | 
|---|
| 980 | }; | 
|---|
| 981 |  | 
|---|
| 982 | struct v4l2_frmival_stepwise { | 
|---|
| 983 | struct v4l2_fract	min;		/* Minimum frame interval [s] */ | 
|---|
| 984 | struct v4l2_fract	max;		/* Maximum frame interval [s] */ | 
|---|
| 985 | struct v4l2_fract	step;		/* Frame interval step size [s] */ | 
|---|
| 986 | }; | 
|---|
| 987 |  | 
|---|
| 988 | struct v4l2_frmivalenum { | 
|---|
| 989 | __u32			index;		/* Frame format index */ | 
|---|
| 990 | __u32			pixel_format;	/* Pixel format */ | 
|---|
| 991 | __u32			width;		/* Frame width */ | 
|---|
| 992 | __u32			height;		/* Frame height */ | 
|---|
| 993 | __u32			type;		/* Frame interval type the device supports. */ | 
|---|
| 994 |  | 
|---|
| 995 | union {					/* Frame interval */ | 
|---|
| 996 | struct v4l2_fract		discrete; | 
|---|
| 997 | struct v4l2_frmival_stepwise	stepwise; | 
|---|
| 998 | }; | 
|---|
| 999 |  | 
|---|
| 1000 | __u32	reserved[2];			/* Reserved space for future use */ | 
|---|
| 1001 | }; | 
|---|
| 1002 |  | 
|---|
| 1003 | /* | 
|---|
| 1004 | *	T I M E C O D E | 
|---|
| 1005 | */ | 
|---|
| 1006 | struct v4l2_timecode { | 
|---|
| 1007 | __u32	type; | 
|---|
| 1008 | __u32	flags; | 
|---|
| 1009 | __u8	frames; | 
|---|
| 1010 | __u8	seconds; | 
|---|
| 1011 | __u8	minutes; | 
|---|
| 1012 | __u8	hours; | 
|---|
| 1013 | __u8	userbits[4]; | 
|---|
| 1014 | }; | 
|---|
| 1015 |  | 
|---|
| 1016 | /*  Type  */ | 
|---|
| 1017 | #define V4L2_TC_TYPE_24FPS		1 | 
|---|
| 1018 | #define V4L2_TC_TYPE_25FPS		2 | 
|---|
| 1019 | #define V4L2_TC_TYPE_30FPS		3 | 
|---|
| 1020 | #define V4L2_TC_TYPE_50FPS		4 | 
|---|
| 1021 | #define V4L2_TC_TYPE_60FPS		5 | 
|---|
| 1022 |  | 
|---|
| 1023 | /*  Flags  */ | 
|---|
| 1024 | #define V4L2_TC_FLAG_DROPFRAME		0x0001 /* "drop-frame" mode */ | 
|---|
| 1025 | #define V4L2_TC_FLAG_COLORFRAME		0x0002 | 
|---|
| 1026 | #define V4L2_TC_USERBITS_field		0x000C | 
|---|
| 1027 | #define V4L2_TC_USERBITS_USERDEFINED	0x0000 | 
|---|
| 1028 | #define V4L2_TC_USERBITS_8BITCHARS	0x0008 | 
|---|
| 1029 | /* The above is based on SMPTE timecodes */ | 
|---|
| 1030 |  | 
|---|
| 1031 | struct v4l2_jpegcompression { | 
|---|
| 1032 | int quality; | 
|---|
| 1033 |  | 
|---|
| 1034 | int  APPn;              /* Number of APP segment to be written, | 
|---|
| 1035 | * must be 0..15 */ | 
|---|
| 1036 | int  APP_len;           /* Length of data in JPEG APPn segment */ | 
|---|
| 1037 | char APP_data[60];      /* Data in the JPEG APPn segment. */ | 
|---|
| 1038 |  | 
|---|
| 1039 | int  COM_len;           /* Length of data in JPEG COM segment */ | 
|---|
| 1040 | char COM_data[60];      /* Data in JPEG COM segment */ | 
|---|
| 1041 |  | 
|---|
| 1042 | __u32 jpeg_markers;     /* Which markers should go into the JPEG | 
|---|
| 1043 | * output. Unless you exactly know what | 
|---|
| 1044 | * you do, leave them untouched. | 
|---|
| 1045 | * Including less markers will make the | 
|---|
| 1046 | * resulting code smaller, but there will | 
|---|
| 1047 | * be fewer applications which can read it. | 
|---|
| 1048 | * The presence of the APP and COM marker | 
|---|
| 1049 | * is influenced by APP_len and COM_len | 
|---|
| 1050 | * ONLY, not by this property! */ | 
|---|
| 1051 |  | 
|---|
| 1052 | #define V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */ | 
|---|
| 1053 | #define V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */ | 
|---|
| 1054 | #define V4L2_JPEG_MARKER_DRI (1<<5)    /* Define Restart Interval */ | 
|---|
| 1055 | #define V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */ | 
|---|
| 1056 | #define V4L2_JPEG_MARKER_APP (1<<7)    /* App segment, driver will | 
|---|
| 1057 | * always use APP0 */ | 
|---|
| 1058 | }; | 
|---|
| 1059 |  | 
|---|
| 1060 | /* | 
|---|
| 1061 | *	M E M O R Y - M A P P I N G   B U F F E R S | 
|---|
| 1062 | */ | 
|---|
| 1063 |  | 
|---|
| 1064 | #ifdef __KERNEL__ | 
|---|
| 1065 | /* | 
|---|
| 1066 | * This corresponds to the user space version of timeval | 
|---|
| 1067 | * for 64-bit time_t. sparc64 is different from everyone | 
|---|
| 1068 | * else, using the microseconds in the wrong half of the | 
|---|
| 1069 | * second 64-bit word. | 
|---|
| 1070 | */ | 
|---|
| 1071 | struct __kernel_v4l2_timeval { | 
|---|
| 1072 | long long	tv_sec; | 
|---|
| 1073 | #if defined(__sparc__) && defined(__arch64__) | 
|---|
| 1074 | int		tv_usec; | 
|---|
| 1075 | int		__pad; | 
|---|
| 1076 | #else | 
|---|
| 1077 | long long	tv_usec; | 
|---|
| 1078 | #endif | 
|---|
| 1079 | }; | 
|---|
| 1080 | #endif | 
|---|
| 1081 |  | 
|---|
| 1082 | struct v4l2_requestbuffers { | 
|---|
| 1083 | __u32			count; | 
|---|
| 1084 | __u32			type;		/* enum v4l2_buf_type */ | 
|---|
| 1085 | __u32			memory;		/* enum v4l2_memory */ | 
|---|
| 1086 | __u32			capabilities; | 
|---|
| 1087 | __u8			flags; | 
|---|
| 1088 | __u8			reserved[3]; | 
|---|
| 1089 | }; | 
|---|
| 1090 |  | 
|---|
| 1091 | #define V4L2_MEMORY_FLAG_NON_COHERENT			(1 << 0) | 
|---|
| 1092 |  | 
|---|
| 1093 | /* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */ | 
|---|
| 1094 | #define V4L2_BUF_CAP_SUPPORTS_MMAP			(1 << 0) | 
|---|
| 1095 | #define V4L2_BUF_CAP_SUPPORTS_USERPTR			(1 << 1) | 
|---|
| 1096 | #define V4L2_BUF_CAP_SUPPORTS_DMABUF			(1 << 2) | 
|---|
| 1097 | #define V4L2_BUF_CAP_SUPPORTS_REQUESTS			(1 << 3) | 
|---|
| 1098 | #define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS		(1 << 4) | 
|---|
| 1099 | #define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF	(1 << 5) | 
|---|
| 1100 | #define V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS		(1 << 6) | 
|---|
| 1101 | #define V4L2_BUF_CAP_SUPPORTS_MAX_NUM_BUFFERS		(1 << 7) | 
|---|
| 1102 | #define V4L2_BUF_CAP_SUPPORTS_REMOVE_BUFS		(1 << 8) | 
|---|
| 1103 |  | 
|---|
| 1104 | /** | 
|---|
| 1105 | * struct v4l2_plane - plane info for multi-planar buffers | 
|---|
| 1106 | * @bytesused:		number of bytes occupied by data in the plane (payload) | 
|---|
| 1107 | * @length:		size of this plane (NOT the payload) in bytes | 
|---|
| 1108 | * @m.mem_offset:	when memory in the associated struct v4l2_buffer is | 
|---|
| 1109 | *			V4L2_MEMORY_MMAP, equals the offset from the start of | 
|---|
| 1110 | *			the device memory for this plane (or is a "cookie" that | 
|---|
| 1111 | *			should be passed to mmap() called on the video node) | 
|---|
| 1112 | * @m.userptr:		when memory is V4L2_MEMORY_USERPTR, a userspace pointer | 
|---|
| 1113 | *			pointing to this plane | 
|---|
| 1114 | * @m.fd:		when memory is V4L2_MEMORY_DMABUF, a userspace file | 
|---|
| 1115 | *			descriptor associated with this plane | 
|---|
| 1116 | * @m:			union of @mem_offset, @userptr and @fd | 
|---|
| 1117 | * @data_offset:	offset in the plane to the start of data; usually 0, | 
|---|
| 1118 | *			unless there is a header in front of the data | 
|---|
| 1119 | * @reserved:		drivers and applications must zero this array | 
|---|
| 1120 | * | 
|---|
| 1121 | * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer | 
|---|
| 1122 | * with two planes can have one plane for Y, and another for interleaved CbCr | 
|---|
| 1123 | * components. Each plane can reside in a separate memory buffer, or even in | 
|---|
| 1124 | * a completely separate memory node (e.g. in embedded devices). | 
|---|
| 1125 | */ | 
|---|
| 1126 | struct v4l2_plane { | 
|---|
| 1127 | __u32			bytesused; | 
|---|
| 1128 | __u32			length; | 
|---|
| 1129 | union { | 
|---|
| 1130 | __u32		mem_offset; | 
|---|
| 1131 | unsigned long	userptr; | 
|---|
| 1132 | __s32		fd; | 
|---|
| 1133 | } m; | 
|---|
| 1134 | __u32			data_offset; | 
|---|
| 1135 | __u32			reserved[11]; | 
|---|
| 1136 | }; | 
|---|
| 1137 |  | 
|---|
| 1138 | /** | 
|---|
| 1139 | * struct v4l2_buffer - video buffer info | 
|---|
| 1140 | * @index:	id number of the buffer | 
|---|
| 1141 | * @type:	enum v4l2_buf_type; buffer type (type == *_MPLANE for | 
|---|
| 1142 | *		multiplanar buffers); | 
|---|
| 1143 | * @bytesused:	number of bytes occupied by data in the buffer (payload); | 
|---|
| 1144 | *		unused (set to 0) for multiplanar buffers | 
|---|
| 1145 | * @flags:	buffer informational flags | 
|---|
| 1146 | * @field:	enum v4l2_field; field order of the image in the buffer | 
|---|
| 1147 | * @timestamp:	frame timestamp | 
|---|
| 1148 | * @timecode:	frame timecode | 
|---|
| 1149 | * @sequence:	sequence count of this frame | 
|---|
| 1150 | * @memory:	enum v4l2_memory; the method, in which the actual video data is | 
|---|
| 1151 | *		passed | 
|---|
| 1152 | * @m.offset:	for non-multiplanar buffers with memory == V4L2_MEMORY_MMAP; | 
|---|
| 1153 | *		offset from the start of the device memory for this plane, | 
|---|
| 1154 | *		(or a "cookie" that should be passed to mmap() as offset) | 
|---|
| 1155 | * @m.userptr:	for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR; | 
|---|
| 1156 | *		a userspace pointer pointing to this buffer | 
|---|
| 1157 | * @m.fd:		for non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF; | 
|---|
| 1158 | *		a userspace file descriptor associated with this buffer | 
|---|
| 1159 | * @m.planes:	for multiplanar buffers; userspace pointer to the array of plane | 
|---|
| 1160 | *		info structs for this buffer | 
|---|
| 1161 | * @m:		union of @offset, @userptr, @planes and @fd | 
|---|
| 1162 | * @length:	size in bytes of the buffer (NOT its payload) for single-plane | 
|---|
| 1163 | *		buffers (when type != *_MPLANE); number of elements in the | 
|---|
| 1164 | *		planes array for multi-plane buffers | 
|---|
| 1165 | * @reserved2:	drivers and applications must zero this field | 
|---|
| 1166 | * @request_fd: fd of the request that this buffer should use | 
|---|
| 1167 | * @reserved:	for backwards compatibility with applications that do not know | 
|---|
| 1168 | *		about @request_fd | 
|---|
| 1169 | * | 
|---|
| 1170 | * Contains data exchanged by application and driver using one of the Streaming | 
|---|
| 1171 | * I/O methods. | 
|---|
| 1172 | */ | 
|---|
| 1173 | struct v4l2_buffer { | 
|---|
| 1174 | __u32			index; | 
|---|
| 1175 | __u32			type; | 
|---|
| 1176 | __u32			bytesused; | 
|---|
| 1177 | __u32			flags; | 
|---|
| 1178 | __u32			field; | 
|---|
| 1179 | #ifdef __KERNEL__ | 
|---|
| 1180 | struct __kernel_v4l2_timeval timestamp; | 
|---|
| 1181 | #else | 
|---|
| 1182 | struct timeval		timestamp; | 
|---|
| 1183 | #endif | 
|---|
| 1184 | struct v4l2_timecode	timecode; | 
|---|
| 1185 | __u32			sequence; | 
|---|
| 1186 |  | 
|---|
| 1187 | /* memory location */ | 
|---|
| 1188 | __u32			memory; | 
|---|
| 1189 | union { | 
|---|
| 1190 | __u32           offset; | 
|---|
| 1191 | unsigned long   userptr; | 
|---|
| 1192 | struct v4l2_plane *planes; | 
|---|
| 1193 | __s32		fd; | 
|---|
| 1194 | } m; | 
|---|
| 1195 | __u32			length; | 
|---|
| 1196 | __u32			reserved2; | 
|---|
| 1197 | union { | 
|---|
| 1198 | __s32		request_fd; | 
|---|
| 1199 | __u32		reserved; | 
|---|
| 1200 | }; | 
|---|
| 1201 | }; | 
|---|
| 1202 |  | 
|---|
| 1203 | #ifndef __KERNEL__ | 
|---|
| 1204 | /** | 
|---|
| 1205 | * v4l2_timeval_to_ns - Convert timeval to nanoseconds | 
|---|
| 1206 | * @tv:		pointer to the timeval variable to be converted | 
|---|
| 1207 | * | 
|---|
| 1208 | * Returns the scalar nanosecond representation of the timeval | 
|---|
| 1209 | * parameter. | 
|---|
| 1210 | */ | 
|---|
| 1211 | static inline __u64 v4l2_timeval_to_ns(const struct timeval *tv) | 
|---|
| 1212 | { | 
|---|
| 1213 | return (__u64)tv->tv_sec * 1000000000ULL + tv->tv_usec * 1000; | 
|---|
| 1214 | } | 
|---|
| 1215 | #endif | 
|---|
| 1216 |  | 
|---|
| 1217 | /*  Flags for 'flags' field */ | 
|---|
| 1218 | /* Buffer is mapped (flag) */ | 
|---|
| 1219 | #define V4L2_BUF_FLAG_MAPPED			0x00000001 | 
|---|
| 1220 | /* Buffer is queued for processing */ | 
|---|
| 1221 | #define V4L2_BUF_FLAG_QUEUED			0x00000002 | 
|---|
| 1222 | /* Buffer is ready */ | 
|---|
| 1223 | #define V4L2_BUF_FLAG_DONE			0x00000004 | 
|---|
| 1224 | /* Image is a keyframe (I-frame) */ | 
|---|
| 1225 | #define V4L2_BUF_FLAG_KEYFRAME			0x00000008 | 
|---|
| 1226 | /* Image is a P-frame */ | 
|---|
| 1227 | #define V4L2_BUF_FLAG_PFRAME			0x00000010 | 
|---|
| 1228 | /* Image is a B-frame */ | 
|---|
| 1229 | #define V4L2_BUF_FLAG_BFRAME			0x00000020 | 
|---|
| 1230 | /* Buffer is ready, but the data contained within is corrupted. */ | 
|---|
| 1231 | #define V4L2_BUF_FLAG_ERROR			0x00000040 | 
|---|
| 1232 | /* Buffer is added to an unqueued request */ | 
|---|
| 1233 | #define V4L2_BUF_FLAG_IN_REQUEST		0x00000080 | 
|---|
| 1234 | /* timecode field is valid */ | 
|---|
| 1235 | #define V4L2_BUF_FLAG_TIMECODE			0x00000100 | 
|---|
| 1236 | /* Don't return the capture buffer until OUTPUT timestamp changes */ | 
|---|
| 1237 | #define V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF	0x00000200 | 
|---|
| 1238 | /* Buffer is prepared for queuing */ | 
|---|
| 1239 | #define V4L2_BUF_FLAG_PREPARED			0x00000400 | 
|---|
| 1240 | /* Cache handling flags */ | 
|---|
| 1241 | #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE	0x00000800 | 
|---|
| 1242 | #define V4L2_BUF_FLAG_NO_CACHE_CLEAN		0x00001000 | 
|---|
| 1243 | /* Timestamp type */ | 
|---|
| 1244 | #define V4L2_BUF_FLAG_TIMESTAMP_MASK		0x0000e000 | 
|---|
| 1245 | #define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN		0x00000000 | 
|---|
| 1246 | #define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC	0x00002000 | 
|---|
| 1247 | #define V4L2_BUF_FLAG_TIMESTAMP_COPY		0x00004000 | 
|---|
| 1248 | /* Timestamp sources. */ | 
|---|
| 1249 | #define V4L2_BUF_FLAG_TSTAMP_SRC_MASK		0x00070000 | 
|---|
| 1250 | #define V4L2_BUF_FLAG_TSTAMP_SRC_EOF		0x00000000 | 
|---|
| 1251 | #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE		0x00010000 | 
|---|
| 1252 | /* mem2mem encoder/decoder */ | 
|---|
| 1253 | #define V4L2_BUF_FLAG_LAST			0x00100000 | 
|---|
| 1254 | /* request_fd is valid */ | 
|---|
| 1255 | #define V4L2_BUF_FLAG_REQUEST_FD		0x00800000 | 
|---|
| 1256 |  | 
|---|
| 1257 | /** | 
|---|
| 1258 | * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor | 
|---|
| 1259 | * | 
|---|
| 1260 | * @index:	id number of the buffer | 
|---|
| 1261 | * @type:	enum v4l2_buf_type; buffer type (type == *_MPLANE for | 
|---|
| 1262 | *		multiplanar buffers); | 
|---|
| 1263 | * @plane:	index of the plane to be exported, 0 for single plane queues | 
|---|
| 1264 | * @flags:	flags for newly created file, currently only O_CLOEXEC is | 
|---|
| 1265 | *		supported, refer to manual of open syscall for more details | 
|---|
| 1266 | * @fd:		file descriptor associated with DMABUF (set by driver) | 
|---|
| 1267 | * @reserved:	drivers and applications must zero this array | 
|---|
| 1268 | * | 
|---|
| 1269 | * Contains data used for exporting a video buffer as DMABUF file descriptor. | 
|---|
| 1270 | * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF | 
|---|
| 1271 | * (identical to the cookie used to mmap() the buffer to userspace). All | 
|---|
| 1272 | * reserved fields must be set to zero. The field reserved0 is expected to | 
|---|
| 1273 | * become a structure 'type' allowing an alternative layout of the structure | 
|---|
| 1274 | * content. Therefore this field should not be used for any other extensions. | 
|---|
| 1275 | */ | 
|---|
| 1276 | struct v4l2_exportbuffer { | 
|---|
| 1277 | __u32		type; /* enum v4l2_buf_type */ | 
|---|
| 1278 | __u32		index; | 
|---|
| 1279 | __u32		plane; | 
|---|
| 1280 | __u32		flags; | 
|---|
| 1281 | __s32		fd; | 
|---|
| 1282 | __u32		reserved[11]; | 
|---|
| 1283 | }; | 
|---|
| 1284 |  | 
|---|
| 1285 | /* | 
|---|
| 1286 | *	O V E R L A Y   P R E V I E W | 
|---|
| 1287 | */ | 
|---|
| 1288 | struct v4l2_framebuffer { | 
|---|
| 1289 | __u32			capability; | 
|---|
| 1290 | __u32			flags; | 
|---|
| 1291 | /* FIXME: in theory we should pass something like PCI device + memory | 
|---|
| 1292 | * region + offset instead of some physical address */ | 
|---|
| 1293 | void                    *base; | 
|---|
| 1294 | struct { | 
|---|
| 1295 | __u32		width; | 
|---|
| 1296 | __u32		height; | 
|---|
| 1297 | __u32		pixelformat; | 
|---|
| 1298 | __u32		field;		/* enum v4l2_field */ | 
|---|
| 1299 | __u32		bytesperline;	/* for padding, zero if unused */ | 
|---|
| 1300 | __u32		sizeimage; | 
|---|
| 1301 | __u32		colorspace;	/* enum v4l2_colorspace */ | 
|---|
| 1302 | __u32		priv;		/* reserved field, set to 0 */ | 
|---|
| 1303 | } fmt; | 
|---|
| 1304 | }; | 
|---|
| 1305 | /*  Flags for the 'capability' field. Read only */ | 
|---|
| 1306 | #define V4L2_FBUF_CAP_EXTERNOVERLAY	0x0001 | 
|---|
| 1307 | #define V4L2_FBUF_CAP_CHROMAKEY		0x0002 | 
|---|
| 1308 | #ifndef __KERNEL__ | 
|---|
| 1309 | #define V4L2_FBUF_CAP_LIST_CLIPPING     0x0004 | 
|---|
| 1310 | #define V4L2_FBUF_CAP_BITMAP_CLIPPING	0x0008 | 
|---|
| 1311 | #endif | 
|---|
| 1312 | #define V4L2_FBUF_CAP_LOCAL_ALPHA	0x0010 | 
|---|
| 1313 | #define V4L2_FBUF_CAP_GLOBAL_ALPHA	0x0020 | 
|---|
| 1314 | #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA	0x0040 | 
|---|
| 1315 | #define V4L2_FBUF_CAP_SRC_CHROMAKEY	0x0080 | 
|---|
| 1316 | /*  Flags for the 'flags' field. */ | 
|---|
| 1317 | #define V4L2_FBUF_FLAG_PRIMARY		0x0001 | 
|---|
| 1318 | #define V4L2_FBUF_FLAG_OVERLAY		0x0002 | 
|---|
| 1319 | #define V4L2_FBUF_FLAG_CHROMAKEY	0x0004 | 
|---|
| 1320 | #define V4L2_FBUF_FLAG_LOCAL_ALPHA	0x0008 | 
|---|
| 1321 | #define V4L2_FBUF_FLAG_GLOBAL_ALPHA	0x0010 | 
|---|
| 1322 | #define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA	0x0020 | 
|---|
| 1323 | #define V4L2_FBUF_FLAG_SRC_CHROMAKEY	0x0040 | 
|---|
| 1324 |  | 
|---|
| 1325 | struct v4l2_clip { | 
|---|
| 1326 | struct v4l2_rect        c; | 
|---|
| 1327 | struct v4l2_clip	__user *next; | 
|---|
| 1328 | }; | 
|---|
| 1329 |  | 
|---|
| 1330 | struct v4l2_window { | 
|---|
| 1331 | struct v4l2_rect        w; | 
|---|
| 1332 | __u32			field;	 /* enum v4l2_field */ | 
|---|
| 1333 | __u32			chromakey; | 
|---|
| 1334 | struct v4l2_clip	*clips; | 
|---|
| 1335 | __u32			clipcount; | 
|---|
| 1336 | void			__user *bitmap; | 
|---|
| 1337 | __u8                    global_alpha; | 
|---|
| 1338 | }; | 
|---|
| 1339 |  | 
|---|
| 1340 | /* | 
|---|
| 1341 | *	C A P T U R E   P A R A M E T E R S | 
|---|
| 1342 | */ | 
|---|
| 1343 | struct v4l2_captureparm { | 
|---|
| 1344 | __u32		   capability;	  /*  Supported modes */ | 
|---|
| 1345 | __u32		   capturemode;	  /*  Current mode */ | 
|---|
| 1346 | struct v4l2_fract  timeperframe;  /*  Time per frame in seconds */ | 
|---|
| 1347 | __u32		   extendedmode;  /*  Driver-specific extensions */ | 
|---|
| 1348 | __u32              readbuffers;   /*  # of buffers for read */ | 
|---|
| 1349 | __u32		   reserved[4]; | 
|---|
| 1350 | }; | 
|---|
| 1351 |  | 
|---|
| 1352 | /*  Flags for 'capability' and 'capturemode' fields */ | 
|---|
| 1353 | #define V4L2_MODE_HIGHQUALITY	0x0001	/*  High quality imaging mode */ | 
|---|
| 1354 | #define V4L2_CAP_TIMEPERFRAME	0x1000	/*  timeperframe field is supported */ | 
|---|
| 1355 |  | 
|---|
| 1356 | struct v4l2_outputparm { | 
|---|
| 1357 | __u32		   capability;	 /*  Supported modes */ | 
|---|
| 1358 | __u32		   outputmode;	 /*  Current mode */ | 
|---|
| 1359 | struct v4l2_fract  timeperframe; /*  Time per frame in seconds */ | 
|---|
| 1360 | __u32		   extendedmode; /*  Driver-specific extensions */ | 
|---|
| 1361 | __u32              writebuffers; /*  # of buffers for write */ | 
|---|
| 1362 | __u32		   reserved[4]; | 
|---|
| 1363 | }; | 
|---|
| 1364 |  | 
|---|
| 1365 | /* | 
|---|
| 1366 | *	I N P U T   I M A G E   C R O P P I N G | 
|---|
| 1367 | */ | 
|---|
| 1368 | struct v4l2_cropcap { | 
|---|
| 1369 | __u32			type;	/* enum v4l2_buf_type */ | 
|---|
| 1370 | struct v4l2_rect        bounds; | 
|---|
| 1371 | struct v4l2_rect        defrect; | 
|---|
| 1372 | struct v4l2_fract       pixelaspect; | 
|---|
| 1373 | }; | 
|---|
| 1374 |  | 
|---|
| 1375 | struct v4l2_crop { | 
|---|
| 1376 | __u32			type;	/* enum v4l2_buf_type */ | 
|---|
| 1377 | struct v4l2_rect        c; | 
|---|
| 1378 | }; | 
|---|
| 1379 |  | 
|---|
| 1380 | /** | 
|---|
| 1381 | * struct v4l2_selection - selection info | 
|---|
| 1382 | * @type:	buffer type (do not use *_MPLANE types) | 
|---|
| 1383 | * @target:	Selection target, used to choose one of possible rectangles; | 
|---|
| 1384 | *		defined in v4l2-common.h; V4L2_SEL_TGT_* . | 
|---|
| 1385 | * @flags:	constraints flags, defined in v4l2-common.h; V4L2_SEL_FLAG_*. | 
|---|
| 1386 | * @r:		coordinates of selection window | 
|---|
| 1387 | * @reserved:	for future use, rounds structure size to 64 bytes, set to zero | 
|---|
| 1388 | * | 
|---|
| 1389 | * Hardware may use multiple helper windows to process a video stream. | 
|---|
| 1390 | * The structure is used to exchange this selection areas between | 
|---|
| 1391 | * an application and a driver. | 
|---|
| 1392 | */ | 
|---|
| 1393 | struct v4l2_selection { | 
|---|
| 1394 | __u32			type; | 
|---|
| 1395 | __u32			target; | 
|---|
| 1396 | __u32                   flags; | 
|---|
| 1397 | struct v4l2_rect        r; | 
|---|
| 1398 | __u32                   reserved[9]; | 
|---|
| 1399 | }; | 
|---|
| 1400 |  | 
|---|
| 1401 |  | 
|---|
| 1402 | /* | 
|---|
| 1403 | *      A N A L O G   V I D E O   S T A N D A R D | 
|---|
| 1404 | */ | 
|---|
| 1405 |  | 
|---|
| 1406 | typedef __u64 v4l2_std_id; | 
|---|
| 1407 |  | 
|---|
| 1408 | /* | 
|---|
| 1409 | * Attention: Keep the V4L2_STD_* bit definitions in sync with | 
|---|
| 1410 | * include/dt-bindings/display/sdtv-standards.h SDTV_STD_* bit definitions. | 
|---|
| 1411 | */ | 
|---|
| 1412 | /* one bit for each */ | 
|---|
| 1413 | #define V4L2_STD_PAL_B          ((v4l2_std_id)0x00000001) | 
|---|
| 1414 | #define V4L2_STD_PAL_B1         ((v4l2_std_id)0x00000002) | 
|---|
| 1415 | #define V4L2_STD_PAL_G          ((v4l2_std_id)0x00000004) | 
|---|
| 1416 | #define V4L2_STD_PAL_H          ((v4l2_std_id)0x00000008) | 
|---|
| 1417 | #define V4L2_STD_PAL_I          ((v4l2_std_id)0x00000010) | 
|---|
| 1418 | #define V4L2_STD_PAL_D          ((v4l2_std_id)0x00000020) | 
|---|
| 1419 | #define V4L2_STD_PAL_D1         ((v4l2_std_id)0x00000040) | 
|---|
| 1420 | #define V4L2_STD_PAL_K          ((v4l2_std_id)0x00000080) | 
|---|
| 1421 |  | 
|---|
| 1422 | #define V4L2_STD_PAL_M          ((v4l2_std_id)0x00000100) | 
|---|
| 1423 | #define V4L2_STD_PAL_N          ((v4l2_std_id)0x00000200) | 
|---|
| 1424 | #define V4L2_STD_PAL_Nc         ((v4l2_std_id)0x00000400) | 
|---|
| 1425 | #define V4L2_STD_PAL_60         ((v4l2_std_id)0x00000800) | 
|---|
| 1426 |  | 
|---|
| 1427 | #define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000)	/* BTSC */ | 
|---|
| 1428 | #define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000)	/* EIA-J */ | 
|---|
| 1429 | #define V4L2_STD_NTSC_443       ((v4l2_std_id)0x00004000) | 
|---|
| 1430 | #define V4L2_STD_NTSC_M_KR      ((v4l2_std_id)0x00008000)	/* FM A2 */ | 
|---|
| 1431 |  | 
|---|
| 1432 | #define V4L2_STD_SECAM_B        ((v4l2_std_id)0x00010000) | 
|---|
| 1433 | #define V4L2_STD_SECAM_D        ((v4l2_std_id)0x00020000) | 
|---|
| 1434 | #define V4L2_STD_SECAM_G        ((v4l2_std_id)0x00040000) | 
|---|
| 1435 | #define V4L2_STD_SECAM_H        ((v4l2_std_id)0x00080000) | 
|---|
| 1436 | #define V4L2_STD_SECAM_K        ((v4l2_std_id)0x00100000) | 
|---|
| 1437 | #define V4L2_STD_SECAM_K1       ((v4l2_std_id)0x00200000) | 
|---|
| 1438 | #define V4L2_STD_SECAM_L        ((v4l2_std_id)0x00400000) | 
|---|
| 1439 | #define V4L2_STD_SECAM_LC       ((v4l2_std_id)0x00800000) | 
|---|
| 1440 |  | 
|---|
| 1441 | /* ATSC/HDTV */ | 
|---|
| 1442 | #define V4L2_STD_ATSC_8_VSB     ((v4l2_std_id)0x01000000) | 
|---|
| 1443 | #define V4L2_STD_ATSC_16_VSB    ((v4l2_std_id)0x02000000) | 
|---|
| 1444 |  | 
|---|
| 1445 | /* FIXME: | 
|---|
| 1446 | Although std_id is 64 bits, there is an issue on PPC32 architecture that | 
|---|
| 1447 | makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding | 
|---|
| 1448 | this value to 32 bits. | 
|---|
| 1449 | As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide), | 
|---|
| 1450 | it should work fine. However, if needed to add more than two standards, | 
|---|
| 1451 | v4l2-common.c should be fixed. | 
|---|
| 1452 | */ | 
|---|
| 1453 |  | 
|---|
| 1454 | /* | 
|---|
| 1455 | * Some macros to merge video standards in order to make live easier for the | 
|---|
| 1456 | * drivers and V4L2 applications | 
|---|
| 1457 | */ | 
|---|
| 1458 |  | 
|---|
| 1459 | /* | 
|---|
| 1460 | * "Common" NTSC/M - It should be noticed that V4L2_STD_NTSC_443 is | 
|---|
| 1461 | * Missing here. | 
|---|
| 1462 | */ | 
|---|
| 1463 | #define V4L2_STD_NTSC           (V4L2_STD_NTSC_M	|\ | 
|---|
| 1464 | V4L2_STD_NTSC_M_JP     |\ | 
|---|
| 1465 | V4L2_STD_NTSC_M_KR) | 
|---|
| 1466 | /* Secam macros */ | 
|---|
| 1467 | #define V4L2_STD_SECAM_DK	(V4L2_STD_SECAM_D	|\ | 
|---|
| 1468 | V4L2_STD_SECAM_K	|\ | 
|---|
| 1469 | V4L2_STD_SECAM_K1) | 
|---|
| 1470 | /* All Secam Standards */ | 
|---|
| 1471 | #define V4L2_STD_SECAM		(V4L2_STD_SECAM_B	|\ | 
|---|
| 1472 | V4L2_STD_SECAM_G	|\ | 
|---|
| 1473 | V4L2_STD_SECAM_H	|\ | 
|---|
| 1474 | V4L2_STD_SECAM_DK	|\ | 
|---|
| 1475 | V4L2_STD_SECAM_L       |\ | 
|---|
| 1476 | V4L2_STD_SECAM_LC) | 
|---|
| 1477 | /* PAL macros */ | 
|---|
| 1478 | #define V4L2_STD_PAL_BG		(V4L2_STD_PAL_B		|\ | 
|---|
| 1479 | V4L2_STD_PAL_B1	|\ | 
|---|
| 1480 | V4L2_STD_PAL_G) | 
|---|
| 1481 | #define V4L2_STD_PAL_DK		(V4L2_STD_PAL_D		|\ | 
|---|
| 1482 | V4L2_STD_PAL_D1	|\ | 
|---|
| 1483 | V4L2_STD_PAL_K) | 
|---|
| 1484 | /* | 
|---|
| 1485 | * "Common" PAL - This macro is there to be compatible with the old | 
|---|
| 1486 | * V4L1 concept of "PAL": /BGDKHI. | 
|---|
| 1487 | * Several PAL standards are missing here: /M, /N and /Nc | 
|---|
| 1488 | */ | 
|---|
| 1489 | #define V4L2_STD_PAL		(V4L2_STD_PAL_BG	|\ | 
|---|
| 1490 | V4L2_STD_PAL_DK	|\ | 
|---|
| 1491 | V4L2_STD_PAL_H		|\ | 
|---|
| 1492 | V4L2_STD_PAL_I) | 
|---|
| 1493 | /* Chroma "agnostic" standards */ | 
|---|
| 1494 | #define V4L2_STD_B		(V4L2_STD_PAL_B		|\ | 
|---|
| 1495 | V4L2_STD_PAL_B1	|\ | 
|---|
| 1496 | V4L2_STD_SECAM_B) | 
|---|
| 1497 | #define V4L2_STD_G		(V4L2_STD_PAL_G		|\ | 
|---|
| 1498 | V4L2_STD_SECAM_G) | 
|---|
| 1499 | #define V4L2_STD_H		(V4L2_STD_PAL_H		|\ | 
|---|
| 1500 | V4L2_STD_SECAM_H) | 
|---|
| 1501 | #define V4L2_STD_L		(V4L2_STD_SECAM_L	|\ | 
|---|
| 1502 | V4L2_STD_SECAM_LC) | 
|---|
| 1503 | #define V4L2_STD_GH		(V4L2_STD_G		|\ | 
|---|
| 1504 | V4L2_STD_H) | 
|---|
| 1505 | #define V4L2_STD_DK		(V4L2_STD_PAL_DK	|\ | 
|---|
| 1506 | V4L2_STD_SECAM_DK) | 
|---|
| 1507 | #define V4L2_STD_BG		(V4L2_STD_B		|\ | 
|---|
| 1508 | V4L2_STD_G) | 
|---|
| 1509 | #define V4L2_STD_MN		(V4L2_STD_PAL_M		|\ | 
|---|
| 1510 | V4L2_STD_PAL_N		|\ | 
|---|
| 1511 | V4L2_STD_PAL_Nc	|\ | 
|---|
| 1512 | V4L2_STD_NTSC) | 
|---|
| 1513 |  | 
|---|
| 1514 | /* Standards where MTS/BTSC stereo could be found */ | 
|---|
| 1515 | #define V4L2_STD_MTS		(V4L2_STD_NTSC_M	|\ | 
|---|
| 1516 | V4L2_STD_PAL_M		|\ | 
|---|
| 1517 | V4L2_STD_PAL_N		|\ | 
|---|
| 1518 | V4L2_STD_PAL_Nc) | 
|---|
| 1519 |  | 
|---|
| 1520 | /* Standards for Countries with 60Hz Line frequency */ | 
|---|
| 1521 | #define V4L2_STD_525_60		(V4L2_STD_PAL_M		|\ | 
|---|
| 1522 | V4L2_STD_PAL_60	|\ | 
|---|
| 1523 | V4L2_STD_NTSC		|\ | 
|---|
| 1524 | V4L2_STD_NTSC_443) | 
|---|
| 1525 | /* Standards for Countries with 50Hz Line frequency */ | 
|---|
| 1526 | #define V4L2_STD_625_50		(V4L2_STD_PAL		|\ | 
|---|
| 1527 | V4L2_STD_PAL_N		|\ | 
|---|
| 1528 | V4L2_STD_PAL_Nc	|\ | 
|---|
| 1529 | V4L2_STD_SECAM) | 
|---|
| 1530 |  | 
|---|
| 1531 | #define V4L2_STD_ATSC           (V4L2_STD_ATSC_8_VSB    |\ | 
|---|
| 1532 | V4L2_STD_ATSC_16_VSB) | 
|---|
| 1533 | /* Macros with none and all analog standards */ | 
|---|
| 1534 | #define V4L2_STD_UNKNOWN        0 | 
|---|
| 1535 | #define V4L2_STD_ALL            (V4L2_STD_525_60	|\ | 
|---|
| 1536 | V4L2_STD_625_50) | 
|---|
| 1537 |  | 
|---|
| 1538 | struct v4l2_standard { | 
|---|
| 1539 | __u32		     index; | 
|---|
| 1540 | v4l2_std_id          id; | 
|---|
| 1541 | __u8		     name[24]; | 
|---|
| 1542 | struct v4l2_fract    frameperiod; /* Frames, not fields */ | 
|---|
| 1543 | __u32		     framelines; | 
|---|
| 1544 | __u32		     reserved[4]; | 
|---|
| 1545 | }; | 
|---|
| 1546 |  | 
|---|
| 1547 | /* | 
|---|
| 1548 | *	D V	B T	T I M I N G S | 
|---|
| 1549 | */ | 
|---|
| 1550 |  | 
|---|
| 1551 | /** struct v4l2_bt_timings - BT.656/BT.1120 timing data | 
|---|
| 1552 | * @width:	total width of the active video in pixels | 
|---|
| 1553 | * @height:	total height of the active video in lines | 
|---|
| 1554 | * @interlaced:	Interlaced or progressive | 
|---|
| 1555 | * @polarities:	Positive or negative polarities | 
|---|
| 1556 | * @pixelclock:	Pixel clock in HZ. Ex. 74.25MHz->74250000 | 
|---|
| 1557 | * @hfrontporch:Horizontal front porch in pixels | 
|---|
| 1558 | * @hsync:	Horizontal Sync length in pixels | 
|---|
| 1559 | * @hbackporch:	Horizontal back porch in pixels | 
|---|
| 1560 | * @vfrontporch:Vertical front porch in lines | 
|---|
| 1561 | * @vsync:	Vertical Sync length in lines | 
|---|
| 1562 | * @vbackporch:	Vertical back porch in lines | 
|---|
| 1563 | * @il_vfrontporch:Vertical front porch for the even field | 
|---|
| 1564 | *		(aka field 2) of interlaced field formats | 
|---|
| 1565 | * @il_vsync:	Vertical Sync length for the even field | 
|---|
| 1566 | *		(aka field 2) of interlaced field formats | 
|---|
| 1567 | * @il_vbackporch:Vertical back porch for the even field | 
|---|
| 1568 | *		(aka field 2) of interlaced field formats | 
|---|
| 1569 | * @standards:	Standards the timing belongs to | 
|---|
| 1570 | * @flags:	Flags | 
|---|
| 1571 | * @picture_aspect: The picture aspect ratio (hor/vert). | 
|---|
| 1572 | * @cea861_vic:	VIC code as per the CEA-861 standard. | 
|---|
| 1573 | * @hdmi_vic:	VIC code as per the HDMI standard. | 
|---|
| 1574 | * @reserved:	Reserved fields, must be zeroed. | 
|---|
| 1575 | * | 
|---|
| 1576 | * A note regarding vertical interlaced timings: height refers to the total | 
|---|
| 1577 | * height of the active video frame (= two fields). The blanking timings refer | 
|---|
| 1578 | * to the blanking of each field. So the height of the total frame is | 
|---|
| 1579 | * calculated as follows: | 
|---|
| 1580 | * | 
|---|
| 1581 | * tot_height = height + vfrontporch + vsync + vbackporch + | 
|---|
| 1582 | *                       il_vfrontporch + il_vsync + il_vbackporch | 
|---|
| 1583 | * | 
|---|
| 1584 | * The active height of each field is height / 2. | 
|---|
| 1585 | */ | 
|---|
| 1586 | struct v4l2_bt_timings { | 
|---|
| 1587 | __u32	width; | 
|---|
| 1588 | __u32	height; | 
|---|
| 1589 | __u32	interlaced; | 
|---|
| 1590 | __u32	polarities; | 
|---|
| 1591 | __u64	pixelclock; | 
|---|
| 1592 | __u32	hfrontporch; | 
|---|
| 1593 | __u32	hsync; | 
|---|
| 1594 | __u32	hbackporch; | 
|---|
| 1595 | __u32	vfrontporch; | 
|---|
| 1596 | __u32	vsync; | 
|---|
| 1597 | __u32	vbackporch; | 
|---|
| 1598 | __u32	il_vfrontporch; | 
|---|
| 1599 | __u32	il_vsync; | 
|---|
| 1600 | __u32	il_vbackporch; | 
|---|
| 1601 | __u32	standards; | 
|---|
| 1602 | __u32	flags; | 
|---|
| 1603 | struct v4l2_fract picture_aspect; | 
|---|
| 1604 | __u8	cea861_vic; | 
|---|
| 1605 | __u8	hdmi_vic; | 
|---|
| 1606 | __u8	reserved[46]; | 
|---|
| 1607 | } __attribute__ ((packed)); | 
|---|
| 1608 |  | 
|---|
| 1609 | /* Interlaced or progressive format */ | 
|---|
| 1610 | #define V4L2_DV_PROGRESSIVE	0 | 
|---|
| 1611 | #define V4L2_DV_INTERLACED	1 | 
|---|
| 1612 |  | 
|---|
| 1613 | /* Polarities. If bit is not set, it is assumed to be negative polarity */ | 
|---|
| 1614 | #define V4L2_DV_VSYNC_POS_POL	0x00000001 | 
|---|
| 1615 | #define V4L2_DV_HSYNC_POS_POL	0x00000002 | 
|---|
| 1616 |  | 
|---|
| 1617 | /* Timings standards */ | 
|---|
| 1618 | #define V4L2_DV_BT_STD_CEA861	(1 << 0)  /* CEA-861 Digital TV Profile */ | 
|---|
| 1619 | #define V4L2_DV_BT_STD_DMT	(1 << 1)  /* VESA Discrete Monitor Timings */ | 
|---|
| 1620 | #define V4L2_DV_BT_STD_CVT	(1 << 2)  /* VESA Coordinated Video Timings */ | 
|---|
| 1621 | #define V4L2_DV_BT_STD_GTF	(1 << 3)  /* VESA Generalized Timings Formula */ | 
|---|
| 1622 | #define V4L2_DV_BT_STD_SDI	(1 << 4)  /* SDI Timings */ | 
|---|
| 1623 |  | 
|---|
| 1624 | /* Flags */ | 
|---|
| 1625 |  | 
|---|
| 1626 | /* | 
|---|
| 1627 | * CVT/GTF specific: timing uses reduced blanking (CVT) or the 'Secondary | 
|---|
| 1628 | * GTF' curve (GTF). In both cases the horizontal and/or vertical blanking | 
|---|
| 1629 | * intervals are reduced, allowing a higher resolution over the same | 
|---|
| 1630 | * bandwidth. This is a read-only flag. | 
|---|
| 1631 | */ | 
|---|
| 1632 | #define V4L2_DV_FL_REDUCED_BLANKING		(1 << 0) | 
|---|
| 1633 | /* | 
|---|
| 1634 | * CEA-861 specific: set for CEA-861 formats with a framerate of a multiple | 
|---|
| 1635 | * of six. These formats can be optionally played at 1 / 1.001 speed. | 
|---|
| 1636 | * This is a read-only flag. | 
|---|
| 1637 | */ | 
|---|
| 1638 | #define V4L2_DV_FL_CAN_REDUCE_FPS		(1 << 1) | 
|---|
| 1639 | /* | 
|---|
| 1640 | * CEA-861 specific: only valid for video transmitters, the flag is cleared | 
|---|
| 1641 | * by receivers. | 
|---|
| 1642 | * If the framerate of the format is a multiple of six, then the pixelclock | 
|---|
| 1643 | * used to set up the transmitter is divided by 1.001 to make it compatible | 
|---|
| 1644 | * with 60 Hz based standards such as NTSC and PAL-M that use a framerate of | 
|---|
| 1645 | * 29.97 Hz. Otherwise this flag is cleared. If the transmitter can't generate | 
|---|
| 1646 | * such frequencies, then the flag will also be cleared. | 
|---|
| 1647 | */ | 
|---|
| 1648 | #define V4L2_DV_FL_REDUCED_FPS			(1 << 2) | 
|---|
| 1649 | /* | 
|---|
| 1650 | * Specific to interlaced formats: if set, then field 1 is really one half-line | 
|---|
| 1651 | * longer and field 2 is really one half-line shorter, so each field has | 
|---|
| 1652 | * exactly the same number of half-lines. Whether half-lines can be detected | 
|---|
| 1653 | * or used depends on the hardware. | 
|---|
| 1654 | */ | 
|---|
| 1655 | #define V4L2_DV_FL_HALF_LINE			(1 << 3) | 
|---|
| 1656 | /* | 
|---|
| 1657 | * If set, then this is a Consumer Electronics (CE) video format. Such formats | 
|---|
| 1658 | * differ from other formats (commonly called IT formats) in that if RGB | 
|---|
| 1659 | * encoding is used then by default the RGB values use limited range (i.e. | 
|---|
| 1660 | * use the range 16-235) as opposed to 0-255. All formats defined in CEA-861 | 
|---|
| 1661 | * except for the 640x480 format are CE formats. | 
|---|
| 1662 | */ | 
|---|
| 1663 | #define V4L2_DV_FL_IS_CE_VIDEO			(1 << 4) | 
|---|
| 1664 | /* Some formats like SMPTE-125M have an interlaced signal with a odd | 
|---|
| 1665 | * total height. For these formats, if this flag is set, the first | 
|---|
| 1666 | * field has the extra line. If not, it is the second field. | 
|---|
| 1667 | */ | 
|---|
| 1668 | #define 	(1 << 5) | 
|---|
| 1669 | /* | 
|---|
| 1670 | * If set, then the picture_aspect field is valid. Otherwise assume that the | 
|---|
| 1671 | * pixels are square, so the picture aspect ratio is the same as the width to | 
|---|
| 1672 | * height ratio. | 
|---|
| 1673 | */ | 
|---|
| 1674 | #define V4L2_DV_FL_HAS_PICTURE_ASPECT		(1 << 6) | 
|---|
| 1675 | /* | 
|---|
| 1676 | * If set, then the cea861_vic field is valid and contains the Video | 
|---|
| 1677 | * Identification Code as per the CEA-861 standard. | 
|---|
| 1678 | */ | 
|---|
| 1679 | #define V4L2_DV_FL_HAS_CEA861_VIC		(1 << 7) | 
|---|
| 1680 | /* | 
|---|
| 1681 | * If set, then the hdmi_vic field is valid and contains the Video | 
|---|
| 1682 | * Identification Code as per the HDMI standard (HDMI Vendor Specific | 
|---|
| 1683 | * InfoFrame). | 
|---|
| 1684 | */ | 
|---|
| 1685 | #define V4L2_DV_FL_HAS_HDMI_VIC			(1 << 8) | 
|---|
| 1686 | /* | 
|---|
| 1687 | * CEA-861 specific: only valid for video receivers. | 
|---|
| 1688 | * If set, then HW can detect the difference between regular FPS and | 
|---|
| 1689 | * 1000/1001 FPS. Note: This flag is only valid for HDMI VIC codes with | 
|---|
| 1690 | * the V4L2_DV_FL_CAN_REDUCE_FPS flag set. | 
|---|
| 1691 | */ | 
|---|
| 1692 | #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS	(1 << 9) | 
|---|
| 1693 |  | 
|---|
| 1694 | /* A few useful defines to calculate the total blanking and frame sizes */ | 
|---|
| 1695 | #define V4L2_DV_BT_BLANKING_WIDTH(bt) \ | 
|---|
| 1696 | ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch) | 
|---|
| 1697 | #define V4L2_DV_BT_FRAME_WIDTH(bt) \ | 
|---|
| 1698 | ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt)) | 
|---|
| 1699 | #define V4L2_DV_BT_BLANKING_HEIGHT(bt) \ | 
|---|
| 1700 | ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \ | 
|---|
| 1701 | ((bt)->interlaced ? \ | 
|---|
| 1702 | ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0)) | 
|---|
| 1703 | #define V4L2_DV_BT_FRAME_HEIGHT(bt) \ | 
|---|
| 1704 | ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt)) | 
|---|
| 1705 |  | 
|---|
| 1706 | /** struct v4l2_dv_timings - DV timings | 
|---|
| 1707 | * @type:	the type of the timings | 
|---|
| 1708 | * @bt:	BT656/1120 timings | 
|---|
| 1709 | */ | 
|---|
| 1710 | struct v4l2_dv_timings { | 
|---|
| 1711 | __u32 type; | 
|---|
| 1712 | union { | 
|---|
| 1713 | struct v4l2_bt_timings	bt; | 
|---|
| 1714 | __u32	reserved[32]; | 
|---|
| 1715 | }; | 
|---|
| 1716 | } __attribute__ ((packed)); | 
|---|
| 1717 |  | 
|---|
| 1718 | /* Values for the type field */ | 
|---|
| 1719 | #define V4L2_DV_BT_656_1120	0	/* BT.656/1120 timing type */ | 
|---|
| 1720 |  | 
|---|
| 1721 |  | 
|---|
| 1722 | /** struct v4l2_enum_dv_timings - DV timings enumeration | 
|---|
| 1723 | * @index:	enumeration index | 
|---|
| 1724 | * @pad:	the pad number for which to enumerate timings (used with | 
|---|
| 1725 | *		v4l-subdev nodes only) | 
|---|
| 1726 | * @reserved:	must be zeroed | 
|---|
| 1727 | * @timings:	the timings for the given index | 
|---|
| 1728 | */ | 
|---|
| 1729 | struct v4l2_enum_dv_timings { | 
|---|
| 1730 | __u32 index; | 
|---|
| 1731 | __u32 pad; | 
|---|
| 1732 | __u32 reserved[2]; | 
|---|
| 1733 | struct v4l2_dv_timings timings; | 
|---|
| 1734 | }; | 
|---|
| 1735 |  | 
|---|
| 1736 | /** struct v4l2_bt_timings_cap - BT.656/BT.1120 timing capabilities | 
|---|
| 1737 | * @min_width:		width in pixels | 
|---|
| 1738 | * @max_width:		width in pixels | 
|---|
| 1739 | * @min_height:		height in lines | 
|---|
| 1740 | * @max_height:		height in lines | 
|---|
| 1741 | * @min_pixelclock:	Pixel clock in HZ. Ex. 74.25MHz->74250000 | 
|---|
| 1742 | * @max_pixelclock:	Pixel clock in HZ. Ex. 74.25MHz->74250000 | 
|---|
| 1743 | * @standards:		Supported standards | 
|---|
| 1744 | * @capabilities:	Supported capabilities | 
|---|
| 1745 | * @reserved:		Must be zeroed | 
|---|
| 1746 | */ | 
|---|
| 1747 | struct v4l2_bt_timings_cap { | 
|---|
| 1748 | __u32	min_width; | 
|---|
| 1749 | __u32	max_width; | 
|---|
| 1750 | __u32	min_height; | 
|---|
| 1751 | __u32	max_height; | 
|---|
| 1752 | __u64	min_pixelclock; | 
|---|
| 1753 | __u64	max_pixelclock; | 
|---|
| 1754 | __u32	standards; | 
|---|
| 1755 | __u32	capabilities; | 
|---|
| 1756 | __u32	reserved[16]; | 
|---|
| 1757 | } __attribute__ ((packed)); | 
|---|
| 1758 |  | 
|---|
| 1759 | /* Supports interlaced formats */ | 
|---|
| 1760 | #define V4L2_DV_BT_CAP_INTERLACED	(1 << 0) | 
|---|
| 1761 | /* Supports progressive formats */ | 
|---|
| 1762 | #define V4L2_DV_BT_CAP_PROGRESSIVE	(1 << 1) | 
|---|
| 1763 | /* Supports CVT/GTF reduced blanking */ | 
|---|
| 1764 | #define V4L2_DV_BT_CAP_REDUCED_BLANKING	(1 << 2) | 
|---|
| 1765 | /* Supports custom formats */ | 
|---|
| 1766 | #define V4L2_DV_BT_CAP_CUSTOM		(1 << 3) | 
|---|
| 1767 |  | 
|---|
| 1768 | /** struct v4l2_dv_timings_cap - DV timings capabilities | 
|---|
| 1769 | * @type:	the type of the timings (same as in struct v4l2_dv_timings) | 
|---|
| 1770 | * @pad:	the pad number for which to query capabilities (used with | 
|---|
| 1771 | *		v4l-subdev nodes only) | 
|---|
| 1772 | * @bt:		the BT656/1120 timings capabilities | 
|---|
| 1773 | */ | 
|---|
| 1774 | struct v4l2_dv_timings_cap { | 
|---|
| 1775 | __u32 type; | 
|---|
| 1776 | __u32 pad; | 
|---|
| 1777 | __u32 reserved[2]; | 
|---|
| 1778 | union { | 
|---|
| 1779 | struct v4l2_bt_timings_cap bt; | 
|---|
| 1780 | __u32 raw_data[32]; | 
|---|
| 1781 | }; | 
|---|
| 1782 | }; | 
|---|
| 1783 |  | 
|---|
| 1784 |  | 
|---|
| 1785 | /* | 
|---|
| 1786 | *	V I D E O   I N P U T S | 
|---|
| 1787 | */ | 
|---|
| 1788 | struct v4l2_input { | 
|---|
| 1789 | __u32	     index;		/*  Which input */ | 
|---|
| 1790 | __u8	     name[32];		/*  Label */ | 
|---|
| 1791 | __u32	     type;		/*  Type of input */ | 
|---|
| 1792 | __u32	     audioset;		/*  Associated audios (bitfield) */ | 
|---|
| 1793 | __u32        tuner;             /*  Tuner index */ | 
|---|
| 1794 | v4l2_std_id  std; | 
|---|
| 1795 | __u32	     status; | 
|---|
| 1796 | __u32	     capabilities; | 
|---|
| 1797 | __u32	     reserved[3]; | 
|---|
| 1798 | }; | 
|---|
| 1799 |  | 
|---|
| 1800 | /*  Values for the 'type' field */ | 
|---|
| 1801 | #define V4L2_INPUT_TYPE_TUNER		1 | 
|---|
| 1802 | #define V4L2_INPUT_TYPE_CAMERA		2 | 
|---|
| 1803 | #define V4L2_INPUT_TYPE_TOUCH		3 | 
|---|
| 1804 |  | 
|---|
| 1805 | /* field 'status' - general */ | 
|---|
| 1806 | #define V4L2_IN_ST_NO_POWER    0x00000001  /* Attached device is off */ | 
|---|
| 1807 | #define V4L2_IN_ST_NO_SIGNAL   0x00000002 | 
|---|
| 1808 | #define V4L2_IN_ST_NO_COLOR    0x00000004 | 
|---|
| 1809 |  | 
|---|
| 1810 | /* field 'status' - sensor orientation */ | 
|---|
| 1811 | /* If sensor is mounted upside down set both bits */ | 
|---|
| 1812 | #define V4L2_IN_ST_HFLIP       0x00000010 /* Frames are flipped horizontally */ | 
|---|
| 1813 | #define V4L2_IN_ST_VFLIP       0x00000020 /* Frames are flipped vertically */ | 
|---|
| 1814 |  | 
|---|
| 1815 | /* field 'status' - analog */ | 
|---|
| 1816 | #define V4L2_IN_ST_NO_H_LOCK   0x00000100  /* No horizontal sync lock */ | 
|---|
| 1817 | #define V4L2_IN_ST_COLOR_KILL  0x00000200  /* Color killer is active */ | 
|---|
| 1818 | #define V4L2_IN_ST_NO_V_LOCK   0x00000400  /* No vertical sync lock */ | 
|---|
| 1819 | #define V4L2_IN_ST_NO_STD_LOCK 0x00000800  /* No standard format lock */ | 
|---|
| 1820 |  | 
|---|
| 1821 | /* field 'status' - digital */ | 
|---|
| 1822 | #define V4L2_IN_ST_NO_SYNC     0x00010000  /* No synchronization lock */ | 
|---|
| 1823 | #define V4L2_IN_ST_NO_EQU      0x00020000  /* No equalizer lock */ | 
|---|
| 1824 | #define V4L2_IN_ST_NO_CARRIER  0x00040000  /* Carrier recovery failed */ | 
|---|
| 1825 |  | 
|---|
| 1826 | /* field 'status' - VCR and set-top box */ | 
|---|
| 1827 | #define V4L2_IN_ST_MACROVISION 0x01000000  /* Macrovision detected */ | 
|---|
| 1828 | #define V4L2_IN_ST_NO_ACCESS   0x02000000  /* Conditional access denied */ | 
|---|
| 1829 | #define V4L2_IN_ST_VTR         0x04000000  /* VTR time constant */ | 
|---|
| 1830 |  | 
|---|
| 1831 | /* capabilities flags */ | 
|---|
| 1832 | #define V4L2_IN_CAP_DV_TIMINGS		0x00000002 /* Supports S_DV_TIMINGS */ | 
|---|
| 1833 | #define V4L2_IN_CAP_CUSTOM_TIMINGS	V4L2_IN_CAP_DV_TIMINGS /* For compatibility */ | 
|---|
| 1834 | #define V4L2_IN_CAP_STD			0x00000004 /* Supports S_STD */ | 
|---|
| 1835 | #define V4L2_IN_CAP_NATIVE_SIZE		0x00000008 /* Supports setting native size */ | 
|---|
| 1836 |  | 
|---|
| 1837 | /* | 
|---|
| 1838 | *	V I D E O   O U T P U T S | 
|---|
| 1839 | */ | 
|---|
| 1840 | struct v4l2_output { | 
|---|
| 1841 | __u32	     index;		/*  Which output */ | 
|---|
| 1842 | __u8	     name[32];		/*  Label */ | 
|---|
| 1843 | __u32	     type;		/*  Type of output */ | 
|---|
| 1844 | __u32	     audioset;		/*  Associated audios (bitfield) */ | 
|---|
| 1845 | __u32	     modulator;         /*  Associated modulator */ | 
|---|
| 1846 | v4l2_std_id  std; | 
|---|
| 1847 | __u32	     capabilities; | 
|---|
| 1848 | __u32	     reserved[3]; | 
|---|
| 1849 | }; | 
|---|
| 1850 | /*  Values for the 'type' field */ | 
|---|
| 1851 | #define V4L2_OUTPUT_TYPE_MODULATOR		1 | 
|---|
| 1852 | #define V4L2_OUTPUT_TYPE_ANALOG			2 | 
|---|
| 1853 | #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY	3 | 
|---|
| 1854 |  | 
|---|
| 1855 | /* capabilities flags */ | 
|---|
| 1856 | #define V4L2_OUT_CAP_DV_TIMINGS		0x00000002 /* Supports S_DV_TIMINGS */ | 
|---|
| 1857 | #define V4L2_OUT_CAP_CUSTOM_TIMINGS	V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */ | 
|---|
| 1858 | #define V4L2_OUT_CAP_STD		0x00000004 /* Supports S_STD */ | 
|---|
| 1859 | #define V4L2_OUT_CAP_NATIVE_SIZE	0x00000008 /* Supports setting native size */ | 
|---|
| 1860 |  | 
|---|
| 1861 | /* | 
|---|
| 1862 | *	C O N T R O L S | 
|---|
| 1863 | */ | 
|---|
| 1864 | struct v4l2_control { | 
|---|
| 1865 | __u32		     id; | 
|---|
| 1866 | __s32		     value; | 
|---|
| 1867 | }; | 
|---|
| 1868 |  | 
|---|
| 1869 | struct v4l2_ext_control { | 
|---|
| 1870 | __u32 id; | 
|---|
| 1871 | __u32 size; | 
|---|
| 1872 | __u32 reserved2[1]; | 
|---|
| 1873 | union { | 
|---|
| 1874 | __s32 value; | 
|---|
| 1875 | __s64 value64; | 
|---|
| 1876 | char __user *string; | 
|---|
| 1877 | __u8 __user *p_u8; | 
|---|
| 1878 | __u16 __user *p_u16; | 
|---|
| 1879 | __u32 __user *p_u32; | 
|---|
| 1880 | __s32 __user *p_s32; | 
|---|
| 1881 | __s64 __user *p_s64; | 
|---|
| 1882 | struct v4l2_area __user *p_area; | 
|---|
| 1883 | struct v4l2_rect __user *p_rect; | 
|---|
| 1884 | struct v4l2_ctrl_h264_sps __user *p_h264_sps; | 
|---|
| 1885 | struct v4l2_ctrl_h264_pps __user *p_h264_pps; | 
|---|
| 1886 | struct v4l2_ctrl_h264_scaling_matrix __user *p_h264_scaling_matrix; | 
|---|
| 1887 | struct v4l2_ctrl_h264_pred_weights __user *p_h264_pred_weights; | 
|---|
| 1888 | struct v4l2_ctrl_h264_slice_params __user *p_h264_slice_params; | 
|---|
| 1889 | struct v4l2_ctrl_h264_decode_params __user *p_h264_decode_params; | 
|---|
| 1890 | struct v4l2_ctrl_fwht_params __user *p_fwht_params; | 
|---|
| 1891 | struct v4l2_ctrl_vp8_frame __user *p_vp8_frame; | 
|---|
| 1892 | struct v4l2_ctrl_mpeg2_sequence __user *p_mpeg2_sequence; | 
|---|
| 1893 | struct v4l2_ctrl_mpeg2_picture __user *p_mpeg2_picture; | 
|---|
| 1894 | struct v4l2_ctrl_mpeg2_quantisation __user *p_mpeg2_quantisation; | 
|---|
| 1895 | struct v4l2_ctrl_vp9_compressed_hdr __user *p_vp9_compressed_hdr_probs; | 
|---|
| 1896 | struct v4l2_ctrl_vp9_frame __user *p_vp9_frame; | 
|---|
| 1897 | struct v4l2_ctrl_hevc_sps __user *p_hevc_sps; | 
|---|
| 1898 | struct v4l2_ctrl_hevc_pps __user *p_hevc_pps; | 
|---|
| 1899 | struct v4l2_ctrl_hevc_slice_params __user *p_hevc_slice_params; | 
|---|
| 1900 | struct v4l2_ctrl_hevc_scaling_matrix __user *p_hevc_scaling_matrix; | 
|---|
| 1901 | struct v4l2_ctrl_hevc_decode_params __user *p_hevc_decode_params; | 
|---|
| 1902 | struct v4l2_ctrl_av1_sequence __user *p_av1_sequence; | 
|---|
| 1903 | struct v4l2_ctrl_av1_tile_group_entry __user *p_av1_tile_group_entry; | 
|---|
| 1904 | struct v4l2_ctrl_av1_frame __user *p_av1_frame; | 
|---|
| 1905 | struct v4l2_ctrl_av1_film_grain __user *p_av1_film_grain; | 
|---|
| 1906 | struct v4l2_ctrl_hdr10_cll_info __user *p_hdr10_cll_info; | 
|---|
| 1907 | struct v4l2_ctrl_hdr10_mastering_display __user *p_hdr10_mastering_display; | 
|---|
| 1908 | void __user *ptr; | 
|---|
| 1909 | } __attribute__ ((packed)); | 
|---|
| 1910 | } __attribute__ ((packed)); | 
|---|
| 1911 |  | 
|---|
| 1912 | struct v4l2_ext_controls { | 
|---|
| 1913 | union { | 
|---|
| 1914 | #ifndef __KERNEL__ | 
|---|
| 1915 | __u32 ctrl_class; | 
|---|
| 1916 | #endif | 
|---|
| 1917 | __u32 which; | 
|---|
| 1918 | }; | 
|---|
| 1919 | __u32 count; | 
|---|
| 1920 | __u32 error_idx; | 
|---|
| 1921 | __s32 request_fd; | 
|---|
| 1922 | __u32 reserved[1]; | 
|---|
| 1923 | struct v4l2_ext_control *controls; | 
|---|
| 1924 | }; | 
|---|
| 1925 |  | 
|---|
| 1926 | #define V4L2_CTRL_ID_MASK	  (0x0fffffff) | 
|---|
| 1927 | #ifndef __KERNEL__ | 
|---|
| 1928 | #define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL) | 
|---|
| 1929 | #endif | 
|---|
| 1930 | #define V4L2_CTRL_ID2WHICH(id)    ((id) & 0x0fff0000UL) | 
|---|
| 1931 | #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) | 
|---|
| 1932 | #define V4L2_CTRL_MAX_DIMS	  (4) | 
|---|
| 1933 | #define V4L2_CTRL_WHICH_CUR_VAL   0 | 
|---|
| 1934 | #define V4L2_CTRL_WHICH_DEF_VAL   0x0f000000 | 
|---|
| 1935 | #define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000 | 
|---|
| 1936 | #define V4L2_CTRL_WHICH_MIN_VAL   0x0f020000 | 
|---|
| 1937 | #define V4L2_CTRL_WHICH_MAX_VAL   0x0f030000 | 
|---|
| 1938 |  | 
|---|
| 1939 | enum v4l2_ctrl_type { | 
|---|
| 1940 | V4L2_CTRL_TYPE_INTEGER	     = 1, | 
|---|
| 1941 | V4L2_CTRL_TYPE_BOOLEAN	     = 2, | 
|---|
| 1942 | = 3, | 
|---|
| 1943 | V4L2_CTRL_TYPE_BUTTON	     = 4, | 
|---|
| 1944 | V4L2_CTRL_TYPE_INTEGER64     = 5, | 
|---|
| 1945 | V4L2_CTRL_TYPE_CTRL_CLASS    = 6, | 
|---|
| 1946 | V4L2_CTRL_TYPE_STRING        = 7, | 
|---|
| 1947 | V4L2_CTRL_TYPE_BITMASK       = 8, | 
|---|
| 1948 | = 9, | 
|---|
| 1949 |  | 
|---|
| 1950 | /* Compound types are >= 0x0100 */ | 
|---|
| 1951 | V4L2_CTRL_COMPOUND_TYPES     = 0x0100, | 
|---|
| 1952 | V4L2_CTRL_TYPE_U8	     = 0x0100, | 
|---|
| 1953 | V4L2_CTRL_TYPE_U16	     = 0x0101, | 
|---|
| 1954 | V4L2_CTRL_TYPE_U32	     = 0x0102, | 
|---|
| 1955 | V4L2_CTRL_TYPE_AREA          = 0x0106, | 
|---|
| 1956 | V4L2_CTRL_TYPE_RECT	     = 0x0107, | 
|---|
| 1957 |  | 
|---|
| 1958 | V4L2_CTRL_TYPE_HDR10_CLL_INFO		= 0x0110, | 
|---|
| 1959 | V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY	= 0x0111, | 
|---|
| 1960 |  | 
|---|
| 1961 | V4L2_CTRL_TYPE_H264_SPS             = 0x0200, | 
|---|
| 1962 | V4L2_CTRL_TYPE_H264_PPS		    = 0x0201, | 
|---|
| 1963 | V4L2_CTRL_TYPE_H264_SCALING_MATRIX  = 0x0202, | 
|---|
| 1964 | V4L2_CTRL_TYPE_H264_SLICE_PARAMS    = 0x0203, | 
|---|
| 1965 | V4L2_CTRL_TYPE_H264_DECODE_PARAMS   = 0x0204, | 
|---|
| 1966 | V4L2_CTRL_TYPE_H264_PRED_WEIGHTS    = 0x0205, | 
|---|
| 1967 |  | 
|---|
| 1968 | V4L2_CTRL_TYPE_FWHT_PARAMS	    = 0x0220, | 
|---|
| 1969 |  | 
|---|
| 1970 | V4L2_CTRL_TYPE_VP8_FRAME            = 0x0240, | 
|---|
| 1971 |  | 
|---|
| 1972 | V4L2_CTRL_TYPE_MPEG2_QUANTISATION   = 0x0250, | 
|---|
| 1973 | V4L2_CTRL_TYPE_MPEG2_SEQUENCE       = 0x0251, | 
|---|
| 1974 | V4L2_CTRL_TYPE_MPEG2_PICTURE        = 0x0252, | 
|---|
| 1975 |  | 
|---|
| 1976 | V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR	= 0x0260, | 
|---|
| 1977 | V4L2_CTRL_TYPE_VP9_FRAME		= 0x0261, | 
|---|
| 1978 |  | 
|---|
| 1979 | V4L2_CTRL_TYPE_HEVC_SPS			= 0x0270, | 
|---|
| 1980 | V4L2_CTRL_TYPE_HEVC_PPS			= 0x0271, | 
|---|
| 1981 | V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS	= 0x0272, | 
|---|
| 1982 | V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX	= 0x0273, | 
|---|
| 1983 | V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS	= 0x0274, | 
|---|
| 1984 |  | 
|---|
| 1985 | V4L2_CTRL_TYPE_AV1_SEQUENCE	    = 0x280, | 
|---|
| 1986 | V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY = 0x281, | 
|---|
| 1987 | V4L2_CTRL_TYPE_AV1_FRAME	    = 0x282, | 
|---|
| 1988 | V4L2_CTRL_TYPE_AV1_FILM_GRAIN	    = 0x283, | 
|---|
| 1989 | }; | 
|---|
| 1990 |  | 
|---|
| 1991 | /*  Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ | 
|---|
| 1992 | struct v4l2_queryctrl { | 
|---|
| 1993 | __u32		     id; | 
|---|
| 1994 | __u32		     type;	/* enum v4l2_ctrl_type */ | 
|---|
| 1995 | __u8		     name[32];	/* Whatever */ | 
|---|
| 1996 | __s32		     minimum;	/* Note signedness */ | 
|---|
| 1997 | __s32		     maximum; | 
|---|
| 1998 | __s32		     step; | 
|---|
| 1999 | __s32		     default_value; | 
|---|
| 2000 | __u32                flags; | 
|---|
| 2001 | __u32		     reserved[2]; | 
|---|
| 2002 | }; | 
|---|
| 2003 |  | 
|---|
| 2004 | /*  Used in the VIDIOC_QUERY_EXT_CTRL ioctl for querying extended controls */ | 
|---|
| 2005 | struct v4l2_query_ext_ctrl { | 
|---|
| 2006 | __u32		     id; | 
|---|
| 2007 | __u32		     type; | 
|---|
| 2008 | char		     name[32]; | 
|---|
| 2009 | __s64		     minimum; | 
|---|
| 2010 | __s64		     maximum; | 
|---|
| 2011 | __u64		     step; | 
|---|
| 2012 | __s64		     default_value; | 
|---|
| 2013 | __u32                flags; | 
|---|
| 2014 | __u32                elem_size; | 
|---|
| 2015 | __u32                elems; | 
|---|
| 2016 | __u32                nr_of_dims; | 
|---|
| 2017 | __u32                dims[V4L2_CTRL_MAX_DIMS]; | 
|---|
| 2018 | __u32		     reserved[32]; | 
|---|
| 2019 | }; | 
|---|
| 2020 |  | 
|---|
| 2021 | /*  Used in the VIDIOC_QUERYMENU ioctl for querying menu items */ | 
|---|
| 2022 | struct  { | 
|---|
| 2023 | __u32		; | 
|---|
| 2024 | __u32		; | 
|---|
| 2025 | union { | 
|---|
| 2026 | __u8	[32];	/* Whatever */ | 
|---|
| 2027 | __s64	; | 
|---|
| 2028 | }; | 
|---|
| 2029 | __u32		; | 
|---|
| 2030 | } __attribute__ ((packed)); | 
|---|
| 2031 |  | 
|---|
| 2032 | /*  Control flags  */ | 
|---|
| 2033 | #define V4L2_CTRL_FLAG_DISABLED		0x0001 | 
|---|
| 2034 | #define V4L2_CTRL_FLAG_GRABBED		0x0002 | 
|---|
| 2035 | #define V4L2_CTRL_FLAG_READ_ONLY	0x0004 | 
|---|
| 2036 | #define V4L2_CTRL_FLAG_UPDATE		0x0008 | 
|---|
| 2037 | #define V4L2_CTRL_FLAG_INACTIVE		0x0010 | 
|---|
| 2038 | #define V4L2_CTRL_FLAG_SLIDER		0x0020 | 
|---|
| 2039 | #define V4L2_CTRL_FLAG_WRITE_ONLY	0x0040 | 
|---|
| 2040 | #define V4L2_CTRL_FLAG_VOLATILE		0x0080 | 
|---|
| 2041 | #define V4L2_CTRL_FLAG_HAS_PAYLOAD	0x0100 | 
|---|
| 2042 | #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE	0x0200 | 
|---|
| 2043 | #define V4L2_CTRL_FLAG_MODIFY_LAYOUT	0x0400 | 
|---|
| 2044 | #define V4L2_CTRL_FLAG_DYNAMIC_ARRAY	0x0800 | 
|---|
| 2045 | #define V4L2_CTRL_FLAG_HAS_WHICH_MIN_MAX 0x1000 | 
|---|
| 2046 |  | 
|---|
| 2047 | /*  Query flags, to be ORed with the control ID */ | 
|---|
| 2048 | #define V4L2_CTRL_FLAG_NEXT_CTRL	0x80000000 | 
|---|
| 2049 | #define V4L2_CTRL_FLAG_NEXT_COMPOUND	0x40000000 | 
|---|
| 2050 |  | 
|---|
| 2051 | /*  User-class control IDs defined by V4L2 */ | 
|---|
| 2052 | #define V4L2_CID_MAX_CTRLS		1024 | 
|---|
| 2053 | /*  IDs reserved for driver specific controls */ | 
|---|
| 2054 | #define V4L2_CID_PRIVATE_BASE		0x08000000 | 
|---|
| 2055 |  | 
|---|
| 2056 |  | 
|---|
| 2057 | /* | 
|---|
| 2058 | *	T U N I N G | 
|---|
| 2059 | */ | 
|---|
| 2060 | struct v4l2_tuner { | 
|---|
| 2061 | __u32                   index; | 
|---|
| 2062 | __u8			name[32]; | 
|---|
| 2063 | __u32			type;	/* enum v4l2_tuner_type */ | 
|---|
| 2064 | __u32			capability; | 
|---|
| 2065 | __u32			rangelow; | 
|---|
| 2066 | __u32			rangehigh; | 
|---|
| 2067 | __u32			rxsubchans; | 
|---|
| 2068 | __u32			audmode; | 
|---|
| 2069 | __s32			signal; | 
|---|
| 2070 | __s32			afc; | 
|---|
| 2071 | __u32			reserved[4]; | 
|---|
| 2072 | }; | 
|---|
| 2073 |  | 
|---|
| 2074 | struct v4l2_modulator { | 
|---|
| 2075 | __u32			index; | 
|---|
| 2076 | __u8			name[32]; | 
|---|
| 2077 | __u32			capability; | 
|---|
| 2078 | __u32			rangelow; | 
|---|
| 2079 | __u32			rangehigh; | 
|---|
| 2080 | __u32			txsubchans; | 
|---|
| 2081 | __u32			type;	/* enum v4l2_tuner_type */ | 
|---|
| 2082 | __u32			reserved[3]; | 
|---|
| 2083 | }; | 
|---|
| 2084 |  | 
|---|
| 2085 | /*  Flags for the 'capability' field */ | 
|---|
| 2086 | #define V4L2_TUNER_CAP_LOW		0x0001 | 
|---|
| 2087 | #define V4L2_TUNER_CAP_NORM		0x0002 | 
|---|
| 2088 | #define V4L2_TUNER_CAP_HWSEEK_BOUNDED	0x0004 | 
|---|
| 2089 | #define V4L2_TUNER_CAP_HWSEEK_WRAP	0x0008 | 
|---|
| 2090 | #define V4L2_TUNER_CAP_STEREO		0x0010 | 
|---|
| 2091 | #define V4L2_TUNER_CAP_LANG2		0x0020 | 
|---|
| 2092 | #define V4L2_TUNER_CAP_SAP		0x0020 | 
|---|
| 2093 | #define V4L2_TUNER_CAP_LANG1		0x0040 | 
|---|
| 2094 | #define V4L2_TUNER_CAP_RDS		0x0080 | 
|---|
| 2095 | #define V4L2_TUNER_CAP_RDS_BLOCK_IO	0x0100 | 
|---|
| 2096 | #define V4L2_TUNER_CAP_RDS_CONTROLS	0x0200 | 
|---|
| 2097 | #define V4L2_TUNER_CAP_FREQ_BANDS	0x0400 | 
|---|
| 2098 | #define V4L2_TUNER_CAP_HWSEEK_PROG_LIM	0x0800 | 
|---|
| 2099 | #define V4L2_TUNER_CAP_1HZ		0x1000 | 
|---|
| 2100 |  | 
|---|
| 2101 | /*  Flags for the 'rxsubchans' field */ | 
|---|
| 2102 | #define V4L2_TUNER_SUB_MONO		0x0001 | 
|---|
| 2103 | #define V4L2_TUNER_SUB_STEREO		0x0002 | 
|---|
| 2104 | #define V4L2_TUNER_SUB_LANG2		0x0004 | 
|---|
| 2105 | #define V4L2_TUNER_SUB_SAP		0x0004 | 
|---|
| 2106 | #define V4L2_TUNER_SUB_LANG1		0x0008 | 
|---|
| 2107 | #define V4L2_TUNER_SUB_RDS		0x0010 | 
|---|
| 2108 |  | 
|---|
| 2109 | /*  Values for the 'audmode' field */ | 
|---|
| 2110 | #define V4L2_TUNER_MODE_MONO		0x0000 | 
|---|
| 2111 | #define V4L2_TUNER_MODE_STEREO		0x0001 | 
|---|
| 2112 | #define V4L2_TUNER_MODE_LANG2		0x0002 | 
|---|
| 2113 | #define V4L2_TUNER_MODE_SAP		0x0002 | 
|---|
| 2114 | #define V4L2_TUNER_MODE_LANG1		0x0003 | 
|---|
| 2115 | #define V4L2_TUNER_MODE_LANG1_LANG2	0x0004 | 
|---|
| 2116 |  | 
|---|
| 2117 | struct v4l2_frequency { | 
|---|
| 2118 | __u32	tuner; | 
|---|
| 2119 | __u32	type;	/* enum v4l2_tuner_type */ | 
|---|
| 2120 | __u32	frequency; | 
|---|
| 2121 | __u32	reserved[8]; | 
|---|
| 2122 | }; | 
|---|
| 2123 |  | 
|---|
| 2124 | #define V4L2_BAND_MODULATION_VSB	(1 << 1) | 
|---|
| 2125 | #define V4L2_BAND_MODULATION_FM		(1 << 2) | 
|---|
| 2126 | #define V4L2_BAND_MODULATION_AM		(1 << 3) | 
|---|
| 2127 |  | 
|---|
| 2128 | struct v4l2_frequency_band { | 
|---|
| 2129 | __u32	tuner; | 
|---|
| 2130 | __u32	type;	/* enum v4l2_tuner_type */ | 
|---|
| 2131 | __u32	index; | 
|---|
| 2132 | __u32	capability; | 
|---|
| 2133 | __u32	rangelow; | 
|---|
| 2134 | __u32	rangehigh; | 
|---|
| 2135 | __u32	modulation; | 
|---|
| 2136 | __u32	reserved[9]; | 
|---|
| 2137 | }; | 
|---|
| 2138 |  | 
|---|
| 2139 | struct v4l2_hw_freq_seek { | 
|---|
| 2140 | __u32	tuner; | 
|---|
| 2141 | __u32	type;	/* enum v4l2_tuner_type */ | 
|---|
| 2142 | __u32	seek_upward; | 
|---|
| 2143 | __u32	wrap_around; | 
|---|
| 2144 | __u32	spacing; | 
|---|
| 2145 | __u32	rangelow; | 
|---|
| 2146 | __u32	rangehigh; | 
|---|
| 2147 | __u32	reserved[5]; | 
|---|
| 2148 | }; | 
|---|
| 2149 |  | 
|---|
| 2150 | /* | 
|---|
| 2151 | *	R D S | 
|---|
| 2152 | */ | 
|---|
| 2153 |  | 
|---|
| 2154 | struct v4l2_rds_data { | 
|---|
| 2155 | __u8	lsb; | 
|---|
| 2156 | __u8	msb; | 
|---|
| 2157 | __u8	block; | 
|---|
| 2158 | } __attribute__ ((packed)); | 
|---|
| 2159 |  | 
|---|
| 2160 | #define V4L2_RDS_BLOCK_MSK	 0x7 | 
|---|
| 2161 | #define V4L2_RDS_BLOCK_A	 0 | 
|---|
| 2162 | #define V4L2_RDS_BLOCK_B	 1 | 
|---|
| 2163 | #define V4L2_RDS_BLOCK_C	 2 | 
|---|
| 2164 | #define V4L2_RDS_BLOCK_D	 3 | 
|---|
| 2165 | #define V4L2_RDS_BLOCK_C_ALT	 4 | 
|---|
| 2166 | #define V4L2_RDS_BLOCK_INVALID	 7 | 
|---|
| 2167 |  | 
|---|
| 2168 | #define V4L2_RDS_BLOCK_CORRECTED 0x40 | 
|---|
| 2169 | #define V4L2_RDS_BLOCK_ERROR	 0x80 | 
|---|
| 2170 |  | 
|---|
| 2171 | /* | 
|---|
| 2172 | *	A U D I O | 
|---|
| 2173 | */ | 
|---|
| 2174 | struct v4l2_audio { | 
|---|
| 2175 | __u32	index; | 
|---|
| 2176 | __u8	name[32]; | 
|---|
| 2177 | __u32	capability; | 
|---|
| 2178 | __u32	mode; | 
|---|
| 2179 | __u32	reserved[2]; | 
|---|
| 2180 | }; | 
|---|
| 2181 |  | 
|---|
| 2182 | /*  Flags for the 'capability' field */ | 
|---|
| 2183 | #define V4L2_AUDCAP_STEREO		0x00001 | 
|---|
| 2184 | #define V4L2_AUDCAP_AVL			0x00002 | 
|---|
| 2185 |  | 
|---|
| 2186 | /*  Flags for the 'mode' field */ | 
|---|
| 2187 | #define V4L2_AUDMODE_AVL		0x00001 | 
|---|
| 2188 |  | 
|---|
| 2189 | struct v4l2_audioout { | 
|---|
| 2190 | __u32	index; | 
|---|
| 2191 | __u8	name[32]; | 
|---|
| 2192 | __u32	capability; | 
|---|
| 2193 | __u32	mode; | 
|---|
| 2194 | __u32	reserved[2]; | 
|---|
| 2195 | }; | 
|---|
| 2196 |  | 
|---|
| 2197 | /* | 
|---|
| 2198 | *	M P E G   S E R V I C E S | 
|---|
| 2199 | */ | 
|---|
| 2200 | #if 1 | 
|---|
| 2201 | #define V4L2_ENC_IDX_FRAME_I    (0) | 
|---|
| 2202 | #define V4L2_ENC_IDX_FRAME_P    (1) | 
|---|
| 2203 | #define V4L2_ENC_IDX_FRAME_B    (2) | 
|---|
| 2204 | #define V4L2_ENC_IDX_FRAME_MASK (0xf) | 
|---|
| 2205 |  | 
|---|
| 2206 | struct v4l2_enc_idx_entry { | 
|---|
| 2207 | __u64 offset; | 
|---|
| 2208 | __u64 pts; | 
|---|
| 2209 | __u32 length; | 
|---|
| 2210 | __u32 flags; | 
|---|
| 2211 | __u32 reserved[2]; | 
|---|
| 2212 | }; | 
|---|
| 2213 |  | 
|---|
| 2214 | #define V4L2_ENC_IDX_ENTRIES (64) | 
|---|
| 2215 | struct v4l2_enc_idx { | 
|---|
| 2216 | __u32 entries; | 
|---|
| 2217 | __u32 entries_cap; | 
|---|
| 2218 | __u32 reserved[4]; | 
|---|
| 2219 | struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES]; | 
|---|
| 2220 | }; | 
|---|
| 2221 |  | 
|---|
| 2222 |  | 
|---|
| 2223 | #define V4L2_ENC_CMD_START      (0) | 
|---|
| 2224 | #define V4L2_ENC_CMD_STOP       (1) | 
|---|
| 2225 | #define V4L2_ENC_CMD_PAUSE      (2) | 
|---|
| 2226 | #define V4L2_ENC_CMD_RESUME     (3) | 
|---|
| 2227 |  | 
|---|
| 2228 | /* Flags for V4L2_ENC_CMD_STOP */ | 
|---|
| 2229 | #define V4L2_ENC_CMD_STOP_AT_GOP_END    (1 << 0) | 
|---|
| 2230 |  | 
|---|
| 2231 | struct v4l2_encoder_cmd { | 
|---|
| 2232 | __u32 cmd; | 
|---|
| 2233 | __u32 flags; | 
|---|
| 2234 | union { | 
|---|
| 2235 | struct { | 
|---|
| 2236 | __u32 data[8]; | 
|---|
| 2237 | } raw; | 
|---|
| 2238 | }; | 
|---|
| 2239 | }; | 
|---|
| 2240 |  | 
|---|
| 2241 | /* Decoder commands */ | 
|---|
| 2242 | #define V4L2_DEC_CMD_START       (0) | 
|---|
| 2243 | #define V4L2_DEC_CMD_STOP        (1) | 
|---|
| 2244 | #define V4L2_DEC_CMD_PAUSE       (2) | 
|---|
| 2245 | #define V4L2_DEC_CMD_RESUME      (3) | 
|---|
| 2246 | #define V4L2_DEC_CMD_FLUSH       (4) | 
|---|
| 2247 |  | 
|---|
| 2248 | /* Flags for V4L2_DEC_CMD_START */ | 
|---|
| 2249 | #define V4L2_DEC_CMD_START_MUTE_AUDIO	(1 << 0) | 
|---|
| 2250 |  | 
|---|
| 2251 | /* Flags for V4L2_DEC_CMD_PAUSE */ | 
|---|
| 2252 | #define V4L2_DEC_CMD_PAUSE_TO_BLACK	(1 << 0) | 
|---|
| 2253 |  | 
|---|
| 2254 | /* Flags for V4L2_DEC_CMD_STOP */ | 
|---|
| 2255 | #define V4L2_DEC_CMD_STOP_TO_BLACK	(1 << 0) | 
|---|
| 2256 | #define V4L2_DEC_CMD_STOP_IMMEDIATELY	(1 << 1) | 
|---|
| 2257 |  | 
|---|
| 2258 | /* Play format requirements (returned by the driver): */ | 
|---|
| 2259 |  | 
|---|
| 2260 | /* The decoder has no special format requirements */ | 
|---|
| 2261 | #define V4L2_DEC_START_FMT_NONE		(0) | 
|---|
| 2262 | /* The decoder requires full GOPs */ | 
|---|
| 2263 | #define V4L2_DEC_START_FMT_GOP		(1) | 
|---|
| 2264 |  | 
|---|
| 2265 | /* The structure must be zeroed before use by the application | 
|---|
| 2266 | This ensures it can be extended safely in the future. */ | 
|---|
| 2267 | struct v4l2_decoder_cmd { | 
|---|
| 2268 | __u32 cmd; | 
|---|
| 2269 | __u32 flags; | 
|---|
| 2270 | union { | 
|---|
| 2271 | struct { | 
|---|
| 2272 | __u64 pts; | 
|---|
| 2273 | } stop; | 
|---|
| 2274 |  | 
|---|
| 2275 | struct { | 
|---|
| 2276 | /* 0 or 1000 specifies normal speed, | 
|---|
| 2277 | 1 specifies forward single stepping, | 
|---|
| 2278 | -1 specifies backward single stepping, | 
|---|
| 2279 | >1: playback at speed/1000 of the normal speed, | 
|---|
| 2280 | <-1: reverse playback at (-speed/1000) of the normal speed. */ | 
|---|
| 2281 | __s32 speed; | 
|---|
| 2282 | __u32 format; | 
|---|
| 2283 | } start; | 
|---|
| 2284 |  | 
|---|
| 2285 | struct { | 
|---|
| 2286 | __u32 data[16]; | 
|---|
| 2287 | } raw; | 
|---|
| 2288 | }; | 
|---|
| 2289 | }; | 
|---|
| 2290 | #endif | 
|---|
| 2291 |  | 
|---|
| 2292 |  | 
|---|
| 2293 | /* | 
|---|
| 2294 | *	D A T A   S E R V I C E S   ( V B I ) | 
|---|
| 2295 | * | 
|---|
| 2296 | *	Data services API by Michael Schimek | 
|---|
| 2297 | */ | 
|---|
| 2298 |  | 
|---|
| 2299 | /* Raw VBI */ | 
|---|
| 2300 | struct v4l2_vbi_format { | 
|---|
| 2301 | __u32	sampling_rate;		/* in 1 Hz */ | 
|---|
| 2302 | __u32	offset; | 
|---|
| 2303 | __u32	samples_per_line; | 
|---|
| 2304 | __u32	sample_format;		/* V4L2_PIX_FMT_* */ | 
|---|
| 2305 | __s32	start[2]; | 
|---|
| 2306 | __u32	count[2]; | 
|---|
| 2307 | __u32	flags;			/* V4L2_VBI_* */ | 
|---|
| 2308 | __u32	reserved[2];		/* must be zero */ | 
|---|
| 2309 | }; | 
|---|
| 2310 |  | 
|---|
| 2311 | /*  VBI flags  */ | 
|---|
| 2312 | #define V4L2_VBI_UNSYNC		(1 << 0) | 
|---|
| 2313 | #define V4L2_VBI_INTERLACED	(1 << 1) | 
|---|
| 2314 |  | 
|---|
| 2315 | /* ITU-R start lines for each field */ | 
|---|
| 2316 | #define V4L2_VBI_ITU_525_F1_START (1) | 
|---|
| 2317 | #define V4L2_VBI_ITU_525_F2_START (264) | 
|---|
| 2318 | #define V4L2_VBI_ITU_625_F1_START (1) | 
|---|
| 2319 | #define V4L2_VBI_ITU_625_F2_START (314) | 
|---|
| 2320 |  | 
|---|
| 2321 | /* Sliced VBI | 
|---|
| 2322 | * | 
|---|
| 2323 | *    This implements is a proposal V4L2 API to allow SLICED VBI | 
|---|
| 2324 | * required for some hardware encoders. It should change without | 
|---|
| 2325 | * notice in the definitive implementation. | 
|---|
| 2326 | */ | 
|---|
| 2327 |  | 
|---|
| 2328 | struct v4l2_sliced_vbi_format { | 
|---|
| 2329 | __u16   service_set; | 
|---|
| 2330 | /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field | 
|---|
| 2331 | service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field | 
|---|
| 2332 | (equals frame lines 313-336 for 625 line video | 
|---|
| 2333 | standards, 263-286 for 525 line standards) */ | 
|---|
| 2334 | __u16   service_lines[2][24]; | 
|---|
| 2335 | __u32   io_size; | 
|---|
| 2336 | __u32   reserved[2];            /* must be zero */ | 
|---|
| 2337 | }; | 
|---|
| 2338 |  | 
|---|
| 2339 | /* Teletext World System Teletext | 
|---|
| 2340 | (WST), defined on ITU-R BT.653-2 */ | 
|---|
| 2341 | #define V4L2_SLICED_TELETEXT_B          (0x0001) | 
|---|
| 2342 | /* Video Program System, defined on ETS 300 231*/ | 
|---|
| 2343 | #define V4L2_SLICED_VPS                 (0x0400) | 
|---|
| 2344 | /* Closed Caption, defined on EIA-608 */ | 
|---|
| 2345 | #define V4L2_SLICED_CAPTION_525         (0x1000) | 
|---|
| 2346 | /* Wide Screen System, defined on ITU-R BT1119.1 */ | 
|---|
| 2347 | #define V4L2_SLICED_WSS_625             (0x4000) | 
|---|
| 2348 |  | 
|---|
| 2349 | #define V4L2_SLICED_VBI_525             (V4L2_SLICED_CAPTION_525) | 
|---|
| 2350 | #define V4L2_SLICED_VBI_625             (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625) | 
|---|
| 2351 |  | 
|---|
| 2352 | struct v4l2_sliced_vbi_cap { | 
|---|
| 2353 | __u16   service_set; | 
|---|
| 2354 | /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field | 
|---|
| 2355 | service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field | 
|---|
| 2356 | (equals frame lines 313-336 for 625 line video | 
|---|
| 2357 | standards, 263-286 for 525 line standards) */ | 
|---|
| 2358 | __u16   service_lines[2][24]; | 
|---|
| 2359 | __u32	type;		/* enum v4l2_buf_type */ | 
|---|
| 2360 | __u32   reserved[3];    /* must be 0 */ | 
|---|
| 2361 | }; | 
|---|
| 2362 |  | 
|---|
| 2363 | struct v4l2_sliced_vbi_data { | 
|---|
| 2364 | __u32   id; | 
|---|
| 2365 | __u32   field;          /* 0: first field, 1: second field */ | 
|---|
| 2366 | __u32   line;           /* 1-23 */ | 
|---|
| 2367 | __u32   reserved;       /* must be 0 */ | 
|---|
| 2368 | __u8    data[48]; | 
|---|
| 2369 | }; | 
|---|
| 2370 |  | 
|---|
| 2371 | /* | 
|---|
| 2372 | * Sliced VBI data inserted into MPEG Streams | 
|---|
| 2373 | */ | 
|---|
| 2374 |  | 
|---|
| 2375 | /* | 
|---|
| 2376 | * V4L2_MPEG_STREAM_VBI_FMT_IVTV: | 
|---|
| 2377 | * | 
|---|
| 2378 | * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an | 
|---|
| 2379 | * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI | 
|---|
| 2380 | * data | 
|---|
| 2381 | * | 
|---|
| 2382 | * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header | 
|---|
| 2383 | * definitions are not included here.  See the MPEG-2 specifications for details | 
|---|
| 2384 | * on these headers. | 
|---|
| 2385 | */ | 
|---|
| 2386 |  | 
|---|
| 2387 | /* Line type IDs */ | 
|---|
| 2388 | #define V4L2_MPEG_VBI_IVTV_TELETEXT_B     (1) | 
|---|
| 2389 | #define V4L2_MPEG_VBI_IVTV_CAPTION_525    (4) | 
|---|
| 2390 | #define V4L2_MPEG_VBI_IVTV_WSS_625        (5) | 
|---|
| 2391 | #define V4L2_MPEG_VBI_IVTV_VPS            (7) | 
|---|
| 2392 |  | 
|---|
| 2393 | struct v4l2_mpeg_vbi_itv0_line { | 
|---|
| 2394 | __u8 id;	/* One of V4L2_MPEG_VBI_IVTV_* above */ | 
|---|
| 2395 | __u8 data[42];	/* Sliced VBI data for the line */ | 
|---|
| 2396 | } __attribute__ ((packed)); | 
|---|
| 2397 |  | 
|---|
| 2398 | struct v4l2_mpeg_vbi_itv0 { | 
|---|
| 2399 | __le32 linemask[2]; /* Bitmasks of VBI service lines present */ | 
|---|
| 2400 | struct v4l2_mpeg_vbi_itv0_line line[35]; | 
|---|
| 2401 | } __attribute__ ((packed)); | 
|---|
| 2402 |  | 
|---|
| 2403 | struct v4l2_mpeg_vbi_ITV0 { | 
|---|
| 2404 | struct v4l2_mpeg_vbi_itv0_line line[36]; | 
|---|
| 2405 | } __attribute__ ((packed)); | 
|---|
| 2406 |  | 
|---|
| 2407 | #define V4L2_MPEG_VBI_IVTV_MAGIC0	"itv0" | 
|---|
| 2408 | #define V4L2_MPEG_VBI_IVTV_MAGIC1	"ITV0" | 
|---|
| 2409 |  | 
|---|
| 2410 | struct v4l2_mpeg_vbi_fmt_ivtv { | 
|---|
| 2411 | __u8 magic[4]; | 
|---|
| 2412 | union { | 
|---|
| 2413 | struct v4l2_mpeg_vbi_itv0 itv0; | 
|---|
| 2414 | struct v4l2_mpeg_vbi_ITV0 ITV0; | 
|---|
| 2415 | }; | 
|---|
| 2416 | } __attribute__ ((packed)); | 
|---|
| 2417 |  | 
|---|
| 2418 | /* | 
|---|
| 2419 | *	A G G R E G A T E   S T R U C T U R E S | 
|---|
| 2420 | */ | 
|---|
| 2421 |  | 
|---|
| 2422 | /** | 
|---|
| 2423 | * struct v4l2_plane_pix_format - additional, per-plane format definition | 
|---|
| 2424 | * @sizeimage:		maximum size in bytes required for data, for which | 
|---|
| 2425 | *			this plane will be used | 
|---|
| 2426 | * @bytesperline:	distance in bytes between the leftmost pixels in two | 
|---|
| 2427 | *			adjacent lines | 
|---|
| 2428 | * @reserved:		drivers and applications must zero this array | 
|---|
| 2429 | */ | 
|---|
| 2430 | struct v4l2_plane_pix_format { | 
|---|
| 2431 | __u32		sizeimage; | 
|---|
| 2432 | __u32		bytesperline; | 
|---|
| 2433 | __u16		reserved[6]; | 
|---|
| 2434 | } __attribute__ ((packed)); | 
|---|
| 2435 |  | 
|---|
| 2436 | /** | 
|---|
| 2437 | * struct v4l2_pix_format_mplane - multiplanar format definition | 
|---|
| 2438 | * @width:		image width in pixels | 
|---|
| 2439 | * @height:		image height in pixels | 
|---|
| 2440 | * @pixelformat:	little endian four character code (fourcc) | 
|---|
| 2441 | * @field:		enum v4l2_field; field order (for interlaced video) | 
|---|
| 2442 | * @colorspace:		enum v4l2_colorspace; supplemental to pixelformat | 
|---|
| 2443 | * @plane_fmt:		per-plane information | 
|---|
| 2444 | * @num_planes:		number of planes for this format | 
|---|
| 2445 | * @flags:		format flags (V4L2_PIX_FMT_FLAG_*) | 
|---|
| 2446 | * @ycbcr_enc:		enum v4l2_ycbcr_encoding, Y'CbCr encoding | 
|---|
| 2447 | * @hsv_enc:		enum v4l2_hsv_encoding, HSV encoding | 
|---|
| 2448 | * @quantization:	enum v4l2_quantization, colorspace quantization | 
|---|
| 2449 | * @xfer_func:		enum v4l2_xfer_func, colorspace transfer function | 
|---|
| 2450 | * @reserved:		drivers and applications must zero this array | 
|---|
| 2451 | */ | 
|---|
| 2452 | struct v4l2_pix_format_mplane { | 
|---|
| 2453 | __u32				width; | 
|---|
| 2454 | __u32				height; | 
|---|
| 2455 | __u32				pixelformat; | 
|---|
| 2456 | __u32				field; | 
|---|
| 2457 | __u32				colorspace; | 
|---|
| 2458 |  | 
|---|
| 2459 | struct v4l2_plane_pix_format	plane_fmt[VIDEO_MAX_PLANES]; | 
|---|
| 2460 | __u8				num_planes; | 
|---|
| 2461 | __u8				flags; | 
|---|
| 2462 | union { | 
|---|
| 2463 | __u8				ycbcr_enc; | 
|---|
| 2464 | __u8				hsv_enc; | 
|---|
| 2465 | }; | 
|---|
| 2466 | __u8				quantization; | 
|---|
| 2467 | __u8				xfer_func; | 
|---|
| 2468 | __u8				reserved[7]; | 
|---|
| 2469 | } __attribute__ ((packed)); | 
|---|
| 2470 |  | 
|---|
| 2471 | /** | 
|---|
| 2472 | * struct v4l2_sdr_format - SDR format definition | 
|---|
| 2473 | * @pixelformat:	little endian four character code (fourcc) | 
|---|
| 2474 | * @buffersize:		maximum size in bytes required for data | 
|---|
| 2475 | * @reserved:		drivers and applications must zero this array | 
|---|
| 2476 | */ | 
|---|
| 2477 | struct v4l2_sdr_format { | 
|---|
| 2478 | __u32				pixelformat; | 
|---|
| 2479 | __u32				buffersize; | 
|---|
| 2480 | __u8				reserved[24]; | 
|---|
| 2481 | } __attribute__ ((packed)); | 
|---|
| 2482 |  | 
|---|
| 2483 | /** | 
|---|
| 2484 | * struct v4l2_meta_format - metadata format definition | 
|---|
| 2485 | * @dataformat:		little endian four character code (fourcc) | 
|---|
| 2486 | * @buffersize:		maximum size in bytes required for data | 
|---|
| 2487 | * @width:		number of data units of data per line (valid for line | 
|---|
| 2488 | *			based formats only, see format documentation) | 
|---|
| 2489 | * @height:		number of lines of data per buffer (valid for line based | 
|---|
| 2490 | *			formats only) | 
|---|
| 2491 | * @bytesperline:	offset between the beginnings of two adjacent lines in | 
|---|
| 2492 | *			bytes (valid for line based formats only) | 
|---|
| 2493 | */ | 
|---|
| 2494 | struct v4l2_meta_format { | 
|---|
| 2495 | __u32				dataformat; | 
|---|
| 2496 | __u32				buffersize; | 
|---|
| 2497 | __u32				width; | 
|---|
| 2498 | __u32				height; | 
|---|
| 2499 | __u32				bytesperline; | 
|---|
| 2500 | } __attribute__ ((packed)); | 
|---|
| 2501 |  | 
|---|
| 2502 | /** | 
|---|
| 2503 | * struct v4l2_format - stream data format | 
|---|
| 2504 | * @type:		enum v4l2_buf_type; type of the data stream | 
|---|
| 2505 | * @fmt.pix:		definition of an image format | 
|---|
| 2506 | * @fmt.pix_mp:		definition of a multiplanar image format | 
|---|
| 2507 | * @fmt.win:		definition of an overlaid image | 
|---|
| 2508 | * @fmt.vbi:		raw VBI capture or output parameters | 
|---|
| 2509 | * @fmt.sliced:		sliced VBI capture or output parameters | 
|---|
| 2510 | * @fmt.raw_data:	placeholder for future extensions and custom formats | 
|---|
| 2511 | * @fmt:		union of @pix, @pix_mp, @win, @vbi, @sliced, @sdr, | 
|---|
| 2512 | *			@meta and @raw_data | 
|---|
| 2513 | */ | 
|---|
| 2514 | struct v4l2_format { | 
|---|
| 2515 | __u32	 type; | 
|---|
| 2516 | union { | 
|---|
| 2517 | struct v4l2_pix_format		pix;     /* V4L2_BUF_TYPE_VIDEO_CAPTURE */ | 
|---|
| 2518 | struct v4l2_pix_format_mplane	pix_mp;  /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */ | 
|---|
| 2519 | struct v4l2_window		win;     /* V4L2_BUF_TYPE_VIDEO_OVERLAY */ | 
|---|
| 2520 | struct v4l2_vbi_format		vbi;     /* V4L2_BUF_TYPE_VBI_CAPTURE */ | 
|---|
| 2521 | struct v4l2_sliced_vbi_format	sliced;  /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ | 
|---|
| 2522 | struct v4l2_sdr_format		sdr;     /* V4L2_BUF_TYPE_SDR_CAPTURE */ | 
|---|
| 2523 | struct v4l2_meta_format		meta;    /* V4L2_BUF_TYPE_META_CAPTURE */ | 
|---|
| 2524 | __u8	raw_data[200];                   /* user-defined */ | 
|---|
| 2525 | } fmt; | 
|---|
| 2526 | }; | 
|---|
| 2527 |  | 
|---|
| 2528 | /*	Stream type-dependent parameters | 
|---|
| 2529 | */ | 
|---|
| 2530 | struct v4l2_streamparm { | 
|---|
| 2531 | __u32	 type;			/* enum v4l2_buf_type */ | 
|---|
| 2532 | union { | 
|---|
| 2533 | struct v4l2_captureparm	capture; | 
|---|
| 2534 | struct v4l2_outputparm	output; | 
|---|
| 2535 | __u8	raw_data[200];  /* user-defined */ | 
|---|
| 2536 | } parm; | 
|---|
| 2537 | }; | 
|---|
| 2538 |  | 
|---|
| 2539 | /* | 
|---|
| 2540 | *	E V E N T S | 
|---|
| 2541 | */ | 
|---|
| 2542 |  | 
|---|
| 2543 | #define V4L2_EVENT_ALL				0 | 
|---|
| 2544 | #define V4L2_EVENT_VSYNC			1 | 
|---|
| 2545 | #define V4L2_EVENT_EOS				2 | 
|---|
| 2546 | #define V4L2_EVENT_CTRL				3 | 
|---|
| 2547 | #define V4L2_EVENT_FRAME_SYNC			4 | 
|---|
| 2548 | #define V4L2_EVENT_SOURCE_CHANGE		5 | 
|---|
| 2549 | #define V4L2_EVENT_MOTION_DET			6 | 
|---|
| 2550 | #define V4L2_EVENT_PRIVATE_START		0x08000000 | 
|---|
| 2551 |  | 
|---|
| 2552 | /* Payload for V4L2_EVENT_VSYNC */ | 
|---|
| 2553 | struct v4l2_event_vsync { | 
|---|
| 2554 | /* Can be V4L2_FIELD_ANY, _NONE, _TOP or _BOTTOM */ | 
|---|
| 2555 | __u8 field; | 
|---|
| 2556 | } __attribute__ ((packed)); | 
|---|
| 2557 |  | 
|---|
| 2558 | /* Payload for V4L2_EVENT_CTRL */ | 
|---|
| 2559 | #define V4L2_EVENT_CTRL_CH_VALUE		(1 << 0) | 
|---|
| 2560 | #define V4L2_EVENT_CTRL_CH_FLAGS		(1 << 1) | 
|---|
| 2561 | #define V4L2_EVENT_CTRL_CH_RANGE		(1 << 2) | 
|---|
| 2562 | #define V4L2_EVENT_CTRL_CH_DIMENSIONS		(1 << 3) | 
|---|
| 2563 |  | 
|---|
| 2564 | struct v4l2_event_ctrl { | 
|---|
| 2565 | __u32 changes; | 
|---|
| 2566 | __u32 type; | 
|---|
| 2567 | union { | 
|---|
| 2568 | __s32 value; | 
|---|
| 2569 | __s64 value64; | 
|---|
| 2570 | }; | 
|---|
| 2571 | __u32 flags; | 
|---|
| 2572 | __s32 minimum; | 
|---|
| 2573 | __s32 maximum; | 
|---|
| 2574 | __s32 step; | 
|---|
| 2575 | __s32 default_value; | 
|---|
| 2576 | }; | 
|---|
| 2577 |  | 
|---|
| 2578 | struct v4l2_event_frame_sync { | 
|---|
| 2579 | __u32 frame_sequence; | 
|---|
| 2580 | }; | 
|---|
| 2581 |  | 
|---|
| 2582 | #define V4L2_EVENT_SRC_CH_RESOLUTION		(1 << 0) | 
|---|
| 2583 |  | 
|---|
| 2584 | struct v4l2_event_src_change { | 
|---|
| 2585 | __u32 changes; | 
|---|
| 2586 | }; | 
|---|
| 2587 |  | 
|---|
| 2588 | #define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ	(1 << 0) | 
|---|
| 2589 |  | 
|---|
| 2590 | /** | 
|---|
| 2591 | * struct v4l2_event_motion_det - motion detection event | 
|---|
| 2592 | * @flags:             if V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ is set, then the | 
|---|
| 2593 | *                     frame_sequence field is valid. | 
|---|
| 2594 | * @frame_sequence:    the frame sequence number associated with this event. | 
|---|
| 2595 | * @region_mask:       which regions detected motion. | 
|---|
| 2596 | */ | 
|---|
| 2597 | struct v4l2_event_motion_det { | 
|---|
| 2598 | __u32 flags; | 
|---|
| 2599 | __u32 frame_sequence; | 
|---|
| 2600 | __u32 region_mask; | 
|---|
| 2601 | }; | 
|---|
| 2602 |  | 
|---|
| 2603 | struct v4l2_event { | 
|---|
| 2604 | __u32				type; | 
|---|
| 2605 | union { | 
|---|
| 2606 | struct v4l2_event_vsync		vsync; | 
|---|
| 2607 | struct v4l2_event_ctrl		ctrl; | 
|---|
| 2608 | struct v4l2_event_frame_sync	frame_sync; | 
|---|
| 2609 | struct v4l2_event_src_change	src_change; | 
|---|
| 2610 | struct v4l2_event_motion_det	motion_det; | 
|---|
| 2611 | __u8				data[64]; | 
|---|
| 2612 | } u; | 
|---|
| 2613 | __u32				pending; | 
|---|
| 2614 | __u32				sequence; | 
|---|
| 2615 | #ifdef __KERNEL__ | 
|---|
| 2616 | struct __kernel_timespec	timestamp; | 
|---|
| 2617 | #else | 
|---|
| 2618 | struct timespec			timestamp; | 
|---|
| 2619 | #endif | 
|---|
| 2620 | __u32				id; | 
|---|
| 2621 | __u32				reserved[8]; | 
|---|
| 2622 | }; | 
|---|
| 2623 |  | 
|---|
| 2624 | #define V4L2_EVENT_SUB_FL_SEND_INITIAL		(1 << 0) | 
|---|
| 2625 | #define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK	(1 << 1) | 
|---|
| 2626 |  | 
|---|
| 2627 | struct v4l2_event_subscription { | 
|---|
| 2628 | __u32				type; | 
|---|
| 2629 | __u32				id; | 
|---|
| 2630 | __u32				flags; | 
|---|
| 2631 | __u32				reserved[5]; | 
|---|
| 2632 | }; | 
|---|
| 2633 |  | 
|---|
| 2634 | /* | 
|---|
| 2635 | *	A D V A N C E D   D E B U G G I N G | 
|---|
| 2636 | * | 
|---|
| 2637 | *	NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS! | 
|---|
| 2638 | *	FOR DEBUGGING, TESTING AND INTERNAL USE ONLY! | 
|---|
| 2639 | */ | 
|---|
| 2640 |  | 
|---|
| 2641 | /* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */ | 
|---|
| 2642 |  | 
|---|
| 2643 | #define V4L2_CHIP_MATCH_BRIDGE      0  /* Match against chip ID on the bridge (0 for the bridge) */ | 
|---|
| 2644 | #define V4L2_CHIP_MATCH_SUBDEV      4  /* Match against subdev index */ | 
|---|
| 2645 |  | 
|---|
| 2646 | /* The following four defines are no longer in use */ | 
|---|
| 2647 | #define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE | 
|---|
| 2648 | #define V4L2_CHIP_MATCH_I2C_DRIVER  1  /* Match against I2C driver name */ | 
|---|
| 2649 | #define V4L2_CHIP_MATCH_I2C_ADDR    2  /* Match against I2C 7-bit address */ | 
|---|
| 2650 | #define V4L2_CHIP_MATCH_AC97        3  /* Match against ancillary AC97 chip */ | 
|---|
| 2651 |  | 
|---|
| 2652 | struct v4l2_dbg_match { | 
|---|
| 2653 | __u32 type; /* Match type */ | 
|---|
| 2654 | union {     /* Match this chip, meaning determined by type */ | 
|---|
| 2655 | __u32 addr; | 
|---|
| 2656 | char name[32]; | 
|---|
| 2657 | }; | 
|---|
| 2658 | } __attribute__ ((packed)); | 
|---|
| 2659 |  | 
|---|
| 2660 | struct v4l2_dbg_register { | 
|---|
| 2661 | struct v4l2_dbg_match match; | 
|---|
| 2662 | __u32 size;	/* register size in bytes */ | 
|---|
| 2663 | __u64 reg; | 
|---|
| 2664 | __u64 val; | 
|---|
| 2665 | } __attribute__ ((packed)); | 
|---|
| 2666 |  | 
|---|
| 2667 | #define V4L2_CHIP_FL_READABLE (1 << 0) | 
|---|
| 2668 | #define V4L2_CHIP_FL_WRITABLE (1 << 1) | 
|---|
| 2669 |  | 
|---|
| 2670 | /* VIDIOC_DBG_G_CHIP_INFO */ | 
|---|
| 2671 | struct v4l2_dbg_chip_info { | 
|---|
| 2672 | struct v4l2_dbg_match match; | 
|---|
| 2673 | char name[32]; | 
|---|
| 2674 | __u32 flags; | 
|---|
| 2675 | __u32 reserved[32]; | 
|---|
| 2676 | } __attribute__ ((packed)); | 
|---|
| 2677 |  | 
|---|
| 2678 | /** | 
|---|
| 2679 | * struct v4l2_create_buffers - VIDIOC_CREATE_BUFS argument | 
|---|
| 2680 | * @index:	on return, index of the first created buffer | 
|---|
| 2681 | * @count:	entry: number of requested buffers, | 
|---|
| 2682 | *		return: number of created buffers | 
|---|
| 2683 | * @memory:	enum v4l2_memory; buffer memory type | 
|---|
| 2684 | * @format:	frame format, for which buffers are requested | 
|---|
| 2685 | * @capabilities: capabilities of this buffer type. | 
|---|
| 2686 | * @flags:	additional buffer management attributes (ignored unless the | 
|---|
| 2687 | *		queue has V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS capability | 
|---|
| 2688 | *		and configured for MMAP streaming I/O). | 
|---|
| 2689 | * @max_num_buffers: if V4L2_BUF_CAP_SUPPORTS_MAX_NUM_BUFFERS capability flag is set | 
|---|
| 2690 | *		this field indicate the maximum possible number of buffers | 
|---|
| 2691 | *		for this queue. | 
|---|
| 2692 | * @reserved:	future extensions | 
|---|
| 2693 | */ | 
|---|
| 2694 | struct v4l2_create_buffers { | 
|---|
| 2695 | __u32			index; | 
|---|
| 2696 | __u32			count; | 
|---|
| 2697 | __u32			memory; | 
|---|
| 2698 | struct v4l2_format	format; | 
|---|
| 2699 | __u32			capabilities; | 
|---|
| 2700 | __u32			flags; | 
|---|
| 2701 | __u32			max_num_buffers; | 
|---|
| 2702 | __u32			reserved[5]; | 
|---|
| 2703 | }; | 
|---|
| 2704 |  | 
|---|
| 2705 | /** | 
|---|
| 2706 | * struct v4l2_remove_buffers - VIDIOC_REMOVE_BUFS argument | 
|---|
| 2707 | * @index:	the first buffer to be removed | 
|---|
| 2708 | * @count:	number of buffers to removed | 
|---|
| 2709 | * @type:	enum v4l2_buf_type | 
|---|
| 2710 | * @reserved:	future extensions | 
|---|
| 2711 | */ | 
|---|
| 2712 | struct v4l2_remove_buffers { | 
|---|
| 2713 | __u32			index; | 
|---|
| 2714 | __u32			count; | 
|---|
| 2715 | __u32			type; | 
|---|
| 2716 | __u32			reserved[13]; | 
|---|
| 2717 | }; | 
|---|
| 2718 |  | 
|---|
| 2719 | /* | 
|---|
| 2720 | *	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 | 
|---|
| 2721 | * | 
|---|
| 2722 | */ | 
|---|
| 2723 | #define VIDIOC_QUERYCAP		 _IOR('V',  0, struct v4l2_capability) | 
|---|
| 2724 | #define VIDIOC_ENUM_FMT         _IOWR('V',  2, struct v4l2_fmtdesc) | 
|---|
| 2725 | #define VIDIOC_G_FMT		_IOWR('V',  4, struct v4l2_format) | 
|---|
| 2726 | #define VIDIOC_S_FMT		_IOWR('V',  5, struct v4l2_format) | 
|---|
| 2727 | #define VIDIOC_REQBUFS		_IOWR('V',  8, struct v4l2_requestbuffers) | 
|---|
| 2728 | #define VIDIOC_QUERYBUF		_IOWR('V',  9, struct v4l2_buffer) | 
|---|
| 2729 | #define VIDIOC_G_FBUF		 _IOR('V', 10, struct v4l2_framebuffer) | 
|---|
| 2730 | #define VIDIOC_S_FBUF		 _IOW('V', 11, struct v4l2_framebuffer) | 
|---|
| 2731 | #define VIDIOC_OVERLAY		 _IOW('V', 14, int) | 
|---|
| 2732 | #define VIDIOC_QBUF		_IOWR('V', 15, struct v4l2_buffer) | 
|---|
| 2733 | #define VIDIOC_EXPBUF		_IOWR('V', 16, struct v4l2_exportbuffer) | 
|---|
| 2734 | #define VIDIOC_DQBUF		_IOWR('V', 17, struct v4l2_buffer) | 
|---|
| 2735 | #define VIDIOC_STREAMON		 _IOW('V', 18, int) | 
|---|
| 2736 | #define VIDIOC_STREAMOFF	 _IOW('V', 19, int) | 
|---|
| 2737 | #define VIDIOC_G_PARM		_IOWR('V', 21, struct v4l2_streamparm) | 
|---|
| 2738 | #define VIDIOC_S_PARM		_IOWR('V', 22, struct v4l2_streamparm) | 
|---|
| 2739 | #define VIDIOC_G_STD		 _IOR('V', 23, v4l2_std_id) | 
|---|
| 2740 | #define VIDIOC_S_STD		 _IOW('V', 24, v4l2_std_id) | 
|---|
| 2741 | #define VIDIOC_ENUMSTD		_IOWR('V', 25, struct v4l2_standard) | 
|---|
| 2742 | #define VIDIOC_ENUMINPUT	_IOWR('V', 26, struct v4l2_input) | 
|---|
| 2743 | #define VIDIOC_G_CTRL		_IOWR('V', 27, struct v4l2_control) | 
|---|
| 2744 | #define VIDIOC_S_CTRL		_IOWR('V', 28, struct v4l2_control) | 
|---|
| 2745 | #define VIDIOC_G_TUNER		_IOWR('V', 29, struct v4l2_tuner) | 
|---|
| 2746 | #define VIDIOC_S_TUNER		 _IOW('V', 30, struct v4l2_tuner) | 
|---|
| 2747 | #define VIDIOC_G_AUDIO		 _IOR('V', 33, struct v4l2_audio) | 
|---|
| 2748 | #define VIDIOC_S_AUDIO		 _IOW('V', 34, struct v4l2_audio) | 
|---|
| 2749 | #define VIDIOC_QUERYCTRL	_IOWR('V', 36, struct v4l2_queryctrl) | 
|---|
| 2750 | #define 	_IOWR('V', 37, struct v4l2_querymenu) | 
|---|
| 2751 | #define VIDIOC_G_INPUT		 _IOR('V', 38, int) | 
|---|
| 2752 | #define VIDIOC_S_INPUT		_IOWR('V', 39, int) | 
|---|
| 2753 | #define VIDIOC_G_EDID		_IOWR('V', 40, struct v4l2_edid) | 
|---|
| 2754 | #define VIDIOC_S_EDID		_IOWR('V', 41, struct v4l2_edid) | 
|---|
| 2755 | #define VIDIOC_G_OUTPUT		 _IOR('V', 46, int) | 
|---|
| 2756 | #define VIDIOC_S_OUTPUT		_IOWR('V', 47, int) | 
|---|
| 2757 | #define VIDIOC_ENUMOUTPUT	_IOWR('V', 48, struct v4l2_output) | 
|---|
| 2758 | #define VIDIOC_G_AUDOUT		 _IOR('V', 49, struct v4l2_audioout) | 
|---|
| 2759 | #define VIDIOC_S_AUDOUT		 _IOW('V', 50, struct v4l2_audioout) | 
|---|
| 2760 | #define VIDIOC_G_MODULATOR	_IOWR('V', 54, struct v4l2_modulator) | 
|---|
| 2761 | #define VIDIOC_S_MODULATOR	 _IOW('V', 55, struct v4l2_modulator) | 
|---|
| 2762 | #define VIDIOC_G_FREQUENCY	_IOWR('V', 56, struct v4l2_frequency) | 
|---|
| 2763 | #define VIDIOC_S_FREQUENCY	 _IOW('V', 57, struct v4l2_frequency) | 
|---|
| 2764 | #define VIDIOC_CROPCAP		_IOWR('V', 58, struct v4l2_cropcap) | 
|---|
| 2765 | #define VIDIOC_G_CROP		_IOWR('V', 59, struct v4l2_crop) | 
|---|
| 2766 | #define VIDIOC_S_CROP		 _IOW('V', 60, struct v4l2_crop) | 
|---|
| 2767 | #define VIDIOC_G_JPEGCOMP	 _IOR('V', 61, struct v4l2_jpegcompression) | 
|---|
| 2768 | #define VIDIOC_S_JPEGCOMP	 _IOW('V', 62, struct v4l2_jpegcompression) | 
|---|
| 2769 | #define VIDIOC_QUERYSTD		 _IOR('V', 63, v4l2_std_id) | 
|---|
| 2770 | #define VIDIOC_TRY_FMT		_IOWR('V', 64, struct v4l2_format) | 
|---|
| 2771 | #define VIDIOC_ENUMAUDIO	_IOWR('V', 65, struct v4l2_audio) | 
|---|
| 2772 | #define VIDIOC_ENUMAUDOUT	_IOWR('V', 66, struct v4l2_audioout) | 
|---|
| 2773 | #define VIDIOC_G_PRIORITY	 _IOR('V', 67, __u32) /* enum v4l2_priority */ | 
|---|
| 2774 | #define VIDIOC_S_PRIORITY	 _IOW('V', 68, __u32) /* enum v4l2_priority */ | 
|---|
| 2775 | #define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap) | 
|---|
| 2776 | #define VIDIOC_LOG_STATUS         _IO('V', 70) | 
|---|
| 2777 | #define VIDIOC_G_EXT_CTRLS	_IOWR('V', 71, struct v4l2_ext_controls) | 
|---|
| 2778 | #define VIDIOC_S_EXT_CTRLS	_IOWR('V', 72, struct v4l2_ext_controls) | 
|---|
| 2779 | #define VIDIOC_TRY_EXT_CTRLS	_IOWR('V', 73, struct v4l2_ext_controls) | 
|---|
| 2780 | #define VIDIOC_ENUM_FRAMESIZES	_IOWR('V', 74, struct v4l2_frmsizeenum) | 
|---|
| 2781 | #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum) | 
|---|
| 2782 | #define VIDIOC_G_ENC_INDEX       _IOR('V', 76, struct v4l2_enc_idx) | 
|---|
| 2783 | #define VIDIOC_ENCODER_CMD      _IOWR('V', 77, struct v4l2_encoder_cmd) | 
|---|
| 2784 | #define VIDIOC_TRY_ENCODER_CMD  _IOWR('V', 78, struct v4l2_encoder_cmd) | 
|---|
| 2785 |  | 
|---|
| 2786 | /* | 
|---|
| 2787 | * Experimental, meant for debugging, testing and internal use. | 
|---|
| 2788 | * Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined. | 
|---|
| 2789 | * You must be root to use these ioctls. Never use these in applications! | 
|---|
| 2790 | */ | 
|---|
| 2791 | #define VIDIOC_DBG_S_REGISTER	 _IOW('V', 79, struct v4l2_dbg_register) | 
|---|
| 2792 | #define VIDIOC_DBG_G_REGISTER	_IOWR('V', 80, struct v4l2_dbg_register) | 
|---|
| 2793 |  | 
|---|
| 2794 | #define VIDIOC_S_HW_FREQ_SEEK	 _IOW('V', 82, struct v4l2_hw_freq_seek) | 
|---|
| 2795 | #define VIDIOC_S_DV_TIMINGS	_IOWR('V', 87, struct v4l2_dv_timings) | 
|---|
| 2796 | #define VIDIOC_G_DV_TIMINGS	_IOWR('V', 88, struct v4l2_dv_timings) | 
|---|
| 2797 | #define VIDIOC_DQEVENT		 _IOR('V', 89, struct v4l2_event) | 
|---|
| 2798 | #define VIDIOC_SUBSCRIBE_EVENT	 _IOW('V', 90, struct v4l2_event_subscription) | 
|---|
| 2799 | #define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription) | 
|---|
| 2800 | #define VIDIOC_CREATE_BUFS	_IOWR('V', 92, struct v4l2_create_buffers) | 
|---|
| 2801 | #define VIDIOC_PREPARE_BUF	_IOWR('V', 93, struct v4l2_buffer) | 
|---|
| 2802 | #define VIDIOC_G_SELECTION	_IOWR('V', 94, struct v4l2_selection) | 
|---|
| 2803 | #define VIDIOC_S_SELECTION	_IOWR('V', 95, struct v4l2_selection) | 
|---|
| 2804 | #define VIDIOC_DECODER_CMD	_IOWR('V', 96, struct v4l2_decoder_cmd) | 
|---|
| 2805 | #define VIDIOC_TRY_DECODER_CMD	_IOWR('V', 97, struct v4l2_decoder_cmd) | 
|---|
| 2806 | #define VIDIOC_ENUM_DV_TIMINGS  _IOWR('V', 98, struct v4l2_enum_dv_timings) | 
|---|
| 2807 | #define VIDIOC_QUERY_DV_TIMINGS  _IOR('V', 99, struct v4l2_dv_timings) | 
|---|
| 2808 | #define VIDIOC_DV_TIMINGS_CAP   _IOWR('V', 100, struct v4l2_dv_timings_cap) | 
|---|
| 2809 | #define VIDIOC_ENUM_FREQ_BANDS	_IOWR('V', 101, struct v4l2_frequency_band) | 
|---|
| 2810 |  | 
|---|
| 2811 | /* | 
|---|
| 2812 | * Experimental, meant for debugging, testing and internal use. | 
|---|
| 2813 | * Never use this in applications! | 
|---|
| 2814 | */ | 
|---|
| 2815 | #define VIDIOC_DBG_G_CHIP_INFO  _IOWR('V', 102, struct v4l2_dbg_chip_info) | 
|---|
| 2816 |  | 
|---|
| 2817 | #define VIDIOC_QUERY_EXT_CTRL	_IOWR('V', 103, struct v4l2_query_ext_ctrl) | 
|---|
| 2818 | #define VIDIOC_REMOVE_BUFS	_IOWR('V', 104, struct v4l2_remove_buffers) | 
|---|
| 2819 |  | 
|---|
| 2820 |  | 
|---|
| 2821 | /* Reminder: when adding new ioctls please add support for them to | 
|---|
| 2822 | drivers/media/v4l2-core/v4l2-compat-ioctl32.c as well! */ | 
|---|
| 2823 |  | 
|---|
| 2824 | #define BASE_VIDIOC_PRIVATE	192		/* 192-255 are private */ | 
|---|
| 2825 |  | 
|---|
| 2826 | /* Deprecated definitions kept for backwards compatibility */ | 
|---|
| 2827 | #ifndef __KERNEL__ | 
|---|
| 2828 | #define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16 | 
|---|
| 2829 | #define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32 | 
|---|
| 2830 | /* | 
|---|
| 2831 | * This capability was never implemented, anyone using this cap should drop it | 
|---|
| 2832 | * from their code. | 
|---|
| 2833 | */ | 
|---|
| 2834 | #define V4L2_CAP_ASYNCIO 0x02000000 | 
|---|
| 2835 | #endif | 
|---|
| 2836 |  | 
|---|
| 2837 | #endif /* _UAPI__LINUX_VIDEODEV2_H */ | 
|---|
| 2838 |  | 
|---|