The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/videoio.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* $NetBSD: videoio.h,v 1.12 2020/08/10 19:27:28 rjs Exp $ */
    2 /* $OpenBSD: videoio.h,v 1.16 2017/02/17 06:48:33 feinerer Exp $        */
    3 /*
    4  *  Video for Linux Two header file
    5  *
    6  *  Copyright (C) 1999-2012 the contributors
    7  *  Copyright (C) 2012 Nokia Corporation
    8  *  Contact: Sakari Ailus <sakari.ailus@iki.fi>
    9  *
   10  *  This program is free software; you can redistribute it and/or modify
   11  *  it under the terms of the GNU General Public License as published by
   12  *  the Free Software Foundation; either version 2 of the License, or
   13  *  (at your option) any later version.
   14  *
   15  *  This program is distributed in the hope that it will be useful,
   16  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
   17  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   18  *  GNU General Public License for more details.
   19  *
   20  *  Alternatively you can redistribute this file under the terms of the
   21  *  BSD license as stated below:
   22  *
   23  *  Redistribution and use in source and binary forms, with or without
   24  *  modification, are permitted provided that the following conditions
   25  *  are met:
   26  *  1. Redistributions of source code must retain the above copyright
   27  *     notice, this list of conditions and the following disclaimer.
   28  *  2. Redistributions in binary form must reproduce the above copyright
   29  *     notice, this list of conditions and the following disclaimer in
   30  *     the documentation and/or other materials provided with the
   31  *     distribution.
   32  *  3. The names of its contributors may not be used to endorse or promote
   33  *     products derived from this software without specific prior written
   34  *     permission.
   35  *
   36  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   37  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   38  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   39  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   40  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   41  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
   42  *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   43  *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   44  *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   45  *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   46  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   47  *
   48  *      Header file for v4l or V4L2 drivers and applications
   49  * with public API.
   50  * All kernel-specific stuff were moved to media/v4l2-dev.h, so
   51  * no #if __KERNEL tests are allowed here
   52  *
   53  *      See https://linuxtv.org for more info
   54  *
   55  *      Author: Bill Dirks <bill@thedirks.org>
   56  *              Justin Schoeman
   57  *              Hans Verkuil <hverkuil@xs4all.nl>
   58  *              et al.
   59  */
   60 
   61 #ifndef _SYS_VIDEOIO_H_
   62 #define _SYS_VIDEOIO_H_
   63 
   64 #include <sys/types.h>
   65 #include <sys/ioccom.h>
   66 #include <sys/time.h>
   67 #ifdef _KERNEL
   68 #include <compat/sys/time.h>
   69 #endif
   70 
   71 
   72 /* Inline #include <linux/v4l2-common.h>
   73  * (v4l2-common.h was split off from videodev2.h and has the same BSD license.)
   74  *
   75  * Begin of v4l2-common.h
   76  */
   77 /*
   78  *
   79  * Selection interface definitions
   80  *
   81  */
   82 
   83 /* Current cropping area */
   84 #define V4L2_SEL_TGT_CROP               0x0000
   85 /* Default cropping area */
   86 #define V4L2_SEL_TGT_CROP_DEFAULT       0x0001
   87 /* Cropping bounds */
   88 #define V4L2_SEL_TGT_CROP_BOUNDS        0x0002
   89 /* Native frame size */
   90 #define V4L2_SEL_TGT_NATIVE_SIZE        0x0003
   91 /* Current composing area */
   92 #define V4L2_SEL_TGT_COMPOSE            0x0100
   93 /* Default composing area */
   94 #define V4L2_SEL_TGT_COMPOSE_DEFAULT    0x0101
   95 /* Composing bounds */
   96 #define V4L2_SEL_TGT_COMPOSE_BOUNDS     0x0102
   97 /* Current composing area plus all padding pixels */
   98 #define V4L2_SEL_TGT_COMPOSE_PADDED     0x0103
   99 
  100 /* Backward compatibility target definitions --- to be removed. */
  101 #define V4L2_SEL_TGT_CROP_ACTIVE        V4L2_SEL_TGT_CROP
  102 #define V4L2_SEL_TGT_COMPOSE_ACTIVE     V4L2_SEL_TGT_COMPOSE
  103 #define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL V4L2_SEL_TGT_CROP
  104 #define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE
  105 #define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS V4L2_SEL_TGT_CROP_BOUNDS
  106 #define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS
  107 
  108 /* Selection flags */
  109 #define V4L2_SEL_FLAG_GE                (1 << 0)
  110 #define V4L2_SEL_FLAG_LE                (1 << 1)
  111 #define V4L2_SEL_FLAG_KEEP_CONFIG       (1 << 2)
  112 
  113 /* Backward compatibility flag definitions --- to be removed. */
  114 #define V4L2_SUBDEV_SEL_FLAG_SIZE_GE    V4L2_SEL_FLAG_GE
  115 #define V4L2_SUBDEV_SEL_FLAG_SIZE_LE    V4L2_SEL_FLAG_LE
  116 #define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG
  117 
  118 struct v4l2_edid {
  119         u_int32_t pad;
  120         u_int32_t start_block;
  121         u_int32_t blocks;
  122         u_int32_t reserved[5];
  123         u_int8_t  *edid;
  124 };
  125 /*
  126  * End of v4l2-common.h
  127  */
  128 /* Inline #include <linux/v4l2-controls.h>
  129  * (v4l2-controls.h was split off from videodev2.h and has the same BSD license.)
  130  *
  131  * Begin of v4l2-controls.h
  132  */
  133 /* Control classes */
  134 #define V4L2_CTRL_CLASS_USER            0x00980000      /* Old-style 'user' controls */
  135 #define V4L2_CTRL_CLASS_MPEG            0x00990000      /* MPEG-compression controls */
  136 #define V4L2_CTRL_CLASS_CAMERA          0x009a0000      /* Camera class controls */
  137 #define V4L2_CTRL_CLASS_FM_TX           0x009b0000      /* FM Modulator controls */
  138 #define V4L2_CTRL_CLASS_FLASH           0x009c0000      /* Camera flash controls */
  139 #define V4L2_CTRL_CLASS_JPEG            0x009d0000      /* JPEG-compression controls */
  140 #define V4L2_CTRL_CLASS_IMAGE_SOURCE    0x009e0000      /* Image source controls */
  141 #define V4L2_CTRL_CLASS_IMAGE_PROC      0x009f0000      /* Image processing controls */
  142 #define V4L2_CTRL_CLASS_DV              0x00a00000      /* Digital Video controls */
  143 #define V4L2_CTRL_CLASS_FM_RX           0x00a10000      /* FM Receiver controls */
  144 #define V4L2_CTRL_CLASS_RF_TUNER        0x00a20000      /* RF tuner controls */
  145 #define V4L2_CTRL_CLASS_DETECT          0x00a30000      /* Detection controls */
  146 
  147 /* User-class control IDs */
  148 
  149 #define V4L2_CID_BASE                   (V4L2_CTRL_CLASS_USER | 0x900)
  150 #define V4L2_CID_USER_BASE              V4L2_CID_BASE
  151 #define V4L2_CID_USER_CLASS             (V4L2_CTRL_CLASS_USER | 1)
  152 #define V4L2_CID_BRIGHTNESS             (V4L2_CID_BASE+0)
  153 #define V4L2_CID_CONTRAST               (V4L2_CID_BASE+1)
  154 #define V4L2_CID_SATURATION             (V4L2_CID_BASE+2)
  155 #define V4L2_CID_HUE                    (V4L2_CID_BASE+3)
  156 #define V4L2_CID_AUDIO_VOLUME           (V4L2_CID_BASE+5)
  157 #define V4L2_CID_AUDIO_BALANCE          (V4L2_CID_BASE+6)
  158 #define V4L2_CID_AUDIO_BASS             (V4L2_CID_BASE+7)
  159 #define V4L2_CID_AUDIO_TREBLE           (V4L2_CID_BASE+8)
  160 #define V4L2_CID_AUDIO_MUTE             (V4L2_CID_BASE+9)
  161 #define V4L2_CID_AUDIO_LOUDNESS         (V4L2_CID_BASE+10)
  162 #define V4L2_CID_BLACK_LEVEL            (V4L2_CID_BASE+11) /* Deprecated */
  163 #define V4L2_CID_AUTO_WHITE_BALANCE     (V4L2_CID_BASE+12)
  164 #define V4L2_CID_DO_WHITE_BALANCE       (V4L2_CID_BASE+13)
  165 #define V4L2_CID_RED_BALANCE            (V4L2_CID_BASE+14)
  166 #define V4L2_CID_BLUE_BALANCE           (V4L2_CID_BASE+15)
  167 #define V4L2_CID_GAMMA                  (V4L2_CID_BASE+16)
  168 #define V4L2_CID_WHITENESS              (V4L2_CID_GAMMA) /* Deprecated */
  169 #define V4L2_CID_EXPOSURE               (V4L2_CID_BASE+17)
  170 #define V4L2_CID_AUTOGAIN               (V4L2_CID_BASE+18)
  171 #define V4L2_CID_GAIN                   (V4L2_CID_BASE+19)
  172 #define V4L2_CID_HFLIP                  (V4L2_CID_BASE+20)
  173 #define V4L2_CID_VFLIP                  (V4L2_CID_BASE+21)
  174 
  175 #define V4L2_CID_HCENTER_DEPRECATED     (V4L2_CID_BASE + 22)
  176 #define V4L2_CID_VCENTER_DEPRECATED     (V4L2_CID_BASE + 23)
  177 #define V4L2_CID_HCENTER        V4L2_CID_HCENTER_DEPRECATED
  178 #define V4L2_CID_VCENTER        V4L2_CID_VCENTER_DEPRECATED
  179 
  180 #define V4L2_CID_POWER_LINE_FREQUENCY   (V4L2_CID_BASE+24)
  181 enum v4l2_power_line_frequency {
  182         V4L2_CID_POWER_LINE_FREQUENCY_DISABLED  = 0,
  183         V4L2_CID_POWER_LINE_FREQUENCY_50HZ      = 1,
  184         V4L2_CID_POWER_LINE_FREQUENCY_60HZ      = 2,
  185         V4L2_CID_POWER_LINE_FREQUENCY_AUTO      = 3,
  186 };
  187 #define V4L2_CID_HUE_AUTO                       (V4L2_CID_BASE+25)
  188 #define V4L2_CID_WHITE_BALANCE_TEMPERATURE      (V4L2_CID_BASE+26)
  189 #define V4L2_CID_SHARPNESS                      (V4L2_CID_BASE+27)
  190 #define V4L2_CID_BACKLIGHT_COMPENSATION         (V4L2_CID_BASE+28)
  191 #define V4L2_CID_CHROMA_AGC                     (V4L2_CID_BASE+29)
  192 #define V4L2_CID_COLOR_KILLER                   (V4L2_CID_BASE+30)
  193 #define V4L2_CID_COLORFX                        (V4L2_CID_BASE+31)
  194 enum v4l2_colorfx {
  195         V4L2_COLORFX_NONE                       = 0,
  196         V4L2_COLORFX_BW                         = 1,
  197         V4L2_COLORFX_SEPIA                      = 2,
  198         V4L2_COLORFX_NEGATIVE                   = 3,
  199         V4L2_COLORFX_EMBOSS                     = 4,
  200         V4L2_COLORFX_SKETCH                     = 5,
  201         V4L2_COLORFX_SKY_BLUE                   = 6,
  202         V4L2_COLORFX_GRASS_GREEN                = 7,
  203         V4L2_COLORFX_SKIN_WHITEN                = 8,
  204         V4L2_COLORFX_VIVID                      = 9,
  205         V4L2_COLORFX_AQUA                       = 10,
  206         V4L2_COLORFX_ART_FREEZE                 = 11,
  207         V4L2_COLORFX_SILHOUETTE                 = 12,
  208         V4L2_COLORFX_SOLARIZATION               = 13,
  209         V4L2_COLORFX_ANTIQUE                    = 14,
  210         V4L2_COLORFX_SET_CBCR                   = 15,
  211 };
  212 #define V4L2_CID_AUTOBRIGHTNESS                 (V4L2_CID_BASE+32)
  213 #define V4L2_CID_BAND_STOP_FILTER               (V4L2_CID_BASE+33)
  214 
  215 #define V4L2_CID_ROTATE                         (V4L2_CID_BASE+34)
  216 #define V4L2_CID_BG_COLOR                       (V4L2_CID_BASE+35)
  217 
  218 #define V4L2_CID_CHROMA_GAIN                    (V4L2_CID_BASE+36)
  219 
  220 #define V4L2_CID_ILLUMINATORS_1                 (V4L2_CID_BASE+37)
  221 #define V4L2_CID_ILLUMINATORS_2                 (V4L2_CID_BASE+38)
  222 
  223 #define V4L2_CID_MIN_BUFFERS_FOR_CAPTURE        (V4L2_CID_BASE+39)
  224 #define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT         (V4L2_CID_BASE+40)
  225 
  226 #define V4L2_CID_ALPHA_COMPONENT                (V4L2_CID_BASE+41)
  227 #define V4L2_CID_COLORFX_CBCR                   (V4L2_CID_BASE+42)
  228 
  229 /* last CID + 1 */
  230 #define V4L2_CID_LASTP1                         (V4L2_CID_BASE+43)
  231 
  232 /* USER-class private control IDs */
  233 
  234 /* The base for the meye driver controls. See linux/meye.h for the list
  235  * of controls. We reserve 16 controls for this driver. */
  236 #define V4L2_CID_USER_MEYE_BASE                 (V4L2_CID_USER_BASE + 0x1000)
  237 
  238 /* The base for the bttv driver controls.
  239  * We reserve 32 controls for this driver. */
  240 #define V4L2_CID_USER_BTTV_BASE                 (V4L2_CID_USER_BASE + 0x1010)
  241 
  242 
  243 /* The base for the s2255 driver controls.
  244  * We reserve 16 controls for this driver. */
  245 #define V4L2_CID_USER_S2255_BASE                (V4L2_CID_USER_BASE + 0x1030)
  246 
  247 /*
  248  * The base for the si476x driver controls. See include/media/drv-intf/si476x.h
  249  * for the list of controls. Total of 16 controls is reserved for this driver
  250  */
  251 #define V4L2_CID_USER_SI476X_BASE               (V4L2_CID_USER_BASE + 0x1040)
  252 
  253 /* The base for the TI VPE driver controls. Total of 16 controls is reserved for
  254  * this driver */
  255 #define V4L2_CID_USER_TI_VPE_BASE               (V4L2_CID_USER_BASE + 0x1050)
  256 
  257 /* The base for the saa7134 driver controls.
  258  * We reserve 16 controls for this driver. */
  259 #define V4L2_CID_USER_SAA7134_BASE              (V4L2_CID_USER_BASE + 0x1060)
  260 
  261 /* The base for the adv7180 driver controls.
  262  * We reserve 16 controls for this driver. */
  263 #define V4L2_CID_USER_ADV7180_BASE              (V4L2_CID_USER_BASE + 0x1070)
  264 
  265 /* The base for the tc358743 driver controls.
  266  * We reserve 16 controls for this driver. */
  267 #define V4L2_CID_USER_TC358743_BASE             (V4L2_CID_USER_BASE + 0x1080)
  268 
  269 /* MPEG-class control IDs */
  270 /* The MPEG controls are applicable to all codec controls
  271  * and the 'MPEG' part of the define is historical */
  272 
  273 #define V4L2_CID_MPEG_BASE                      (V4L2_CTRL_CLASS_MPEG | 0x900)
  274 #define V4L2_CID_MPEG_CLASS                     (V4L2_CTRL_CLASS_MPEG | 1)
  275 
  276 /*  MPEG streams, specific to multiplexed streams */
  277 #define V4L2_CID_MPEG_STREAM_TYPE               (V4L2_CID_MPEG_BASE+0)
  278 enum v4l2_mpeg_stream_type {
  279         V4L2_MPEG_STREAM_TYPE_MPEG2_PS   = 0, /* MPEG-2 program stream */
  280         V4L2_MPEG_STREAM_TYPE_MPEG2_TS   = 1, /* MPEG-2 transport stream */
  281         V4L2_MPEG_STREAM_TYPE_MPEG1_SS   = 2, /* MPEG-1 system stream */
  282         V4L2_MPEG_STREAM_TYPE_MPEG2_DVD  = 3, /* MPEG-2 DVD-compatible stream */
  283         V4L2_MPEG_STREAM_TYPE_MPEG1_VCD  = 4, /* MPEG-1 VCD-compatible stream */
  284         V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */
  285 };
  286 #define V4L2_CID_MPEG_STREAM_PID_PMT            (V4L2_CID_MPEG_BASE+1)
  287 #define V4L2_CID_MPEG_STREAM_PID_AUDIO          (V4L2_CID_MPEG_BASE+2)
  288 #define V4L2_CID_MPEG_STREAM_PID_VIDEO          (V4L2_CID_MPEG_BASE+3)
  289 #define V4L2_CID_MPEG_STREAM_PID_PCR            (V4L2_CID_MPEG_BASE+4)
  290 #define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO       (V4L2_CID_MPEG_BASE+5)
  291 #define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO       (V4L2_CID_MPEG_BASE+6)
  292 #define V4L2_CID_MPEG_STREAM_VBI_FMT            (V4L2_CID_MPEG_BASE+7)
  293 enum v4l2_mpeg_stream_vbi_fmt {
  294         V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,  /* No VBI in the MPEG stream */
  295         V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,  /* VBI in private packets, IVTV format */
  296 };
  297 
  298 /*  MPEG audio controls specific to multiplexed streams  */
  299 #define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ       (V4L2_CID_MPEG_BASE+100)
  300 enum v4l2_mpeg_audio_sampling_freq {
  301         V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
  302         V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
  303         V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
  304 };
  305 #define V4L2_CID_MPEG_AUDIO_ENCODING            (V4L2_CID_MPEG_BASE+101)
  306 enum v4l2_mpeg_audio_encoding {
  307         V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
  308         V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
  309         V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
  310         V4L2_MPEG_AUDIO_ENCODING_AAC     = 3,
  311         V4L2_MPEG_AUDIO_ENCODING_AC3     = 4,
  312 };
  313 #define V4L2_CID_MPEG_AUDIO_L1_BITRATE          (V4L2_CID_MPEG_BASE+102)
  314 enum v4l2_mpeg_audio_l1_bitrate {
  315         V4L2_MPEG_AUDIO_L1_BITRATE_32K  = 0,
  316         V4L2_MPEG_AUDIO_L1_BITRATE_64K  = 1,
  317         V4L2_MPEG_AUDIO_L1_BITRATE_96K  = 2,
  318         V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
  319         V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
  320         V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
  321         V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
  322         V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
  323         V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
  324         V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
  325         V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
  326         V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
  327         V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
  328         V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
  329 };
  330 #define V4L2_CID_MPEG_AUDIO_L2_BITRATE          (V4L2_CID_MPEG_BASE+103)
  331 enum v4l2_mpeg_audio_l2_bitrate {
  332         V4L2_MPEG_AUDIO_L2_BITRATE_32K  = 0,
  333         V4L2_MPEG_AUDIO_L2_BITRATE_48K  = 1,
  334         V4L2_MPEG_AUDIO_L2_BITRATE_56K  = 2,
  335         V4L2_MPEG_AUDIO_L2_BITRATE_64K  = 3,
  336         V4L2_MPEG_AUDIO_L2_BITRATE_80K  = 4,
  337         V4L2_MPEG_AUDIO_L2_BITRATE_96K  = 5,
  338         V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
  339         V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
  340         V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
  341         V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
  342         V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
  343         V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
  344         V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
  345         V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
  346 };
  347 #define V4L2_CID_MPEG_AUDIO_L3_BITRATE          (V4L2_CID_MPEG_BASE+104)
  348 enum v4l2_mpeg_audio_l3_bitrate {
  349         V4L2_MPEG_AUDIO_L3_BITRATE_32K  = 0,
  350         V4L2_MPEG_AUDIO_L3_BITRATE_40K  = 1,
  351         V4L2_MPEG_AUDIO_L3_BITRATE_48K  = 2,
  352         V4L2_MPEG_AUDIO_L3_BITRATE_56K  = 3,
  353         V4L2_MPEG_AUDIO_L3_BITRATE_64K  = 4,
  354         V4L2_MPEG_AUDIO_L3_BITRATE_80K  = 5,
  355         V4L2_MPEG_AUDIO_L3_BITRATE_96K  = 6,
  356         V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
  357         V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
  358         V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
  359         V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
  360         V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
  361         V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
  362         V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
  363 };
  364 #define V4L2_CID_MPEG_AUDIO_MODE                (V4L2_CID_MPEG_BASE+105)
  365 enum v4l2_mpeg_audio_mode {
  366         V4L2_MPEG_AUDIO_MODE_STEREO       = 0,
  367         V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
  368         V4L2_MPEG_AUDIO_MODE_DUAL         = 2,
  369         V4L2_MPEG_AUDIO_MODE_MONO         = 3,
  370 };
  371 #define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION      (V4L2_CID_MPEG_BASE+106)
  372 enum v4l2_mpeg_audio_mode_extension {
  373         V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4  = 0,
  374         V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8  = 1,
  375         V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
  376         V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
  377 };
  378 #define V4L2_CID_MPEG_AUDIO_EMPHASIS            (V4L2_CID_MPEG_BASE+107)
  379 enum v4l2_mpeg_audio_emphasis {
  380         V4L2_MPEG_AUDIO_EMPHASIS_NONE         = 0,
  381         V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
  382         V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17    = 2,
  383 };
  384 #define V4L2_CID_MPEG_AUDIO_CRC                 (V4L2_CID_MPEG_BASE+108)
  385 enum v4l2_mpeg_audio_crc {
  386         V4L2_MPEG_AUDIO_CRC_NONE  = 0,
  387         V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
  388 };
  389 #define V4L2_CID_MPEG_AUDIO_MUTE                (V4L2_CID_MPEG_BASE+109)
  390 #define V4L2_CID_MPEG_AUDIO_AAC_BITRATE         (V4L2_CID_MPEG_BASE+110)
  391 #define V4L2_CID_MPEG_AUDIO_AC3_BITRATE         (V4L2_CID_MPEG_BASE+111)
  392 enum v4l2_mpeg_audio_ac3_bitrate {
  393         V4L2_MPEG_AUDIO_AC3_BITRATE_32K  = 0,
  394         V4L2_MPEG_AUDIO_AC3_BITRATE_40K  = 1,
  395         V4L2_MPEG_AUDIO_AC3_BITRATE_48K  = 2,
  396         V4L2_MPEG_AUDIO_AC3_BITRATE_56K  = 3,
  397         V4L2_MPEG_AUDIO_AC3_BITRATE_64K  = 4,
  398         V4L2_MPEG_AUDIO_AC3_BITRATE_80K  = 5,
  399         V4L2_MPEG_AUDIO_AC3_BITRATE_96K  = 6,
  400         V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
  401         V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
  402         V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
  403         V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
  404         V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
  405         V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
  406         V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
  407         V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
  408         V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
  409         V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
  410         V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
  411         V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
  412 };
  413 #define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK        (V4L2_CID_MPEG_BASE+112)
  414 enum v4l2_mpeg_audio_dec_playback {
  415         V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO           = 0,
  416         V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO         = 1,
  417         V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT           = 2,
  418         V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT          = 3,
  419         V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO           = 4,
  420         V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,
  421 };
  422 #define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_MPEG_BASE+113)
  423 
  424 /*  MPEG video controls specific to multiplexed streams */
  425 #define V4L2_CID_MPEG_VIDEO_ENCODING            (V4L2_CID_MPEG_BASE+200)
  426 enum v4l2_mpeg_video_encoding {
  427         V4L2_MPEG_VIDEO_ENCODING_MPEG_1     = 0,
  428         V4L2_MPEG_VIDEO_ENCODING_MPEG_2     = 1,
  429         V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
  430 };
  431 #define V4L2_CID_MPEG_VIDEO_ASPECT              (V4L2_CID_MPEG_BASE+201)
  432 enum v4l2_mpeg_video_aspect {
  433         V4L2_MPEG_VIDEO_ASPECT_1x1     = 0,
  434         V4L2_MPEG_VIDEO_ASPECT_4x3     = 1,
  435         V4L2_MPEG_VIDEO_ASPECT_16x9    = 2,
  436         V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
  437 };
  438 #define V4L2_CID_MPEG_VIDEO_B_FRAMES            (V4L2_CID_MPEG_BASE+202)
  439 #define V4L2_CID_MPEG_VIDEO_GOP_SIZE            (V4L2_CID_MPEG_BASE+203)
  440 #define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE         (V4L2_CID_MPEG_BASE+204)
  441 #define V4L2_CID_MPEG_VIDEO_PULLDOWN            (V4L2_CID_MPEG_BASE+205)
  442 #define V4L2_CID_MPEG_VIDEO_BITRATE_MODE        (V4L2_CID_MPEG_BASE+206)
  443 enum v4l2_mpeg_video_bitrate_mode {
  444         V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
  445         V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
  446 };
  447 #define V4L2_CID_MPEG_VIDEO_BITRATE             (V4L2_CID_MPEG_BASE+207)
  448 #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK        (V4L2_CID_MPEG_BASE+208)
  449 #define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
  450 #define V4L2_CID_MPEG_VIDEO_MUTE                (V4L2_CID_MPEG_BASE+210)
  451 #define V4L2_CID_MPEG_VIDEO_MUTE_YUV            (V4L2_CID_MPEG_BASE+211)
  452 #define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE             (V4L2_CID_MPEG_BASE+212)
  453 #define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER        (V4L2_CID_MPEG_BASE+213)
  454 #define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB             (V4L2_CID_MPEG_BASE+214)
  455 #define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE                     (V4L2_CID_MPEG_BASE+215)
  456 #define V4L2_CID_MPEG_VIDEO_HEADER_MODE                         (V4L2_CID_MPEG_BASE+216)
  457 enum v4l2_mpeg_video_header_mode {
  458         V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE                    = 0,
  459         V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME       = 1,
  460 
  461 };
  462 #define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC                 (V4L2_CID_MPEG_BASE+217)
  463 #define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE                (V4L2_CID_MPEG_BASE+218)
  464 #define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES       (V4L2_CID_MPEG_BASE+219)
  465 #define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB          (V4L2_CID_MPEG_BASE+220)
  466 #define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE            (V4L2_CID_MPEG_BASE+221)
  467 enum v4l2_mpeg_video_multi_slice_mode {
  468         V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE         = 0,
  469         V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB          = 1,
  470         V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES       = 2,
  471 };
  472 #define V4L2_CID_MPEG_VIDEO_VBV_SIZE                    (V4L2_CID_MPEG_BASE+222)
  473 #define V4L2_CID_MPEG_VIDEO_DEC_PTS                     (V4L2_CID_MPEG_BASE+223)
  474 #define V4L2_CID_MPEG_VIDEO_DEC_FRAME                   (V4L2_CID_MPEG_BASE+224)
  475 #define V4L2_CID_MPEG_VIDEO_VBV_DELAY                   (V4L2_CID_MPEG_BASE+225)
  476 #define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER           (V4L2_CID_MPEG_BASE+226)
  477 #define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE           (V4L2_CID_MPEG_BASE+227)
  478 #define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE           (V4L2_CID_MPEG_BASE+228)
  479 #define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME             (V4L2_CID_MPEG_BASE+229)
  480 
  481 #define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP             (V4L2_CID_MPEG_BASE+300)
  482 #define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP             (V4L2_CID_MPEG_BASE+301)
  483 #define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP             (V4L2_CID_MPEG_BASE+302)
  484 #define V4L2_CID_MPEG_VIDEO_H263_MIN_QP                 (V4L2_CID_MPEG_BASE+303)
  485 #define V4L2_CID_MPEG_VIDEO_H263_MAX_QP                 (V4L2_CID_MPEG_BASE+304)
  486 #define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP             (V4L2_CID_MPEG_BASE+350)
  487 #define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP             (V4L2_CID_MPEG_BASE+351)
  488 #define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP             (V4L2_CID_MPEG_BASE+352)
  489 #define V4L2_CID_MPEG_VIDEO_H264_MIN_QP                 (V4L2_CID_MPEG_BASE+353)
  490 #define V4L2_CID_MPEG_VIDEO_H264_MAX_QP                 (V4L2_CID_MPEG_BASE+354)
  491 #define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM          (V4L2_CID_MPEG_BASE+355)
  492 #define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE               (V4L2_CID_MPEG_BASE+356)
  493 #define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE           (V4L2_CID_MPEG_BASE+357)
  494 enum v4l2_mpeg_video_h264_entropy_mode {
  495         V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
  496         V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
  497 };
  498 #define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD               (V4L2_CID_MPEG_BASE+358)
  499 #define V4L2_CID_MPEG_VIDEO_H264_LEVEL                  (V4L2_CID_MPEG_BASE+359)
  500 enum v4l2_mpeg_video_h264_level {
  501         V4L2_MPEG_VIDEO_H264_LEVEL_1_0  = 0,
  502         V4L2_MPEG_VIDEO_H264_LEVEL_1B   = 1,
  503         V4L2_MPEG_VIDEO_H264_LEVEL_1_1  = 2,
  504         V4L2_MPEG_VIDEO_H264_LEVEL_1_2  = 3,
  505         V4L2_MPEG_VIDEO_H264_LEVEL_1_3  = 4,
  506         V4L2_MPEG_VIDEO_H264_LEVEL_2_0  = 5,
  507         V4L2_MPEG_VIDEO_H264_LEVEL_2_1  = 6,
  508         V4L2_MPEG_VIDEO_H264_LEVEL_2_2  = 7,
  509         V4L2_MPEG_VIDEO_H264_LEVEL_3_0  = 8,
  510         V4L2_MPEG_VIDEO_H264_LEVEL_3_1  = 9,
  511         V4L2_MPEG_VIDEO_H264_LEVEL_3_2  = 10,
  512         V4L2_MPEG_VIDEO_H264_LEVEL_4_0  = 11,
  513         V4L2_MPEG_VIDEO_H264_LEVEL_4_1  = 12,
  514         V4L2_MPEG_VIDEO_H264_LEVEL_4_2  = 13,
  515         V4L2_MPEG_VIDEO_H264_LEVEL_5_0  = 14,
  516         V4L2_MPEG_VIDEO_H264_LEVEL_5_1  = 15,
  517 };
  518 #define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA      (V4L2_CID_MPEG_BASE+360)
  519 #define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA       (V4L2_CID_MPEG_BASE+361)
  520 #define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE       (V4L2_CID_MPEG_BASE+362)
  521 enum v4l2_mpeg_video_h264_loop_filter_mode {
  522         V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED                           = 0,
  523         V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED                          = 1,
  524         V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY        = 2,
  525 };
  526 #define V4L2_CID_MPEG_VIDEO_H264_PROFILE                (V4L2_CID_MPEG_BASE+363)
  527 enum v4l2_mpeg_video_h264_profile {
  528         V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE                   = 0,
  529         V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE       = 1,
  530         V4L2_MPEG_VIDEO_H264_PROFILE_MAIN                       = 2,
  531         V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED                   = 3,
  532         V4L2_MPEG_VIDEO_H264_PROFILE_HIGH                       = 4,
  533         V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10                    = 5,
  534         V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422                   = 6,
  535         V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE        = 7,
  536         V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA              = 8,
  537         V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA             = 9,
  538         V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA             = 10,
  539         V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA            = 11,
  540         V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE          = 12,
  541         V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH              = 13,
  542         V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA        = 14,
  543         V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH                = 15,
  544         V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH             = 16,
  545 };
  546 #define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT     (V4L2_CID_MPEG_BASE+364)
  547 #define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH      (V4L2_CID_MPEG_BASE+365)
  548 #define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE         (V4L2_CID_MPEG_BASE+366)
  549 #define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC            (V4L2_CID_MPEG_BASE+367)
  550 enum v4l2_mpeg_video_h264_vui_sar_idc {
  551         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED    = 0,
  552         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1            = 1,
  553         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11          = 2,
  554         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11          = 3,
  555         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11          = 4,
  556         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33          = 5,
  557         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11          = 6,
  558         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11          = 7,
  559         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11          = 8,
  560         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33          = 9,
  561         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11          = 10,
  562         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11          = 11,
  563         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33          = 12,
  564         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99         = 13,
  565         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3            = 14,
  566         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2            = 15,
  567         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1            = 16,
  568         V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED       = 17,
  569 };
  570 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING              (V4L2_CID_MPEG_BASE+368)
  571 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0         (V4L2_CID_MPEG_BASE+369)
  572 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE        (V4L2_CID_MPEG_BASE+370)
  573 enum v4l2_mpeg_video_h264_sei_fp_arrangement_type {
  574         V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD       = 0,
  575         V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN             = 1,
  576         V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW                = 2,
  577         V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE       = 3,
  578         V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM         = 4,
  579         V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL           = 5,
  580 };
  581 #define V4L2_CID_MPEG_VIDEO_H264_FMO                    (V4L2_CID_MPEG_BASE+371)
  582 #define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE           (V4L2_CID_MPEG_BASE+372)
  583 enum v4l2_mpeg_video_h264_fmo_map_type {
  584         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES            = 0,
  585         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES              = 1,
  586         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER     = 2,
  587         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT                       = 3,
  588         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN                   = 4,
  589         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN                     = 5,
  590         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT                      = 6,
  591 };
  592 #define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP        (V4L2_CID_MPEG_BASE+373)
  593 #define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION   (V4L2_CID_MPEG_BASE+374)
  594 enum v4l2_mpeg_video_h264_fmo_change_dir {
  595         V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT       = 0,
  596         V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT        = 1,
  597 };
  598 #define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE        (V4L2_CID_MPEG_BASE+375)
  599 #define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH         (V4L2_CID_MPEG_BASE+376)
  600 #define V4L2_CID_MPEG_VIDEO_H264_ASO                    (V4L2_CID_MPEG_BASE+377)
  601 #define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER        (V4L2_CID_MPEG_BASE+378)
  602 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING            (V4L2_CID_MPEG_BASE+379)
  603 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE       (V4L2_CID_MPEG_BASE+380)
  604 enum v4l2_mpeg_video_h264_hierarchical_coding_type {
  605         V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B      = 0,
  606         V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P      = 1,
  607 };
  608 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER      (V4L2_CID_MPEG_BASE+381)
  609 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP   (V4L2_CID_MPEG_BASE+382)
  610 #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP    (V4L2_CID_MPEG_BASE+400)
  611 #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP    (V4L2_CID_MPEG_BASE+401)
  612 #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP    (V4L2_CID_MPEG_BASE+402)
  613 #define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP        (V4L2_CID_MPEG_BASE+403)
  614 #define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP        (V4L2_CID_MPEG_BASE+404)
  615 #define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL         (V4L2_CID_MPEG_BASE+405)
  616 enum v4l2_mpeg_video_mpeg4_level {
  617         V4L2_MPEG_VIDEO_MPEG4_LEVEL_0   = 0,
  618         V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B  = 1,
  619         V4L2_MPEG_VIDEO_MPEG4_LEVEL_1   = 2,
  620         V4L2_MPEG_VIDEO_MPEG4_LEVEL_2   = 3,
  621         V4L2_MPEG_VIDEO_MPEG4_LEVEL_3   = 4,
  622         V4L2_MPEG_VIDEO_MPEG4_LEVEL_3B  = 5,
  623         V4L2_MPEG_VIDEO_MPEG4_LEVEL_4   = 6,
  624         V4L2_MPEG_VIDEO_MPEG4_LEVEL_5   = 7,
  625 };
  626 #define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE       (V4L2_CID_MPEG_BASE+406)
  627 enum v4l2_mpeg_video_mpeg4_profile {
  628         V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE                            = 0,
  629         V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE                   = 1,
  630         V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE                              = 2,
  631         V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE                   = 3,
  632         V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY        = 4,
  633 };
  634 #define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL          (V4L2_CID_MPEG_BASE+407)
  635 
  636 /*  Control IDs for VP8 streams
  637  *  Although VP8 is not part of MPEG we add these controls to the MPEG class
  638  *  as that class is already handling other video compression standards
  639  */
  640 #define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS          (V4L2_CID_MPEG_BASE+500)
  641 enum v4l2_vp8_num_partitions {
  642         V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION     = 0,
  643         V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS    = 1,
  644         V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS    = 2,
  645         V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS    = 3,
  646 };
  647 #define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4         (V4L2_CID_MPEG_BASE+501)
  648 #define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES          (V4L2_CID_MPEG_BASE+502)
  649 enum v4l2_vp8_num_ref_frames {
  650         V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME     = 0,
  651         V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME     = 1,
  652         V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME     = 2,
  653 };
  654 #define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL            (V4L2_CID_MPEG_BASE+503)
  655 #define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS        (V4L2_CID_MPEG_BASE+504)
  656 #define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_MPEG_BASE+505)
  657 #define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL        (V4L2_CID_MPEG_BASE+506)
  658 enum v4l2_vp8_golden_frame_sel {
  659         V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV           = 0,
  660         V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD     = 1,
  661 };
  662 #define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP                  (V4L2_CID_MPEG_BASE+507)
  663 #define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP                  (V4L2_CID_MPEG_BASE+508)
  664 #define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP              (V4L2_CID_MPEG_BASE+509)
  665 #define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP              (V4L2_CID_MPEG_BASE+510)
  666 #define V4L2_CID_MPEG_VIDEO_VPX_PROFILE                 (V4L2_CID_MPEG_BASE+511)
  667 
  668 /*  MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
  669 #define V4L2_CID_MPEG_CX2341X_BASE                              (V4L2_CTRL_CLASS_MPEG | 0x1000)
  670 #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE         (V4L2_CID_MPEG_CX2341X_BASE+0)
  671 enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
  672         V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
  673         V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO   = 1,
  674 };
  675 #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER              (V4L2_CID_MPEG_CX2341X_BASE+1)
  676 #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE    (V4L2_CID_MPEG_CX2341X_BASE+2)
  677 enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
  678         V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF                  = 0,
  679         V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR               = 1,
  680         V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT              = 2,
  681         V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE      = 3,
  682         V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
  683 };
  684 #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE  (V4L2_CID_MPEG_CX2341X_BASE+3)
  685 enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
  686         V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF    = 0,
  687         V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
  688 };
  689 #define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE        (V4L2_CID_MPEG_CX2341X_BASE+4)
  690 enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
  691         V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
  692         V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO   = 1,
  693 };
  694 #define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER             (V4L2_CID_MPEG_CX2341X_BASE+5)
  695 #define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE          (V4L2_CID_MPEG_CX2341X_BASE+6)
  696 enum v4l2_mpeg_cx2341x_video_median_filter_type {
  697         V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF      = 0,
  698         V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR      = 1,
  699         V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT     = 2,
  700         V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
  701         V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG     = 4,
  702 };
  703 #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM   (V4L2_CID_MPEG_CX2341X_BASE+7)
  704 #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP      (V4L2_CID_MPEG_CX2341X_BASE+8)
  705 #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
  706 #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP    (V4L2_CID_MPEG_CX2341X_BASE+10)
  707 #define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS         (V4L2_CID_MPEG_CX2341X_BASE+11)
  708 
  709 /*  MPEG-class control IDs specific to the Samsung MFC 5.1 driver as defined by V4L2 */
  710 #define V4L2_CID_MPEG_MFC51_BASE                                (V4L2_CTRL_CLASS_MPEG | 0x1100)
  711 
  712 #define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY            (V4L2_CID_MPEG_MFC51_BASE+0)
  713 #define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE     (V4L2_CID_MPEG_MFC51_BASE+1)
  714 #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE                       (V4L2_CID_MPEG_MFC51_BASE+2)
  715 enum v4l2_mpeg_mfc51_video_frame_skip_mode {
  716         V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED          = 0,
  717         V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT       = 1,
  718         V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT         = 2,
  719 };
  720 #define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE                      (V4L2_CID_MPEG_MFC51_BASE+3)
  721 enum v4l2_mpeg_mfc51_video_force_frame_type {
  722         V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED         = 0,
  723         V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME          = 1,
  724         V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED        = 2,
  725 };
  726 #define V4L2_CID_MPEG_MFC51_VIDEO_PADDING                               (V4L2_CID_MPEG_MFC51_BASE+4)
  727 #define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV                           (V4L2_CID_MPEG_MFC51_BASE+5)
  728 #define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT                   (V4L2_CID_MPEG_MFC51_BASE+6)
  729 #define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF                     (V4L2_CID_MPEG_MFC51_BASE+7)
  730 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY             (V4L2_CID_MPEG_MFC51_BASE+50)
  731 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK                 (V4L2_CID_MPEG_MFC51_BASE+51)
  732 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH               (V4L2_CID_MPEG_MFC51_BASE+52)
  733 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC               (V4L2_CID_MPEG_MFC51_BASE+53)
  734 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P                (V4L2_CID_MPEG_MFC51_BASE+54)
  735 
  736 
  737 /*  Camera class control IDs */
  738 
  739 #define V4L2_CID_CAMERA_CLASS_BASE      (V4L2_CTRL_CLASS_CAMERA | 0x900)
  740 #define V4L2_CID_CAMERA_CLASS           (V4L2_CTRL_CLASS_CAMERA | 1)
  741 
  742 #define V4L2_CID_EXPOSURE_AUTO                  (V4L2_CID_CAMERA_CLASS_BASE+1)
  743 enum  v4l2_exposure_auto_type {
  744         V4L2_EXPOSURE_AUTO = 0,
  745         V4L2_EXPOSURE_MANUAL = 1,
  746         V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
  747         V4L2_EXPOSURE_APERTURE_PRIORITY = 3
  748 };
  749 #define V4L2_CID_EXPOSURE_ABSOLUTE              (V4L2_CID_CAMERA_CLASS_BASE+2)
  750 #define V4L2_CID_EXPOSURE_AUTO_PRIORITY         (V4L2_CID_CAMERA_CLASS_BASE+3)
  751 
  752 #define V4L2_CID_PAN_RELATIVE                   (V4L2_CID_CAMERA_CLASS_BASE+4)
  753 #define V4L2_CID_TILT_RELATIVE                  (V4L2_CID_CAMERA_CLASS_BASE+5)
  754 #define V4L2_CID_PAN_RESET                      (V4L2_CID_CAMERA_CLASS_BASE+6)
  755 #define V4L2_CID_TILT_RESET                     (V4L2_CID_CAMERA_CLASS_BASE+7)
  756 
  757 #define V4L2_CID_PAN_ABSOLUTE                   (V4L2_CID_CAMERA_CLASS_BASE+8)
  758 #define V4L2_CID_TILT_ABSOLUTE                  (V4L2_CID_CAMERA_CLASS_BASE+9)
  759 
  760 #define V4L2_CID_FOCUS_ABSOLUTE                 (V4L2_CID_CAMERA_CLASS_BASE+10)
  761 #define V4L2_CID_FOCUS_RELATIVE                 (V4L2_CID_CAMERA_CLASS_BASE+11)
  762 #define V4L2_CID_FOCUS_AUTO                     (V4L2_CID_CAMERA_CLASS_BASE+12)
  763 
  764 #define V4L2_CID_ZOOM_ABSOLUTE                  (V4L2_CID_CAMERA_CLASS_BASE+13)
  765 #define V4L2_CID_ZOOM_RELATIVE                  (V4L2_CID_CAMERA_CLASS_BASE+14)
  766 #define V4L2_CID_ZOOM_CONTINUOUS                (V4L2_CID_CAMERA_CLASS_BASE+15)
  767 
  768 #define V4L2_CID_PRIVACY                        (V4L2_CID_CAMERA_CLASS_BASE+16)
  769 
  770 #define V4L2_CID_IRIS_ABSOLUTE                  (V4L2_CID_CAMERA_CLASS_BASE+17)
  771 #define V4L2_CID_IRIS_RELATIVE                  (V4L2_CID_CAMERA_CLASS_BASE+18)
  772 
  773 #define V4L2_CID_AUTO_EXPOSURE_BIAS             (V4L2_CID_CAMERA_CLASS_BASE+19)
  774 
  775 #define V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE    (V4L2_CID_CAMERA_CLASS_BASE+20)
  776 enum v4l2_auto_n_preset_white_balance {
  777         V4L2_WHITE_BALANCE_MANUAL               = 0,
  778         V4L2_WHITE_BALANCE_AUTO                 = 1,
  779         V4L2_WHITE_BALANCE_INCANDESCENT         = 2,
  780         V4L2_WHITE_BALANCE_FLUORESCENT          = 3,
  781         V4L2_WHITE_BALANCE_FLUORESCENT_H        = 4,
  782         V4L2_WHITE_BALANCE_HORIZON              = 5,
  783         V4L2_WHITE_BALANCE_DAYLIGHT             = 6,
  784         V4L2_WHITE_BALANCE_FLASH                = 7,
  785         V4L2_WHITE_BALANCE_CLOUDY               = 8,
  786         V4L2_WHITE_BALANCE_SHADE                = 9,
  787 };
  788 
  789 #define V4L2_CID_WIDE_DYNAMIC_RANGE             (V4L2_CID_CAMERA_CLASS_BASE+21)
  790 #define V4L2_CID_IMAGE_STABILIZATION            (V4L2_CID_CAMERA_CLASS_BASE+22)
  791 
  792 #define V4L2_CID_ISO_SENSITIVITY                (V4L2_CID_CAMERA_CLASS_BASE+23)
  793 #define V4L2_CID_ISO_SENSITIVITY_AUTO           (V4L2_CID_CAMERA_CLASS_BASE+24)
  794 enum v4l2_iso_sensitivity_auto_type {
  795         V4L2_ISO_SENSITIVITY_MANUAL             = 0,
  796         V4L2_ISO_SENSITIVITY_AUTO               = 1,
  797 };
  798 
  799 #define V4L2_CID_EXPOSURE_METERING              (V4L2_CID_CAMERA_CLASS_BASE+25)
  800 enum v4l2_exposure_metering {
  801         V4L2_EXPOSURE_METERING_AVERAGE          = 0,
  802         V4L2_EXPOSURE_METERING_CENTER_WEIGHTED  = 1,
  803         V4L2_EXPOSURE_METERING_SPOT             = 2,
  804         V4L2_EXPOSURE_METERING_MATRIX           = 3,
  805 };
  806 
  807 #define V4L2_CID_SCENE_MODE                     (V4L2_CID_CAMERA_CLASS_BASE+26)
  808 enum v4l2_scene_mode {
  809         V4L2_SCENE_MODE_NONE                    = 0,
  810         V4L2_SCENE_MODE_BACKLIGHT               = 1,
  811         V4L2_SCENE_MODE_BEACH_SNOW              = 2,
  812         V4L2_SCENE_MODE_CANDLE_LIGHT            = 3,
  813         V4L2_SCENE_MODE_DAWN_DUSK               = 4,
  814         V4L2_SCENE_MODE_FALL_COLORS             = 5,
  815         V4L2_SCENE_MODE_FIREWORKS               = 6,
  816         V4L2_SCENE_MODE_LANDSCAPE               = 7,
  817         V4L2_SCENE_MODE_NIGHT                   = 8,
  818         V4L2_SCENE_MODE_PARTY_INDOOR            = 9,
  819         V4L2_SCENE_MODE_PORTRAIT                = 10,
  820         V4L2_SCENE_MODE_SPORTS                  = 11,
  821         V4L2_SCENE_MODE_SUNSET                  = 12,
  822         V4L2_SCENE_MODE_TEXT                    = 13,
  823 };
  824 
  825 #define V4L2_CID_3A_LOCK                        (V4L2_CID_CAMERA_CLASS_BASE+27)
  826 #define V4L2_LOCK_EXPOSURE                      (1 << 0)
  827 #define V4L2_LOCK_WHITE_BALANCE                 (1 << 1)
  828 #define V4L2_LOCK_FOCUS                         (1 << 2)
  829 
  830 #define V4L2_CID_AUTO_FOCUS_START               (V4L2_CID_CAMERA_CLASS_BASE+28)
  831 #define V4L2_CID_AUTO_FOCUS_STOP                (V4L2_CID_CAMERA_CLASS_BASE+29)
  832 #define V4L2_CID_AUTO_FOCUS_STATUS              (V4L2_CID_CAMERA_CLASS_BASE+30)
  833 #define V4L2_AUTO_FOCUS_STATUS_IDLE             (0 << 0)
  834 #define V4L2_AUTO_FOCUS_STATUS_BUSY             (1 << 0)
  835 #define V4L2_AUTO_FOCUS_STATUS_REACHED          (1 << 1)
  836 #define V4L2_AUTO_FOCUS_STATUS_FAILED           (1 << 2)
  837 
  838 #define V4L2_CID_AUTO_FOCUS_RANGE               (V4L2_CID_CAMERA_CLASS_BASE+31)
  839 enum v4l2_auto_focus_range {
  840         V4L2_AUTO_FOCUS_RANGE_AUTO              = 0,
  841         V4L2_AUTO_FOCUS_RANGE_NORMAL            = 1,
  842         V4L2_AUTO_FOCUS_RANGE_MACRO             = 2,
  843         V4L2_AUTO_FOCUS_RANGE_INFINITY          = 3,
  844 };
  845 
  846 #define V4L2_CID_PAN_SPEED                      (V4L2_CID_CAMERA_CLASS_BASE+32)
  847 #define V4L2_CID_TILT_SPEED                     (V4L2_CID_CAMERA_CLASS_BASE+33)
  848 
  849 /* FM Modulator class control IDs */
  850 
  851 #define V4L2_CID_FM_TX_CLASS_BASE               (V4L2_CTRL_CLASS_FM_TX | 0x900)
  852 #define V4L2_CID_FM_TX_CLASS                    (V4L2_CTRL_CLASS_FM_TX | 1)
  853 
  854 #define V4L2_CID_RDS_TX_DEVIATION               (V4L2_CID_FM_TX_CLASS_BASE + 1)
  855 #define V4L2_CID_RDS_TX_PI                      (V4L2_CID_FM_TX_CLASS_BASE + 2)
  856 #define V4L2_CID_RDS_TX_PTY                     (V4L2_CID_FM_TX_CLASS_BASE + 3)
  857 #define V4L2_CID_RDS_TX_PS_NAME                 (V4L2_CID_FM_TX_CLASS_BASE + 5)
  858 #define V4L2_CID_RDS_TX_RADIO_TEXT              (V4L2_CID_FM_TX_CLASS_BASE + 6)
  859 #define V4L2_CID_RDS_TX_MONO_STEREO             (V4L2_CID_FM_TX_CLASS_BASE + 7)
  860 #define V4L2_CID_RDS_TX_ARTIFICIAL_HEAD         (V4L2_CID_FM_TX_CLASS_BASE + 8)
  861 #define V4L2_CID_RDS_TX_COMPRESSED              (V4L2_CID_FM_TX_CLASS_BASE + 9)
  862 #define V4L2_CID_RDS_TX_DYNAMIC_PTY             (V4L2_CID_FM_TX_CLASS_BASE + 10)
  863 #define V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT    (V4L2_CID_FM_TX_CLASS_BASE + 11)
  864 #define V4L2_CID_RDS_TX_TRAFFIC_PROGRAM         (V4L2_CID_FM_TX_CLASS_BASE + 12)
  865 #define V4L2_CID_RDS_TX_MUSIC_SPEECH            (V4L2_CID_FM_TX_CLASS_BASE + 13)
  866 #define V4L2_CID_RDS_TX_ALT_FREQS_ENABLE        (V4L2_CID_FM_TX_CLASS_BASE + 14)
  867 #define V4L2_CID_RDS_TX_ALT_FREQS               (V4L2_CID_FM_TX_CLASS_BASE + 15)
  868 
  869 #define V4L2_CID_AUDIO_LIMITER_ENABLED          (V4L2_CID_FM_TX_CLASS_BASE + 64)
  870 #define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME     (V4L2_CID_FM_TX_CLASS_BASE + 65)
  871 #define V4L2_CID_AUDIO_LIMITER_DEVIATION        (V4L2_CID_FM_TX_CLASS_BASE + 66)
  872 
  873 #define V4L2_CID_AUDIO_COMPRESSION_ENABLED      (V4L2_CID_FM_TX_CLASS_BASE + 80)
  874 #define V4L2_CID_AUDIO_COMPRESSION_GAIN         (V4L2_CID_FM_TX_CLASS_BASE + 81)
  875 #define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD    (V4L2_CID_FM_TX_CLASS_BASE + 82)
  876 #define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME  (V4L2_CID_FM_TX_CLASS_BASE + 83)
  877 #define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84)
  878 
  879 #define V4L2_CID_PILOT_TONE_ENABLED             (V4L2_CID_FM_TX_CLASS_BASE + 96)
  880 #define V4L2_CID_PILOT_TONE_DEVIATION           (V4L2_CID_FM_TX_CLASS_BASE + 97)
  881 #define V4L2_CID_PILOT_TONE_FREQUENCY           (V4L2_CID_FM_TX_CLASS_BASE + 98)
  882 
  883 #define V4L2_CID_TUNE_PREEMPHASIS               (V4L2_CID_FM_TX_CLASS_BASE + 112)
  884 enum v4l2_preemphasis {
  885         V4L2_PREEMPHASIS_DISABLED       = 0,
  886         V4L2_PREEMPHASIS_50_uS          = 1,
  887         V4L2_PREEMPHASIS_75_uS          = 2,
  888 };
  889 #define V4L2_CID_TUNE_POWER_LEVEL               (V4L2_CID_FM_TX_CLASS_BASE + 113)
  890 #define V4L2_CID_TUNE_ANTENNA_CAPACITOR         (V4L2_CID_FM_TX_CLASS_BASE + 114)
  891 
  892 
  893 /* Flash and privacy (indicator) light controls */
  894 
  895 #define V4L2_CID_FLASH_CLASS_BASE               (V4L2_CTRL_CLASS_FLASH | 0x900)
  896 #define V4L2_CID_FLASH_CLASS                    (V4L2_CTRL_CLASS_FLASH | 1)
  897 
  898 #define V4L2_CID_FLASH_LED_MODE                 (V4L2_CID_FLASH_CLASS_BASE + 1)
  899 enum v4l2_flash_led_mode {
  900         V4L2_FLASH_LED_MODE_NONE,
  901         V4L2_FLASH_LED_MODE_FLASH,
  902         V4L2_FLASH_LED_MODE_TORCH,
  903 };
  904 
  905 #define V4L2_CID_FLASH_STROBE_SOURCE            (V4L2_CID_FLASH_CLASS_BASE + 2)
  906 enum v4l2_flash_strobe_source {
  907         V4L2_FLASH_STROBE_SOURCE_SOFTWARE,
  908         V4L2_FLASH_STROBE_SOURCE_EXTERNAL,
  909 };
  910 
  911 #define V4L2_CID_FLASH_STROBE                   (V4L2_CID_FLASH_CLASS_BASE + 3)
  912 #define V4L2_CID_FLASH_STROBE_STOP              (V4L2_CID_FLASH_CLASS_BASE + 4)
  913 #define V4L2_CID_FLASH_STROBE_STATUS            (V4L2_CID_FLASH_CLASS_BASE + 5)
  914 
  915 #define V4L2_CID_FLASH_TIMEOUT                  (V4L2_CID_FLASH_CLASS_BASE + 6)
  916 #define V4L2_CID_FLASH_INTENSITY                (V4L2_CID_FLASH_CLASS_BASE + 7)
  917 #define V4L2_CID_FLASH_TORCH_INTENSITY          (V4L2_CID_FLASH_CLASS_BASE + 8)
  918 #define V4L2_CID_FLASH_INDICATOR_INTENSITY      (V4L2_CID_FLASH_CLASS_BASE + 9)
  919 
  920 #define V4L2_CID_FLASH_FAULT                    (V4L2_CID_FLASH_CLASS_BASE + 10)
  921 #define V4L2_FLASH_FAULT_OVER_VOLTAGE           (1 << 0)
  922 #define V4L2_FLASH_FAULT_TIMEOUT                (1 << 1)
  923 #define V4L2_FLASH_FAULT_OVER_TEMPERATURE       (1 << 2)
  924 #define V4L2_FLASH_FAULT_SHORT_CIRCUIT          (1 << 3)
  925 #define V4L2_FLASH_FAULT_OVER_CURRENT           (1 << 4)
  926 #define V4L2_FLASH_FAULT_INDICATOR              (1 << 5)
  927 #define V4L2_FLASH_FAULT_UNDER_VOLTAGE          (1 << 6)
  928 #define V4L2_FLASH_FAULT_INPUT_VOLTAGE          (1 << 7)
  929 #define V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE   (1 << 8)
  930 
  931 #define V4L2_CID_FLASH_CHARGE                   (V4L2_CID_FLASH_CLASS_BASE + 11)
  932 #define V4L2_CID_FLASH_READY                    (V4L2_CID_FLASH_CLASS_BASE + 12)
  933 
  934 
  935 /* JPEG-class control IDs */
  936 
  937 #define V4L2_CID_JPEG_CLASS_BASE                (V4L2_CTRL_CLASS_JPEG | 0x900)
  938 #define V4L2_CID_JPEG_CLASS                     (V4L2_CTRL_CLASS_JPEG | 1)
  939 
  940 #define V4L2_CID_JPEG_CHROMA_SUBSAMPLING        (V4L2_CID_JPEG_CLASS_BASE + 1)
  941 enum v4l2_jpeg_chroma_subsampling {
  942         V4L2_JPEG_CHROMA_SUBSAMPLING_444        = 0,
  943         V4L2_JPEG_CHROMA_SUBSAMPLING_422        = 1,
  944         V4L2_JPEG_CHROMA_SUBSAMPLING_420        = 2,
  945         V4L2_JPEG_CHROMA_SUBSAMPLING_411        = 3,
  946         V4L2_JPEG_CHROMA_SUBSAMPLING_410        = 4,
  947         V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY       = 5,
  948 };
  949 #define V4L2_CID_JPEG_RESTART_INTERVAL          (V4L2_CID_JPEG_CLASS_BASE + 2)
  950 #define V4L2_CID_JPEG_COMPRESSION_QUALITY       (V4L2_CID_JPEG_CLASS_BASE + 3)
  951 
  952 #define V4L2_CID_JPEG_ACTIVE_MARKER             (V4L2_CID_JPEG_CLASS_BASE + 4)
  953 #define V4L2_JPEG_ACTIVE_MARKER_APP0            (1 << 0)
  954 #define V4L2_JPEG_ACTIVE_MARKER_APP1            (1 << 1)
  955 #define V4L2_JPEG_ACTIVE_MARKER_COM             (1 << 16)
  956 #define V4L2_JPEG_ACTIVE_MARKER_DQT             (1 << 17)
  957 #define V4L2_JPEG_ACTIVE_MARKER_DHT             (1 << 18)
  958 
  959 
  960 /* Image source controls */
  961 #define V4L2_CID_IMAGE_SOURCE_CLASS_BASE        (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)
  962 #define V4L2_CID_IMAGE_SOURCE_CLASS             (V4L2_CTRL_CLASS_IMAGE_SOURCE | 1)
  963 
  964 #define V4L2_CID_VBLANK                         (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 1)
  965 #define V4L2_CID_HBLANK                         (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 2)
  966 #define V4L2_CID_ANALOGUE_GAIN                  (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 3)
  967 #define V4L2_CID_TEST_PATTERN_RED               (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 4)
  968 #define V4L2_CID_TEST_PATTERN_GREENR            (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5)
  969 #define V4L2_CID_TEST_PATTERN_BLUE              (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
  970 #define V4L2_CID_TEST_PATTERN_GREENB            (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
  971 
  972 
  973 /* Image processing controls */
  974 
  975 #define V4L2_CID_IMAGE_PROC_CLASS_BASE          (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)
  976 #define V4L2_CID_IMAGE_PROC_CLASS               (V4L2_CTRL_CLASS_IMAGE_PROC | 1)
  977 
  978 #define V4L2_CID_LINK_FREQ                      (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)
  979 #define V4L2_CID_PIXEL_RATE                     (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2)
  980 #define V4L2_CID_TEST_PATTERN                   (V4L2_CID_IMAGE_PROC_CLASS_BASE + 3)
  981 #define V4L2_CID_DEINTERLACING_MODE             (V4L2_CID_IMAGE_PROC_CLASS_BASE + 4)
  982 
  983 
  984 /*  DV-class control IDs defined by V4L2 */
  985 #define V4L2_CID_DV_CLASS_BASE                  (V4L2_CTRL_CLASS_DV | 0x900)
  986 #define V4L2_CID_DV_CLASS                       (V4L2_CTRL_CLASS_DV | 1)
  987 
  988 #define V4L2_CID_DV_TX_HOTPLUG                  (V4L2_CID_DV_CLASS_BASE + 1)
  989 #define V4L2_CID_DV_TX_RXSENSE                  (V4L2_CID_DV_CLASS_BASE + 2)
  990 #define V4L2_CID_DV_TX_EDID_PRESENT             (V4L2_CID_DV_CLASS_BASE + 3)
  991 #define V4L2_CID_DV_TX_MODE                     (V4L2_CID_DV_CLASS_BASE + 4)
  992 enum v4l2_dv_tx_mode {
  993         V4L2_DV_TX_MODE_DVI_D   = 0,
  994         V4L2_DV_TX_MODE_HDMI    = 1,
  995 };
  996 #define V4L2_CID_DV_TX_RGB_RANGE                (V4L2_CID_DV_CLASS_BASE + 5)
  997 enum v4l2_dv_rgb_range {
  998         V4L2_DV_RGB_RANGE_AUTO    = 0,
  999         V4L2_DV_RGB_RANGE_LIMITED = 1,
 1000         V4L2_DV_RGB_RANGE_FULL    = 2,
 1001 };
 1002 
 1003 #define V4L2_CID_DV_TX_IT_CONTENT_TYPE          (V4L2_CID_DV_CLASS_BASE + 6)
 1004 enum v4l2_dv_it_content_type {
 1005         V4L2_DV_IT_CONTENT_TYPE_GRAPHICS  = 0,
 1006         V4L2_DV_IT_CONTENT_TYPE_PHOTO     = 1,
 1007         V4L2_DV_IT_CONTENT_TYPE_CINEMA    = 2,
 1008         V4L2_DV_IT_CONTENT_TYPE_GAME      = 3,
 1009         V4L2_DV_IT_CONTENT_TYPE_NO_ITC    = 4,
 1010 };
 1011 
 1012 #define V4L2_CID_DV_RX_POWER_PRESENT            (V4L2_CID_DV_CLASS_BASE + 100)
 1013 #define V4L2_CID_DV_RX_RGB_RANGE                (V4L2_CID_DV_CLASS_BASE + 101)
 1014 #define V4L2_CID_DV_RX_IT_CONTENT_TYPE          (V4L2_CID_DV_CLASS_BASE + 102)
 1015 
 1016 #define V4L2_CID_FM_RX_CLASS_BASE               (V4L2_CTRL_CLASS_FM_RX | 0x900)
 1017 #define V4L2_CID_FM_RX_CLASS                    (V4L2_CTRL_CLASS_FM_RX | 1)
 1018 
 1019 #define V4L2_CID_TUNE_DEEMPHASIS                (V4L2_CID_FM_RX_CLASS_BASE + 1)
 1020 enum v4l2_deemphasis {
 1021         V4L2_DEEMPHASIS_DISABLED        = V4L2_PREEMPHASIS_DISABLED,
 1022         V4L2_DEEMPHASIS_50_uS           = V4L2_PREEMPHASIS_50_uS,
 1023         V4L2_DEEMPHASIS_75_uS           = V4L2_PREEMPHASIS_75_uS,
 1024 };
 1025 
 1026 #define V4L2_CID_RDS_RECEPTION                  (V4L2_CID_FM_RX_CLASS_BASE + 2)
 1027 #define V4L2_CID_RDS_RX_PTY                     (V4L2_CID_FM_RX_CLASS_BASE + 3)
 1028 #define V4L2_CID_RDS_RX_PS_NAME                 (V4L2_CID_FM_RX_CLASS_BASE + 4)
 1029 #define V4L2_CID_RDS_RX_RADIO_TEXT              (V4L2_CID_FM_RX_CLASS_BASE + 5)
 1030 #define V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT    (V4L2_CID_FM_RX_CLASS_BASE + 6)
 1031 #define V4L2_CID_RDS_RX_TRAFFIC_PROGRAM         (V4L2_CID_FM_RX_CLASS_BASE + 7)
 1032 #define V4L2_CID_RDS_RX_MUSIC_SPEECH            (V4L2_CID_FM_RX_CLASS_BASE + 8)
 1033 
 1034 #define V4L2_CID_RF_TUNER_CLASS_BASE            (V4L2_CTRL_CLASS_RF_TUNER | 0x900)
 1035 #define V4L2_CID_RF_TUNER_CLASS                 (V4L2_CTRL_CLASS_RF_TUNER | 1)
 1036 
 1037 #define V4L2_CID_RF_TUNER_BANDWIDTH_AUTO        (V4L2_CID_RF_TUNER_CLASS_BASE + 11)
 1038 #define V4L2_CID_RF_TUNER_BANDWIDTH             (V4L2_CID_RF_TUNER_CLASS_BASE + 12)
 1039 #define V4L2_CID_RF_TUNER_RF_GAIN               (V4L2_CID_RF_TUNER_CLASS_BASE + 32)
 1040 #define V4L2_CID_RF_TUNER_LNA_GAIN_AUTO         (V4L2_CID_RF_TUNER_CLASS_BASE + 41)
 1041 #define V4L2_CID_RF_TUNER_LNA_GAIN              (V4L2_CID_RF_TUNER_CLASS_BASE + 42)
 1042 #define V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO       (V4L2_CID_RF_TUNER_CLASS_BASE + 51)
 1043 #define V4L2_CID_RF_TUNER_MIXER_GAIN            (V4L2_CID_RF_TUNER_CLASS_BASE + 52)
 1044 #define V4L2_CID_RF_TUNER_IF_GAIN_AUTO          (V4L2_CID_RF_TUNER_CLASS_BASE + 61)
 1045 #define V4L2_CID_RF_TUNER_IF_GAIN               (V4L2_CID_RF_TUNER_CLASS_BASE + 62)
 1046 #define V4L2_CID_RF_TUNER_PLL_LOCK                      (V4L2_CID_RF_TUNER_CLASS_BASE + 91)
 1047 
 1048 
 1049 /*  Detection-class control IDs defined by V4L2 */
 1050 #define V4L2_CID_DETECT_CLASS_BASE              (V4L2_CTRL_CLASS_DETECT | 0x900)
 1051 #define V4L2_CID_DETECT_CLASS                   (V4L2_CTRL_CLASS_DETECT | 1)
 1052 
 1053 #define V4L2_CID_DETECT_MD_MODE                 (V4L2_CID_DETECT_CLASS_BASE + 1)
 1054 enum v4l2_detect_md_mode {
 1055         V4L2_DETECT_MD_MODE_DISABLED            = 0,
 1056         V4L2_DETECT_MD_MODE_GLOBAL              = 1,
 1057         V4L2_DETECT_MD_MODE_THRESHOLD_GRID      = 2,
 1058         V4L2_DETECT_MD_MODE_REGION_GRID         = 3,
 1059 };
 1060 #define V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD     (V4L2_CID_DETECT_CLASS_BASE + 2)
 1061 #define V4L2_CID_DETECT_MD_THRESHOLD_GRID       (V4L2_CID_DETECT_CLASS_BASE + 3)
 1062 #define V4L2_CID_DETECT_MD_REGION_GRID          (V4L2_CID_DETECT_CLASS_BASE + 4)
 1063 /*
 1064  * End of v4l2-controls.h
 1065  */
 1066 
 1067 #ifndef __user
 1068 #define __user
 1069 #endif
 1070 
 1071 /*
 1072  * Common stuff for both V4L1 and V4L2
 1073  * Moved from videodev.h
 1074  */
 1075 #define VIDEO_MAX_FRAME               32
 1076 #define VIDEO_MAX_PLANES               8
 1077 
 1078 /*
 1079  *      M I S C E L L A N E O U S
 1080  */
 1081 
 1082 /*  Four-character-code (FOURCC) */
 1083 #define v4l2_fourcc(a, b, c, d)\
 1084         ((u_int32_t)(a) | ((u_int32_t)(b) << 8) | ((u_int32_t)(c) << 16) | ((u_int32_t)(d) << 24))
 1085 #define v4l2_fourcc_be(a, b, c, d)      (v4l2_fourcc(a, b, c, d) | (1 << 31))
 1086 
 1087 /*
 1088  *      E N U M S
 1089  */
 1090 enum v4l2_field {
 1091         V4L2_FIELD_ANY           = 0, /* driver can choose from none,
 1092                                          top, bottom, interlaced
 1093                                          depending on whatever it thinks
 1094                                          is approximate ... */
 1095         V4L2_FIELD_NONE          = 1, /* this device has no fields ... */
 1096         V4L2_FIELD_TOP           = 2, /* top field only */
 1097         V4L2_FIELD_BOTTOM        = 3, /* bottom field only */
 1098         V4L2_FIELD_INTERLACED    = 4, /* both fields interlaced */
 1099         V4L2_FIELD_SEQ_TB        = 5, /* both fields sequential into one
 1100                                          buffer, top-bottom order */
 1101         V4L2_FIELD_SEQ_BT        = 6, /* same as above + bottom-top order */
 1102         V4L2_FIELD_ALTERNATE     = 7, /* both fields alternating into
 1103                                          separate buffers */
 1104         V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field
 1105                                          first and the top field is
 1106                                          transmitted first */
 1107         V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field
 1108                                          first and the bottom field is
 1109                                          transmitted first */
 1110 };
 1111 #define V4L2_FIELD_HAS_TOP(field)       \
 1112         ((field) == V4L2_FIELD_TOP      ||\
 1113          (field) == V4L2_FIELD_INTERLACED ||\
 1114          (field) == V4L2_FIELD_INTERLACED_TB ||\
 1115          (field) == V4L2_FIELD_INTERLACED_BT ||\
 1116          (field) == V4L2_FIELD_SEQ_TB   ||\
 1117          (field) == V4L2_FIELD_SEQ_BT)
 1118 #define V4L2_FIELD_HAS_BOTTOM(field)    \
 1119         ((field) == V4L2_FIELD_BOTTOM   ||\
 1120          (field) == V4L2_FIELD_INTERLACED ||\
 1121          (field) == V4L2_FIELD_INTERLACED_TB ||\
 1122          (field) == V4L2_FIELD_INTERLACED_BT ||\
 1123          (field) == V4L2_FIELD_SEQ_TB   ||\
 1124          (field) == V4L2_FIELD_SEQ_BT)
 1125 #define V4L2_FIELD_HAS_BOTH(field)      \
 1126         ((field) == V4L2_FIELD_INTERLACED ||\
 1127          (field) == V4L2_FIELD_INTERLACED_TB ||\
 1128          (field) == V4L2_FIELD_INTERLACED_BT ||\
 1129          (field) == V4L2_FIELD_SEQ_TB ||\
 1130          (field) == V4L2_FIELD_SEQ_BT)
 1131 #define V4L2_FIELD_HAS_T_OR_B(field)    \
 1132         ((field) == V4L2_FIELD_BOTTOM ||\
 1133          (field) == V4L2_FIELD_TOP ||\
 1134          (field) == V4L2_FIELD_ALTERNATE)
 1135 
 1136 enum v4l2_buf_type {
 1137         V4L2_BUF_TYPE_VIDEO_CAPTURE        = 1,
 1138         V4L2_BUF_TYPE_VIDEO_OUTPUT         = 2,
 1139         V4L2_BUF_TYPE_VIDEO_OVERLAY        = 3,
 1140         V4L2_BUF_TYPE_VBI_CAPTURE          = 4,
 1141         V4L2_BUF_TYPE_VBI_OUTPUT           = 5,
 1142         V4L2_BUF_TYPE_SLICED_VBI_CAPTURE   = 6,
 1143         V4L2_BUF_TYPE_SLICED_VBI_OUTPUT    = 7,
 1144         V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
 1145         V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
 1146         V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE  = 10,
 1147         V4L2_BUF_TYPE_SDR_CAPTURE          = 11,
 1148         V4L2_BUF_TYPE_SDR_OUTPUT           = 12,
 1149         /* Deprecated, do not use */
 1150         V4L2_BUF_TYPE_PRIVATE              = 0x80,
 1151 };
 1152 
 1153 #define V4L2_TYPE_IS_MULTIPLANAR(type)                  \
 1154         ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE   \
 1155          || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
 1156 
 1157 #define V4L2_TYPE_IS_OUTPUT(type)                               \
 1158         ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT                   \
 1159          || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE         \
 1160          || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY               \
 1161          || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY        \
 1162          || (type) == V4L2_BUF_TYPE_VBI_OUTPUT                  \
 1163          || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT           \
 1164          || (type) == V4L2_BUF_TYPE_SDR_OUTPUT)
 1165 
 1166 enum v4l2_tuner_type {
 1167         V4L2_TUNER_RADIO             = 1,
 1168         V4L2_TUNER_ANALOG_TV         = 2,
 1169         V4L2_TUNER_DIGITAL_TV        = 3,
 1170         V4L2_TUNER_SDR               = 4,
 1171         V4L2_TUNER_RF                = 5,
 1172 };
 1173 
 1174 /* Deprecated, do not use */
 1175 #define V4L2_TUNER_ADC  V4L2_TUNER_SDR
 1176 
 1177 enum v4l2_memory {
 1178         V4L2_MEMORY_MMAP             = 1,
 1179         V4L2_MEMORY_USERPTR          = 2,
 1180         V4L2_MEMORY_OVERLAY          = 3,
 1181         V4L2_MEMORY_DMABUF           = 4,
 1182 };
 1183 
 1184 /* see also http://vektor.theorem.ca/graphics/ycbcr/ */
 1185 enum v4l2_colorspace {
 1186         /*
 1187          * Default colorspace, i.e. let the driver figure it out.
 1188          * Can only be used with video capture.
 1189          */
 1190         V4L2_COLORSPACE_DEFAULT       = 0,
 1191 
 1192         /* SMPTE 170M: used for broadcast NTSC/PAL SDTV */
 1193         V4L2_COLORSPACE_SMPTE170M     = 1,
 1194 
 1195         /* Obsolete pre-1998 SMPTE 240M HDTV standard, superseded by Rec 709 */
 1196         V4L2_COLORSPACE_SMPTE240M     = 2,
 1197 
 1198         /* Rec.709: used for HDTV */
 1199         V4L2_COLORSPACE_REC709        = 3,
 1200 
 1201         /*
 1202          * Deprecated, do not use. No driver will ever return this. This was
 1203          * based on a misunderstanding of the bt878 datasheet.
 1204          */
 1205         V4L2_COLORSPACE_BT878         = 4,
 1206 
 1207         /*
 1208          * NTSC 1953 colorspace. This only makes sense when dealing with
 1209          * really, really old NTSC recordings. Superseded by SMPTE 170M.
 1210          */
 1211         V4L2_COLORSPACE_470_SYSTEM_M  = 5,
 1212 
 1213         /*
 1214          * EBU Tech 3213 PAL/SECAM colorspace. This only makes sense when
 1215          * dealing with really old PAL/SECAM recordings. Superseded by
 1216          * SMPTE 170M.
 1217          */
 1218         V4L2_COLORSPACE_470_SYSTEM_BG = 6,
 1219 
 1220         /*
 1221          * Effectively shorthand for V4L2_COLORSPACE_SRGB, V4L2_YCBCR_ENC_601
 1222          * and V4L2_QUANTIZATION_FULL_RANGE. To be used for (Motion-)JPEG.
 1223          */
 1224         V4L2_COLORSPACE_JPEG          = 7,
 1225 
 1226         /* For RGB colorspaces such as produces by most webcams. */
 1227         V4L2_COLORSPACE_SRGB          = 8,
 1228 
 1229         /* AdobeRGB colorspace */
 1230         V4L2_COLORSPACE_ADOBERGB      = 9,
 1231 
 1232         /* BT.2020 colorspace, used for UHDTV. */
 1233         V4L2_COLORSPACE_BT2020        = 10,
 1234 
 1235         /* Raw colorspace: for RAW unprocessed images */
 1236         V4L2_COLORSPACE_RAW           = 11,
 1237 
 1238         /* DCI-P3 colorspace, used by cinema projectors */
 1239         V4L2_COLORSPACE_DCI_P3        = 12,
 1240 };
 1241 
 1242 /*
 1243  * Determine how COLORSPACE_DEFAULT should map to a proper colorspace.
 1244  * This depends on whether this is a SDTV image (use SMPTE 170M), an
 1245  * HDTV image (use Rec. 709), or something else (use sRGB).
 1246  */
 1247 #define V4L2_MAP_COLORSPACE_DEFAULT(is_sdtv, is_hdtv) \
 1248         ((is_sdtv) ? V4L2_COLORSPACE_SMPTE170M : \
 1249          ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB))
 1250 
 1251 enum v4l2_xfer_func {
 1252         /*
 1253          * Mapping of V4L2_XFER_FUNC_DEFAULT to actual transfer functions
 1254          * for the various colorspaces:
 1255          *
 1256          * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M,
 1257          * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_REC709 and
 1258          * V4L2_COLORSPACE_BT2020: V4L2_XFER_FUNC_709
 1259          *
 1260          * V4L2_COLORSPACE_SRGB, V4L2_COLORSPACE_JPEG: V4L2_XFER_FUNC_SRGB
 1261          *
 1262          * V4L2_COLORSPACE_ADOBERGB: V4L2_XFER_FUNC_ADOBERGB
 1263          *
 1264          * V4L2_COLORSPACE_SMPTE240M: V4L2_XFER_FUNC_SMPTE240M
 1265          *
 1266          * V4L2_COLORSPACE_RAW: V4L2_XFER_FUNC_NONE
 1267          *
 1268          * V4L2_COLORSPACE_DCI_P3: V4L2_XFER_FUNC_DCI_P3
 1269          */
 1270         V4L2_XFER_FUNC_DEFAULT     = 0,
 1271         V4L2_XFER_FUNC_709         = 1,
 1272         V4L2_XFER_FUNC_SRGB        = 2,
 1273         V4L2_XFER_FUNC_ADOBERGB    = 3,
 1274         V4L2_XFER_FUNC_SMPTE240M   = 4,
 1275         V4L2_XFER_FUNC_NONE        = 5,
 1276         V4L2_XFER_FUNC_DCI_P3      = 6,
 1277         V4L2_XFER_FUNC_SMPTE2084   = 7,
 1278 };
 1279 
 1280 /*
 1281  * Determine how XFER_FUNC_DEFAULT should map to a proper transfer function.
 1282  * This depends on the colorspace.
 1283  */
 1284 #define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \
 1285         ((colsp) == V4L2_COLORSPACE_ADOBERGB ? V4L2_XFER_FUNC_ADOBERGB : \
 1286          ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \
 1287           ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : \
 1288            ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \
 1289             ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? \
 1290              V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709)))))
 1291 
 1292 enum v4l2_ycbcr_encoding {
 1293         /*
 1294          * Mapping of V4L2_YCBCR_ENC_DEFAULT to actual encodings for the
 1295          * various colorspaces:
 1296          *
 1297          * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M,
 1298          * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_SRGB,
 1299          * V4L2_COLORSPACE_ADOBERGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601
 1300          *
 1301          * V4L2_COLORSPACE_REC709 and V4L2_COLORSPACE_DCI_P3: V4L2_YCBCR_ENC_709
 1302          *
 1303          * V4L2_COLORSPACE_BT2020: V4L2_YCBCR_ENC_BT2020
 1304          *
 1305          * V4L2_COLORSPACE_SMPTE240M: V4L2_YCBCR_ENC_SMPTE240M
 1306          */
 1307         V4L2_YCBCR_ENC_DEFAULT        = 0,
 1308 
 1309         /* ITU-R 601 -- SDTV */
 1310         V4L2_YCBCR_ENC_601            = 1,
 1311 
 1312         /* Rec. 709 -- HDTV */
 1313         V4L2_YCBCR_ENC_709            = 2,
 1314 
 1315         /* ITU-R 601/EN 61966-2-4 Extended Gamut -- SDTV */
 1316         V4L2_YCBCR_ENC_XV601          = 3,
 1317 
 1318         /* Rec. 709/EN 61966-2-4 Extended Gamut -- HDTV */
 1319         V4L2_YCBCR_ENC_XV709          = 4,
 1320 
 1321 #ifndef _KERNEL
 1322         /*
 1323          * sYCC (Y'CbCr encoding of sRGB), identical to ENC_601. It was added
 1324          * originally due to a misunderstanding of the sYCC standard. It should
 1325          * not be used, instead use V4L2_YCBCR_ENC_601.
 1326          */
 1327         V4L2_YCBCR_ENC_SYCC           = 5,
 1328 #endif
 1329 
 1330         /* BT.2020 Non-constant Luminance Y'CbCr */
 1331         V4L2_YCBCR_ENC_BT2020         = 6,
 1332 
 1333         /* BT.2020 Constant Luminance Y'CbcCrc */
 1334         V4L2_YCBCR_ENC_BT2020_CONST_LUM = 7,
 1335 
 1336         /* SMPTE 240M -- Obsolete HDTV */
 1337         V4L2_YCBCR_ENC_SMPTE240M      = 8,
 1338 };
 1339 
 1340 /*
 1341  * enum v4l2_hsv_encoding values should not collide with the ones from
 1342  * enum v4l2_ycbcr_encoding.
 1343  */
 1344 enum v4l2_hsv_encoding {
 1345 
 1346         /* Hue mapped to 0 - 179 */
 1347         V4L2_HSV_ENC_180                = 128,
 1348 
 1349         /* Hue mapped to 0-255 */
 1350         V4L2_HSV_ENC_256                = 129,
 1351 };
 1352 
 1353 /*
 1354  * Determine how YCBCR_ENC_DEFAULT should map to a proper Y'CbCr encoding.
 1355  * This depends on the colorspace.
 1356  */
 1357 #define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) \
 1358         (((colsp) == V4L2_COLORSPACE_REC709 || \
 1359           (colsp) == V4L2_COLORSPACE_DCI_P3) ? V4L2_YCBCR_ENC_709 : \
 1360          ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : \
 1361           ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : \
 1362            V4L2_YCBCR_ENC_601)))
 1363 
 1364 enum v4l2_quantization {
 1365         /*
 1366          * The default for R'G'B' quantization is always full range, except
 1367          * for the BT2020 colorspace. For Y'CbCr the quantization is always
 1368          * limited range, except for COLORSPACE_JPEG, SRGB, ADOBERGB,
 1369          * XV601 or XV709: those are full range.
 1370          */
 1371         V4L2_QUANTIZATION_DEFAULT     = 0,
 1372         V4L2_QUANTIZATION_FULL_RANGE  = 1,
 1373         V4L2_QUANTIZATION_LIM_RANGE   = 2,
 1374 };
 1375 
 1376 /*
 1377  * Determine how QUANTIZATION_DEFAULT should map to a proper quantization.
 1378  * This depends on whether the image is RGB or not, the colorspace and the
 1379  * Y'CbCr encoding.
 1380  */
 1381 #define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv, colsp, ycbcr_enc) \
 1382         (((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? \
 1383          V4L2_QUANTIZATION_LIM_RANGE : \
 1384          (((is_rgb_or_hsv) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \
 1385           (ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) || \
 1386           (colsp) == V4L2_COLORSPACE_ADOBERGB || (colsp) == V4L2_COLORSPACE_SRGB ? \
 1387          V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))
 1388 
 1389 enum v4l2_priority {
 1390         V4L2_PRIORITY_UNSET       = 0,  /* not initialized */
 1391         V4L2_PRIORITY_BACKGROUND  = 1,
 1392         V4L2_PRIORITY_INTERACTIVE = 2,
 1393         V4L2_PRIORITY_RECORD      = 3,
 1394         V4L2_PRIORITY_DEFAULT     = V4L2_PRIORITY_INTERACTIVE,
 1395 };
 1396 
 1397 struct v4l2_rect {
 1398         int32_t   left;
 1399         int32_t   top;
 1400         u_int32_t   width;
 1401         u_int32_t   height;
 1402 };
 1403 
 1404 struct v4l2_fract {
 1405         u_int32_t   numerator;
 1406         u_int32_t   denominator;
 1407 };
 1408 
 1409 /**
 1410   * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP
 1411   *
 1412   * @driver:       name of the driver module (e.g. "bttv")
 1413   * @card:         name of the card (e.g. "Hauppauge WinTV")
 1414   * @bus_info:     name of the bus (e.g. "PCI:" + pci_name(pci_dev) )
 1415   * @version:      KERNEL_VERSION
 1416   * @capabilities: capabilities of the physical device as a whole
 1417   * @device_caps:  capabilities accessed via this particular device (node)
 1418   * @reserved:     reserved fields for future extensions
 1419   */
 1420 struct v4l2_capability {
 1421         u_int8_t        driver[16];
 1422         u_int8_t        card[32];
 1423         u_int8_t        bus_info[32];
 1424         u_int32_t   version;
 1425         u_int32_t       capabilities;
 1426         u_int32_t       device_caps;
 1427         u_int32_t       reserved[3];
 1428 };
 1429 
 1430 /* Values for 'capabilities' field */
 1431 #define V4L2_CAP_VIDEO_CAPTURE          0x00000001  /* Is a video capture device */
 1432 #define V4L2_CAP_VIDEO_OUTPUT           0x00000002  /* Is a video output device */
 1433 #define V4L2_CAP_VIDEO_OVERLAY          0x00000004  /* Can do video overlay */
 1434 #define V4L2_CAP_VBI_CAPTURE            0x00000010  /* Is a raw VBI capture device */
 1435 #define V4L2_CAP_VBI_OUTPUT             0x00000020  /* Is a raw VBI output device */
 1436 #define V4L2_CAP_SLICED_VBI_CAPTURE     0x00000040  /* Is a sliced VBI capture device */
 1437 #define V4L2_CAP_SLICED_VBI_OUTPUT      0x00000080  /* Is a sliced VBI output device */
 1438 #define V4L2_CAP_RDS_CAPTURE            0x00000100  /* RDS data capture */
 1439 #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY   0x00000200  /* Can do video output overlay */
 1440 #define V4L2_CAP_HW_FREQ_SEEK           0x00000400  /* Can do hardware frequency seek  */
 1441 #define V4L2_CAP_RDS_OUTPUT             0x00000800  /* Is an RDS encoder */
 1442 
 1443 /* Is a video capture device that supports multiplanar formats */
 1444 #define V4L2_CAP_VIDEO_CAPTURE_MPLANE   0x00001000
 1445 /* Is a video output device that supports multiplanar formats */
 1446 #define V4L2_CAP_VIDEO_OUTPUT_MPLANE    0x00002000
 1447 /* Is a video mem-to-mem device that supports multiplanar formats */
 1448 #define V4L2_CAP_VIDEO_M2M_MPLANE       0x00004000
 1449 /* Is a video mem-to-mem device */
 1450 #define V4L2_CAP_VIDEO_M2M              0x00008000
 1451 
 1452 #define V4L2_CAP_TUNER                  0x00010000  /* has a tuner */
 1453 #define V4L2_CAP_AUDIO                  0x00020000  /* has audio support */
 1454 #define V4L2_CAP_RADIO                  0x00040000  /* is a radio device */
 1455 #define V4L2_CAP_MODULATOR              0x00080000  /* has a modulator */
 1456 
 1457 #define V4L2_CAP_SDR_CAPTURE            0x00100000  /* Is a SDR capture device */
 1458 #define V4L2_CAP_EXT_PIX_FORMAT         0x00200000  /* Supports the extended pixel format */
 1459 #define V4L2_CAP_SDR_OUTPUT             0x00400000  /* Is a SDR output device */
 1460 
 1461 #define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */
 1462 #define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */
 1463 #define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */
 1464 
 1465 #define V4L2_CAP_TOUCH                  0x10000000  /* Is a touch device */
 1466 
 1467 #define V4L2_CAP_DEVICE_CAPS            0x80000000  /* sets device capabilities field */
 1468 
 1469 #define V4L2_CAP_BITMASK                                        \
 1470         "\2\1VIDEO_CAPTURE\2VIDEO_OUTPUT\3VIDEO_OVERLAY"       \
 1471         "\5VBI_CAPTURE\6VBI_OUTPUT\10RDS_CAPTURE"               \
 1472         "\21TUNER\22AUDIO\31READWRITE"                          \
 1473         "\32ASYNCIO\33STREAMING\35TOUCH"
 1474 
 1475 /*
 1476  *      V I D E O   I M A G E   F O R M A T
 1477  */
 1478 struct v4l2_pix_format {
 1479         u_int32_t                       width;
 1480         u_int32_t                       height;
 1481         u_int32_t                       pixelformat;
 1482         u_int32_t                       field;          /* enum v4l2_field */
 1483         u_int32_t               bytesperline;   /* for padding, zero if unused */
 1484         u_int32_t                       sizeimage;
 1485         u_int32_t                       colorspace;     /* enum v4l2_colorspace */
 1486         u_int32_t                       priv;           /* private data, depends on pixelformat */
 1487         u_int32_t                       flags;          /* format flags (V4L2_PIX_FMT_FLAG_*) */
 1488         union {
 1489                 /* enum v4l2_ycbcr_encoding */
 1490                 u_int32_t                       ycbcr_enc;
 1491                 /* enum v4l2_hsv_encoding */
 1492                 u_int32_t                       hsv_enc;
 1493         };
 1494         u_int32_t                       quantization;   /* enum v4l2_quantization */
 1495         u_int32_t                       xfer_func;      /* enum v4l2_xfer_func */
 1496 };
 1497 
 1498 /*      Pixel format         FOURCC                          depth  Description  */
 1499 
 1500 /* RGB formats */
 1501 #define V4L2_PIX_FMT_RGB332  v4l2_fourcc('R', 'G', 'B', '1') /*  8  RGB-3-3-2     */
 1502 #define V4L2_PIX_FMT_RGB444  v4l2_fourcc('R', '4', '4', '4') /* 16  xxxxrrrr ggggbbbb */
 1503 #define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16  aaaarrrr ggggbbbb */
 1504 #define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16  xxxxrrrr ggggbbbb */
 1505 #define V4L2_PIX_FMT_RGB555  v4l2_fourcc('R', 'G', 'B', 'O') /* 16  RGB-5-5-5     */
 1506 #define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16  ARGB-1-5-5-5  */
 1507 #define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16  XRGB-1-5-5-5  */
 1508 #define V4L2_PIX_FMT_RGB565  v4l2_fourcc('R', 'G', 'B', 'P') /* 16  RGB-5-6-5     */
 1509 #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16  RGB-5-5-5 BE  */
 1510 #define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16  ARGB-5-5-5 BE */
 1511 #define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16  XRGB-5-5-5 BE */
 1512 #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16  RGB-5-6-5 BE  */
 1513 #define V4L2_PIX_FMT_BGR666  v4l2_fourcc('B', 'G', 'R', 'H') /* 18  BGR-6-6-6     */
 1514 #define V4L2_PIX_FMT_BGR24   v4l2_fourcc('B', 'G', 'R', '3') /* 24  BGR-8-8-8     */
 1515 #define V4L2_PIX_FMT_RGB24   v4l2_fourcc('R', 'G', 'B', '3') /* 24  RGB-8-8-8     */
 1516 #define V4L2_PIX_FMT_BGR32   v4l2_fourcc('B', 'G', 'R', '4') /* 32  BGR-8-8-8-8   */
 1517 #define V4L2_PIX_FMT_ABGR32  v4l2_fourcc('A', 'R', '2', '4') /* 32  BGRA-8-8-8-8  */
 1518 #define V4L2_PIX_FMT_XBGR32  v4l2_fourcc('X', 'R', '2', '4') /* 32  BGRX-8-8-8-8  */
 1519 #define V4L2_PIX_FMT_RGB32   v4l2_fourcc('R', 'G', 'B', '4') /* 32  RGB-8-8-8-8   */
 1520 #define V4L2_PIX_FMT_ARGB32  v4l2_fourcc('B', 'A', '2', '4') /* 32  ARGB-8-8-8-8  */
 1521 #define V4L2_PIX_FMT_XRGB32  v4l2_fourcc('B', 'X', '2', '4') /* 32  XRGB-8-8-8-8  */
 1522 
 1523 /* Grey formats */
 1524 #define V4L2_PIX_FMT_GREY    v4l2_fourcc('G', 'R', 'E', 'Y') /*  8  Greyscale     */
 1525 #define V4L2_PIX_FMT_Y4      v4l2_fourcc('Y', '', '4', ' ') /*  4  Greyscale     */
 1526 #define V4L2_PIX_FMT_Y6      v4l2_fourcc('Y', '', '6', ' ') /*  6  Greyscale     */
 1527 #define V4L2_PIX_FMT_Y10     v4l2_fourcc('Y', '1', '', ' ') /* 10  Greyscale     */
 1528 #define V4L2_PIX_FMT_Y12     v4l2_fourcc('Y', '1', '2', ' ') /* 12  Greyscale     */
 1529 #define V4L2_PIX_FMT_Y16     v4l2_fourcc('Y', '1', '6', ' ') /* 16  Greyscale     */
 1530 #define V4L2_PIX_FMT_Y16_BE  v4l2_fourcc_be('Y', '1', '6', ' ') /* 16  Greyscale BE  */
 1531 
 1532 /* Grey bit-packed formats */
 1533 #define V4L2_PIX_FMT_Y10BPACK    v4l2_fourcc('Y', '1', '', 'B') /* 10  Greyscale bit-packed */
 1534 
 1535 /* Palette formats */
 1536 #define V4L2_PIX_FMT_PAL8    v4l2_fourcc('P', 'A', 'L', '8') /*  8  8-bit palette */
 1537 
 1538 /* Chrominance formats */
 1539 #define V4L2_PIX_FMT_UV8     v4l2_fourcc('U', 'V', '8', ' ') /*  8  UV 4:4 */
 1540 
 1541 /* Luminance+Chrominance formats */
 1542 #define V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16  YUV 4:2:2     */
 1543 #define V4L2_PIX_FMT_YYUV    v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16  YUV 4:2:2     */
 1544 #define V4L2_PIX_FMT_YVYU    v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */
 1545 #define V4L2_PIX_FMT_UYVY    v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16  YUV 4:2:2     */
 1546 #define V4L2_PIX_FMT_VYUY    v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16  YUV 4:2:2     */
 1547 #define V4L2_PIX_FMT_Y41P    v4l2_fourcc('Y', '4', '1', 'P') /* 12  YUV 4:1:1     */
 1548 #define V4L2_PIX_FMT_YUV444  v4l2_fourcc('Y', '4', '4', '4') /* 16  xxxxyyyy uuuuvvvv */
 1549 #define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O') /* 16  YUV-5-5-5     */
 1550 #define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y', 'U', 'V', 'P') /* 16  YUV-5-6-5     */
 1551 #define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  YUV-8-8-8-8   */
 1552 #define V4L2_PIX_FMT_HI240   v4l2_fourcc('H', 'I', '2', '4') /*  8  8-bit color   */
 1553 #define V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2') /*  8  YUV 4:2:0 16x16 macroblocks */
 1554 #define V4L2_PIX_FMT_M420    v4l2_fourcc('M', '4', '2', '') /* 12  YUV 4:2:0 2 lines y, 1 line uv interleaved */
 1555 
 1556 /* two planes -- one Y, one Cr + Cb interleaved  */
 1557 #define V4L2_PIX_FMT_NV12    v4l2_fourcc('N', 'V', '1', '2') /* 12  Y/CbCr 4:2:0  */
 1558 #define V4L2_PIX_FMT_NV21    v4l2_fourcc('N', 'V', '2', '1') /* 12  Y/CrCb 4:2:0  */
 1559 #define V4L2_PIX_FMT_NV16    v4l2_fourcc('N', 'V', '1', '6') /* 16  Y/CbCr 4:2:2  */
 1560 #define V4L2_PIX_FMT_NV61    v4l2_fourcc('N', 'V', '6', '1') /* 16  Y/CrCb 4:2:2  */
 1561 #define V4L2_PIX_FMT_NV24    v4l2_fourcc('N', 'V', '2', '4') /* 24  Y/CbCr 4:4:4  */
 1562 #define V4L2_PIX_FMT_NV42    v4l2_fourcc('N', 'V', '4', '2') /* 24  Y/CrCb 4:4:4  */
 1563 
 1564 /* two non contiguous planes - one Y, one Cr + Cb interleaved  */
 1565 #define V4L2_PIX_FMT_NV12M   v4l2_fourcc('N', 'M', '1', '2') /* 12  Y/CbCr 4:2:0  */
 1566 #define V4L2_PIX_FMT_NV21M   v4l2_fourcc('N', 'M', '2', '1') /* 21  Y/CrCb 4:2:0  */
 1567 #define V4L2_PIX_FMT_NV16M   v4l2_fourcc('N', 'M', '1', '6') /* 16  Y/CbCr 4:2:2  */
 1568 #define V4L2_PIX_FMT_NV61M   v4l2_fourcc('N', 'M', '6', '1') /* 16  Y/CrCb 4:2:2  */
 1569 #define V4L2_PIX_FMT_NV12MT  v4l2_fourcc('T', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 64x32 macroblocks */
 1570 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 16x16 macroblocks */
 1571 
 1572 /* three planes - Y Cb, Cr */
 1573 #define V4L2_PIX_FMT_YUV410  v4l2_fourcc('Y', 'U', 'V', '9') /*  9  YUV 4:1:0     */
 1574 #define V4L2_PIX_FMT_YVU410  v4l2_fourcc('Y', 'V', 'U', '9') /*  9  YVU 4:1:0     */
 1575 #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 12  YVU411 planar */
 1576 #define V4L2_PIX_FMT_YUV420  v4l2_fourcc('Y', 'U', '1', '2') /* 12  YUV 4:2:0     */
 1577 #define V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y', 'V', '1', '2') /* 12  YVU 4:2:0     */
 1578 #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16  YVU422 planar */
 1579 
 1580 /* three non contiguous planes - Y, Cb, Cr */
 1581 #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12  YUV420 planar */
 1582 #define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12  YVU420 planar */
 1583 #define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6') /* 16  YUV422 planar */
 1584 #define V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1') /* 16  YVU422 planar */
 1585 #define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24  YUV444 planar */
 1586 #define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24  YVU444 planar */
 1587 
 1588 /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
 1589 #define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B', 'A', '8', '1') /*  8  BGBG.. GRGR.. */
 1590 #define V4L2_PIX_FMT_SGBRG8  v4l2_fourcc('G', 'B', 'R', 'G') /*  8  GBGB.. RGRG.. */
 1591 #define V4L2_PIX_FMT_SGRBG8  v4l2_fourcc('G', 'R', 'B', 'G') /*  8  GRGR.. BGBG.. */
 1592 #define V4L2_PIX_FMT_SRGGB8  v4l2_fourcc('R', 'G', 'G', 'B') /*  8  RGRG.. GBGB.. */
 1593 #define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '') /* 10  BGBG.. GRGR.. */
 1594 #define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '') /* 10  GBGB.. RGRG.. */
 1595 #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '') /* 10  GRGR.. BGBG.. */
 1596 #define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '') /* 10  RGRG.. GBGB.. */
 1597         /* 10bit raw bayer packed, 5 bytes for every 4 pixels */
 1598 #define V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A')
 1599 #define V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A')
 1600 #define V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A')
 1601 #define V4L2_PIX_FMT_SRGGB10P v4l2_fourcc('p', 'R', 'A', 'A')
 1602         /* 10bit raw bayer a-law compressed to 8 bits */
 1603 #define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8')
 1604 #define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8')
 1605 #define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8')
 1606 #define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8')
 1607         /* 10bit raw bayer DPCM compressed to 8 bits */
 1608 #define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8')
 1609 #define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8')
 1610 #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '')
 1611 #define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8')
 1612 #define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12  BGBG.. GRGR.. */
 1613 #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12  GBGB.. RGRG.. */
 1614 #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12  GRGR.. BGBG.. */
 1615 #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12  RGRG.. GBGB.. */
 1616 #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16  BGBG.. GRGR.. */
 1617 #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16  GBGB.. RGRG.. */
 1618 #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16  GRGR.. BGBG.. */
 1619 #define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16  RGRG.. GBGB.. */
 1620 
 1621 /* HSV formats */
 1622 #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')
 1623 #define V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4')
 1624 
 1625 /* compressed formats */
 1626 #define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG   */
 1627 #define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG     */
 1628 #define V4L2_PIX_FMT_DV       v4l2_fourcc('d', 'v', 's', 'd') /* 1394          */
 1629 #define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */
 1630 #define V4L2_PIX_FMT_H264     v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */
 1631 #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */
 1632 #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */
 1633 #define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */
 1634 #define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */
 1635 #define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES     */
 1636 #define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */
 1637 #define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */
 1638 #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */
 1639 #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */
 1640 #define V4L2_PIX_FMT_VP8      v4l2_fourcc('V', 'P', '8', '') /* VP8 */
 1641 #define V4L2_PIX_FMT_VP9      v4l2_fourcc('V', 'P', '9', '') /* VP9 */
 1642 
 1643 /*  Vendor-specific formats   */
 1644 #define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
 1645 #define V4L2_PIX_FMT_WNVA     v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */
 1646 #define V4L2_PIX_FMT_SN9C10X  v4l2_fourcc('S', '9', '1', '') /* SN9C10x compression */
 1647 #define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '') /* SN9C20x YUV 4:2:0 */
 1648 #define V4L2_PIX_FMT_PWC1     v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */
 1649 #define V4L2_PIX_FMT_PWC2     v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */
 1650 #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */
 1651 #define V4L2_PIX_FMT_SPCA501  v4l2_fourcc('S', '5', '', '1') /* YUYV per line */
 1652 #define V4L2_PIX_FMT_SPCA505  v4l2_fourcc('S', '5', '', '5') /* YYUV per line */
 1653 #define V4L2_PIX_FMT_SPCA508  v4l2_fourcc('S', '5', '', '8') /* YUVY per line */
 1654 #define V4L2_PIX_FMT_SPCA561  v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */
 1655 #define V4L2_PIX_FMT_PAC207   v4l2_fourcc('P', '2', '', '7') /* compressed BGGR bayer */
 1656 #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '') /* compressed BGGR bayer */
 1657 #define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '') /* compressed RGGB bayer */
 1658 #define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */
 1659 #define V4L2_PIX_FMT_SQ905C   v4l2_fourcc('9', '', '5', 'C') /* compressed RGGB bayer */
 1660 #define V4L2_PIX_FMT_PJPG     v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */
 1661 #define V4L2_PIX_FMT_OV511    v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */
 1662 #define V4L2_PIX_FMT_OV518    v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */
 1663 #define V4L2_PIX_FMT_STV0680  v4l2_fourcc('S', '6', '8', '') /* stv0680 bayer */
 1664 #define V4L2_PIX_FMT_TM6000   v4l2_fourcc('T', 'M', '6', '') /* tm5600/tm60x0 */
 1665 #define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */
 1666 #define V4L2_PIX_FMT_KONICA420  v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */
 1667 #define V4L2_PIX_FMT_JPGL       v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */
 1668 #define V4L2_PIX_FMT_SE401      v4l2_fourcc('S', '4', '', '1') /* se401 janggu compressed rgb */
 1669 #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */
 1670 #define V4L2_PIX_FMT_Y8I      v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */
 1671 #define V4L2_PIX_FMT_Y12I     v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */
 1672 #define V4L2_PIX_FMT_Z16      v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */
 1673 #define V4L2_PIX_FMT_MT21C    v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode  */
 1674 
 1675 /* SDR formats - used only for Software Defined Radio devices */
 1676 #define V4L2_SDR_FMT_CU8          v4l2_fourcc('C', 'U', '', '8') /* IQ u8 */
 1677 #define V4L2_SDR_FMT_CU16LE       v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */
 1678 #define V4L2_SDR_FMT_CS8          v4l2_fourcc('C', 'S', '', '8') /* complex s8 */
 1679 #define V4L2_SDR_FMT_CS14LE       v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */
 1680 #define V4L2_SDR_FMT_RU12LE       v4l2_fourcc('R', 'U', '1', '2') /* real u12le */
 1681 
 1682 /* Touch formats - used for Touch devices */
 1683 #define V4L2_TCH_FMT_DELTA_TD16 v4l2_fourcc('T', 'D', '1', '6') /* 16-bit signed deltas */
 1684 #define V4L2_TCH_FMT_DELTA_TD08 v4l2_fourcc('T', 'D', '', '8') /* 8-bit signed deltas */
 1685 #define V4L2_TCH_FMT_TU16       v4l2_fourcc('T', 'U', '1', '6') /* 16-bit unsigned touch data */
 1686 #define V4L2_TCH_FMT_TU08       v4l2_fourcc('T', 'U', '', '8') /* 8-bit unsigned touch data */
 1687 
 1688 /* priv field value to indicates that subsequent fields are valid. */
 1689 #define V4L2_PIX_FMT_PRIV_MAGIC         0xfeedcafe
 1690 
 1691 /* Flags */
 1692 #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA  0x00000001
 1693 
 1694 /*
 1695  *      F O R M A T   E N U M E R A T I O N
 1696  */
 1697 struct v4l2_fmtdesc {
 1698         u_int32_t                   index;             /* Format number      */
 1699         u_int32_t                   type;              /* enum v4l2_buf_type */
 1700         u_int32_t               flags;
 1701         u_int8_t                    description[32];   /* Description string */
 1702         u_int32_t                   pixelformat;       /* Format fourcc      */
 1703         u_int32_t                   reserved[4];
 1704 };
 1705 
 1706 #define V4L2_FMT_FLAG_COMPRESSED 0x0001
 1707 #define V4L2_FMT_FLAG_EMULATED   0x0002
 1708 
 1709         /* Frame Size and frame rate enumeration */
 1710 /*
 1711  *      F R A M E   S I Z E   E N U M E R A T I O N
 1712  */
 1713 enum v4l2_frmsizetypes {
 1714         V4L2_FRMSIZE_TYPE_DISCRETE      = 1,
 1715         V4L2_FRMSIZE_TYPE_CONTINUOUS    = 2,
 1716         V4L2_FRMSIZE_TYPE_STEPWISE      = 3,
 1717 };
 1718 
 1719 struct v4l2_frmsize_discrete {
 1720         u_int32_t                       width;          /* Frame width [pixel] */
 1721         u_int32_t                       height;         /* Frame height [pixel] */
 1722 };
 1723 
 1724 struct v4l2_frmsize_stepwise {
 1725         u_int32_t                       min_width;      /* Minimum frame width [pixel] */
 1726         u_int32_t                       max_width;      /* Maximum frame width [pixel] */
 1727         u_int32_t                       step_width;     /* Frame width step size [pixel] */
 1728         u_int32_t                       min_height;     /* Minimum frame height [pixel] */
 1729         u_int32_t                       max_height;     /* Maximum frame height [pixel] */
 1730         u_int32_t                       step_height;    /* Frame height step size [pixel] */
 1731 };
 1732 
 1733 struct v4l2_frmsizeenum {
 1734         u_int32_t                       index;          /* Frame size number */
 1735         u_int32_t                       pixel_format;   /* Pixel format */
 1736         u_int32_t                       type;           /* Frame size type the device supports. */
 1737 
 1738         union {                                 /* Frame size */
 1739                 struct v4l2_frmsize_discrete    discrete;
 1740                 struct v4l2_frmsize_stepwise    stepwise;
 1741         };
 1742 
 1743         u_int32_t   reserved[2];                        /* Reserved space for future use */
 1744 };
 1745 
 1746 /*
 1747  *      F R A M E   R A T E   E N U M E R A T I O N
 1748  */
 1749 enum v4l2_frmivaltypes {
 1750         V4L2_FRMIVAL_TYPE_DISCRETE      = 1,
 1751         V4L2_FRMIVAL_TYPE_CONTINUOUS    = 2,
 1752         V4L2_FRMIVAL_TYPE_STEPWISE      = 3,
 1753 };
 1754 
 1755 struct v4l2_frmival_stepwise {
 1756         struct v4l2_fract       min;            /* Minimum frame interval [s] */
 1757         struct v4l2_fract       max;            /* Maximum frame interval [s] */
 1758         struct v4l2_fract       step;           /* Frame interval step size [s] */
 1759 };
 1760 
 1761 struct v4l2_frmivalenum {
 1762         u_int32_t                       index;          /* Frame format index */
 1763         u_int32_t                       pixel_format;   /* Pixel format */
 1764         u_int32_t                       width;          /* Frame width */
 1765         u_int32_t                       height;         /* Frame height */
 1766         u_int32_t                       type;           /* Frame interval type the device supports. */
 1767 
 1768         union {                                 /* Frame interval */
 1769                 struct v4l2_fract               discrete;
 1770                 struct v4l2_frmival_stepwise    stepwise;
 1771         };
 1772 
 1773         u_int32_t       reserved[2];                    /* Reserved space for future use */
 1774 };
 1775 
 1776 /*
 1777  *      T I M E C O D E
 1778  */
 1779 struct v4l2_timecode {
 1780         u_int32_t       type;
 1781         u_int32_t       flags;
 1782         u_int8_t        frames;
 1783         u_int8_t        seconds;
 1784         u_int8_t        minutes;
 1785         u_int8_t        hours;
 1786         u_int8_t        userbits[4];
 1787 };
 1788 
 1789 /*  Type  */
 1790 #define V4L2_TC_TYPE_24FPS              1
 1791 #define V4L2_TC_TYPE_25FPS              2
 1792 #define V4L2_TC_TYPE_30FPS              3
 1793 #define V4L2_TC_TYPE_50FPS              4
 1794 #define V4L2_TC_TYPE_60FPS              5
 1795 
 1796 /*  Flags  */
 1797 #define V4L2_TC_FLAG_DROPFRAME          0x0001 /* "drop-frame" mode */
 1798 #define V4L2_TC_FLAG_COLORFRAME         0x0002
 1799 #define V4L2_TC_USERBITS_field          0x000C
 1800 #define V4L2_TC_USERBITS_USERDEFINED    0x0000
 1801 #define V4L2_TC_USERBITS_8BITCHARS      0x0008
 1802 /* The above is based on SMPTE timecodes */
 1803 
 1804 struct v4l2_jpegcompression {
 1805         int quality;
 1806 
 1807         int  APPn;              /* Number of APP segment to be written,
 1808                                  * must be 0..15 */
 1809         int  APP_len;           /* Length of data in JPEG APPn segment */
 1810         char APP_data[60];      /* Data in the JPEG APPn segment. */
 1811 
 1812         int  COM_len;           /* Length of data in JPEG COM segment */
 1813         char COM_data[60];      /* Data in JPEG COM segment */
 1814 
 1815         u_int32_t jpeg_markers;     /* Which markers should go into the JPEG
 1816                                  * output. Unless you exactly know what
 1817                                  * you do, leave them untouched.
 1818                                  * Including less markers will make the
 1819                                  * resulting code smaller, but there will
 1820                                  * be fewer applications which can read it.
 1821                                  * The presence of the APP and COM marker
 1822                                  * is influenced by APP_len and COM_len
 1823                                  * ONLY, not by this property! */
 1824 
 1825 #define V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */
 1826 #define V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */
 1827 #define V4L2_JPEG_MARKER_DRI (1<<5)    /* Define Restart Interval */
 1828 #define V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */
 1829 #define V4L2_JPEG_MARKER_APP (1<<7)    /* App segment, driver will
 1830                                         * always use APP0 */
 1831 };
 1832 
 1833 /*
 1834  *      M E M O R Y - M A P P I N G   B U F F E R S
 1835  */
 1836 struct v4l2_requestbuffers {
 1837         u_int32_t                       count;
 1838         u_int32_t                       type;           /* enum v4l2_buf_type */
 1839         u_int32_t                       memory;         /* enum v4l2_memory */
 1840         u_int32_t                       reserved[2];
 1841 };
 1842 
 1843 /**
 1844  * struct v4l2_plane - plane info for multi-planar buffers
 1845  * @bytesused:          number of bytes occupied by data in the plane (payload)
 1846  * @length:             size of this plane (NOT the payload) in bytes
 1847  * @mem_offset:         when memory in the associated struct v4l2_buffer is
 1848  *                      V4L2_MEMORY_MMAP, equals the offset from the start of
 1849  *                      the device memory for this plane (or is a "cookie" that
 1850  *                      should be passed to mmap() called on the video node)
 1851  * @userptr:            when memory is V4L2_MEMORY_USERPTR, a userspace pointer
 1852  *                      pointing to this plane
 1853  * @fd:                 when memory is V4L2_MEMORY_DMABUF, a userspace file
 1854  *                      descriptor associated with this plane
 1855  * @data_offset:        offset in the plane to the start of data; usually 0,
 1856  *                      unless there is a header in front of the data
 1857  *
 1858  * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer
 1859  * with two planes can have one plane for Y, and another for interleaved CbCr
 1860  * components. Each plane can reside in a separate memory buffer, or even in
 1861  * a completely separate memory node (e.g. in embedded devices).
 1862  */
 1863 struct v4l2_plane {
 1864         u_int32_t                       bytesused;
 1865         u_int32_t                       length;
 1866         union {
 1867                 u_int32_t               mem_offset;
 1868                 unsigned long   userptr;
 1869                 int32_t         fd;
 1870         } m;
 1871         u_int32_t                       data_offset;
 1872         u_int32_t                       reserved[11];
 1873 };
 1874 
 1875 /**
 1876  * struct v4l2_buffer - video buffer info
 1877  * @index:      id number of the buffer
 1878  * @type:       enum v4l2_buf_type; buffer type (type == *_MPLANE for
 1879  *              multiplanar buffers);
 1880  * @bytesused:  number of bytes occupied by data in the buffer (payload);
 1881  *              unused (set to 0) for multiplanar buffers
 1882  * @flags:      buffer informational flags
 1883  * @field:      enum v4l2_field; field order of the image in the buffer
 1884  * @timestamp:  frame timestamp
 1885  * @timecode:   frame timecode
 1886  * @sequence:   sequence count of this frame
 1887  * @memory:     enum v4l2_memory; the method, in which the actual video data is
 1888  *              passed
 1889  * @offset:     for non-multiplanar buffers with memory == V4L2_MEMORY_MMAP;
 1890  *              offset from the start of the device memory for this plane,
 1891  *              (or a "cookie" that should be passed to mmap() as offset)
 1892  * @userptr:    for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR;
 1893  *              a userspace pointer pointing to this buffer
 1894  * @fd:         for non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF;
 1895  *              a userspace file descriptor associated with this buffer
 1896  * @planes:     for multiplanar buffers; userspace pointer to the array of plane
 1897  *              info structs for this buffer
 1898  * @length:     size in bytes of the buffer (NOT its payload) for single-plane
 1899  *              buffers (when type != *_MPLANE); number of elements in the
 1900  *              planes array for multi-plane buffers
 1901  *
 1902  * Contains data exchanged by application and driver using one of the Streaming
 1903  * I/O methods.
 1904  */
 1905 struct v4l2_buffer {
 1906         u_int32_t                       index;
 1907         u_int32_t                       type;
 1908         u_int32_t                       bytesused;
 1909         u_int32_t                       flags;
 1910         u_int32_t                       field;
 1911         struct timeval          timestamp;
 1912         struct v4l2_timecode    timecode;
 1913         u_int32_t                       sequence;
 1914 
 1915         /* memory location */
 1916         u_int32_t                       memory;
 1917         union {
 1918                 u_int32_t           offset;
 1919                 unsigned long   userptr;
 1920                 struct v4l2_plane *planes;
 1921                 int32_t         fd;
 1922         } m;
 1923         u_int32_t                       length;
 1924         u_int32_t                       reserved2;
 1925         u_int32_t                       reserved;
 1926 };
 1927 
 1928 #ifdef _KERNEL
 1929 struct v4l2_buffer50 {
 1930         uint32_t        index;
 1931         enum v4l2_buf_type type;
 1932         uint32_t        bytesused;
 1933         uint32_t        flags;
 1934         enum v4l2_field field;
 1935         struct timeval50 timestamp;
 1936         struct v4l2_timecode timecode;
 1937         uint32_t        sequence;
 1938         enum v4l2_memory memory;
 1939         union {
 1940                 uint32_t        offset;
 1941                 unsigned long   userptr;
 1942         } m;
 1943         uint32_t        length;
 1944         uint32_t        reserved2;
 1945         uint32_t        reserved;
 1946 };
 1947 
 1948 #endif
 1949 
 1950 /*  Flags for 'flags' field */
 1951 /* Buffer is mapped (flag) */
 1952 #define V4L2_BUF_FLAG_MAPPED                    0x00000001
 1953 /* Buffer is queued for processing */
 1954 #define V4L2_BUF_FLAG_QUEUED                    0x00000002
 1955 /* Buffer is ready */
 1956 #define V4L2_BUF_FLAG_DONE                      0x00000004
 1957 /* Image is a keyframe (I-frame) */
 1958 #define V4L2_BUF_FLAG_KEYFRAME                  0x00000008
 1959 /* Image is a P-frame */
 1960 #define V4L2_BUF_FLAG_PFRAME                    0x00000010
 1961 /* Image is a B-frame */
 1962 #define V4L2_BUF_FLAG_BFRAME                    0x00000020
 1963 /* Buffer is ready, but the data contained within is corrupted. */
 1964 #define V4L2_BUF_FLAG_ERROR                     0x00000040
 1965 /* timecode field is valid */
 1966 #define V4L2_BUF_FLAG_TIMECODE                  0x00000100
 1967 /* Buffer is prepared for queuing */
 1968 #define V4L2_BUF_FLAG_PREPARED                  0x00000400
 1969 /* Cache handling flags */
 1970 #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE       0x00000800
 1971 #define V4L2_BUF_FLAG_NO_CACHE_CLEAN            0x00001000
 1972 /* Timestamp type */
 1973 #define V4L2_BUF_FLAG_TIMESTAMP_MASK            0x0000e000
 1974 #define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN         0x00000000
 1975 #define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC       0x00002000
 1976 #define V4L2_BUF_FLAG_TIMESTAMP_COPY            0x00004000
 1977 /* Timestamp sources. */
 1978 #define V4L2_BUF_FLAG_TSTAMP_SRC_MASK           0x00070000
 1979 #define V4L2_BUF_FLAG_TSTAMP_SRC_EOF            0x00000000
 1980 #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE            0x00010000
 1981 /* mem2mem encoder/decoder */
 1982 #define V4L2_BUF_FLAG_LAST                      0x00100000
 1983 
 1984 /**
 1985  * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor
 1986  *
 1987  * @index:      id number of the buffer
 1988  * @type:       enum v4l2_buf_type; buffer type (type == *_MPLANE for
 1989  *              multiplanar buffers);
 1990  * @plane:      index of the plane to be exported, 0 for single plane queues
 1991  * @flags:      flags for newly created file, currently only O_CLOEXEC is
 1992  *              supported, refer to manual of open syscall for more details
 1993  * @fd:         file descriptor associated with DMABUF (set by driver)
 1994  *
 1995  * Contains data used for exporting a video buffer as DMABUF file descriptor.
 1996  * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF
 1997  * (identical to the cookie used to mmap() the buffer to userspace). All
 1998  * reserved fields must be set to zero. The field reserved0 is expected to
 1999  * become a structure 'type' allowing an alternative layout of the structure
 2000  * content. Therefore this field should not be used for any other extensions.
 2001  */
 2002 struct v4l2_exportbuffer {
 2003         u_int32_t               type; /* enum v4l2_buf_type */
 2004         u_int32_t               index;
 2005         u_int32_t               plane;
 2006         u_int32_t               flags;
 2007         int32_t         fd;
 2008         u_int32_t               reserved[11];
 2009 };
 2010 
 2011 /*
 2012  *      O V E R L A Y   P R E V I E W
 2013  */
 2014 struct v4l2_framebuffer {
 2015         u_int32_t                       capability;
 2016         u_int32_t                       flags;
 2017 /* FIXME: in theory we should pass something like PCI device + memory
 2018  * region + offset instead of some physical address */
 2019         void                    *base;
 2020         struct {
 2021                 u_int32_t               width;
 2022                 u_int32_t               height;
 2023                 u_int32_t               pixelformat;
 2024                 u_int32_t               field;          /* enum v4l2_field */
 2025                 u_int32_t               bytesperline;   /* for padding, zero if unused */
 2026                 u_int32_t               sizeimage;
 2027                 u_int32_t               colorspace;     /* enum v4l2_colorspace */
 2028                 u_int32_t               priv;           /* reserved field, set to 0 */
 2029         } fmt;
 2030 };
 2031 /*  Flags for the 'capability' field. Read only */
 2032 #define V4L2_FBUF_CAP_EXTERNOVERLAY     0x0001
 2033 #define V4L2_FBUF_CAP_CHROMAKEY         0x0002
 2034 #define V4L2_FBUF_CAP_LIST_CLIPPING     0x0004
 2035 #define V4L2_FBUF_CAP_BITMAP_CLIPPING   0x0008
 2036 #define V4L2_FBUF_CAP_LOCAL_ALPHA       0x0010
 2037 #define V4L2_FBUF_CAP_GLOBAL_ALPHA      0x0020
 2038 #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA   0x0040
 2039 #define V4L2_FBUF_CAP_SRC_CHROMAKEY     0x0080
 2040 /*  Flags for the 'flags' field. */
 2041 #define V4L2_FBUF_FLAG_PRIMARY          0x0001
 2042 #define V4L2_FBUF_FLAG_OVERLAY          0x0002
 2043 #define V4L2_FBUF_FLAG_CHROMAKEY        0x0004
 2044 #define V4L2_FBUF_FLAG_LOCAL_ALPHA      0x0008
 2045 #define V4L2_FBUF_FLAG_GLOBAL_ALPHA     0x0010
 2046 #define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA  0x0020
 2047 #define V4L2_FBUF_FLAG_SRC_CHROMAKEY    0x0040
 2048 
 2049 struct v4l2_clip {
 2050         struct v4l2_rect        c;
 2051         struct v4l2_clip        __user *next;
 2052 };
 2053 
 2054 struct v4l2_window {
 2055         struct v4l2_rect        w;
 2056         u_int32_t                       field;   /* enum v4l2_field */
 2057         u_int32_t                       chromakey;
 2058         struct v4l2_clip        __user *clips;
 2059         u_int32_t                       clipcount;
 2060         void                    __user *bitmap;
 2061         u_int8_t                    global_alpha;
 2062 };
 2063 
 2064 /*
 2065  *      C A P T U R E   P A R A M E T E R S
 2066  */
 2067 struct v4l2_captureparm {
 2068         u_int32_t                  capability;    /*  Supported modes */
 2069         u_int32_t                  capturemode;   /*  Current mode */
 2070         struct v4l2_fract  timeperframe;  /*  Time per frame in seconds */
 2071         u_int32_t                  extendedmode;  /*  Driver-specific extensions */
 2072         u_int32_t              readbuffers;   /*  # of buffers for read */
 2073         u_int32_t                  reserved[4];
 2074 };
 2075 
 2076 /*  Flags for 'capability' and 'capturemode' fields */
 2077 #define V4L2_MODE_HIGHQUALITY   0x0001  /*  High quality imaging mode */
 2078 #define V4L2_CAP_TIMEPERFRAME   0x1000  /*  timeperframe field is supported */
 2079 
 2080 struct v4l2_outputparm {
 2081         u_int32_t                  capability;   /*  Supported modes */
 2082         u_int32_t                  outputmode;   /*  Current mode */
 2083         struct v4l2_fract  timeperframe; /*  Time per frame in seconds */
 2084         u_int32_t                  extendedmode; /*  Driver-specific extensions */
 2085         u_int32_t              writebuffers; /*  # of buffers for write */
 2086         u_int32_t                  reserved[4];
 2087 };
 2088 
 2089 /*
 2090  *      I N P U T   I M A G E   C R O P P I N G
 2091  */
 2092 struct v4l2_cropcap {
 2093         u_int32_t                       type;   /* enum v4l2_buf_type */
 2094         struct v4l2_rect        bounds;
 2095         struct v4l2_rect        defrect;
 2096         struct v4l2_fract       pixelaspect;
 2097 };
 2098 
 2099 struct v4l2_crop {
 2100         u_int32_t                       type;   /* enum v4l2_buf_type */
 2101         struct v4l2_rect        c;
 2102 };
 2103 
 2104 /**
 2105  * struct v4l2_selection - selection info
 2106  * @type:       buffer type (do not use *_MPLANE types)
 2107  * @target:     Selection target, used to choose one of possible rectangles;
 2108  *              defined in v4l2-common.h; V4L2_SEL_TGT_* .
 2109  * @flags:      constraints flags, defined in v4l2-common.h; V4L2_SEL_FLAG_*.
 2110  * @r:          coordinates of selection window
 2111  * @reserved:   for future use, rounds structure size to 64 bytes, set to zero
 2112  *
 2113  * Hardware may use multiple helper windows to process a video stream.
 2114  * The structure is used to exchange this selection areas between
 2115  * an application and a driver.
 2116  */
 2117 struct v4l2_selection {
 2118         u_int32_t                       type;
 2119         u_int32_t                       target;
 2120         u_int32_t                   flags;
 2121         struct v4l2_rect        r;
 2122         u_int32_t                   reserved[9];
 2123 };
 2124 
 2125 
 2126 /*
 2127  *      A N A L O G   V I D E O   S T A N D A R D
 2128  */
 2129 
 2130 typedef u_int64_t v4l2_std_id;
 2131 
 2132 /* one bit for each */
 2133 #define V4L2_STD_PAL_B          ((v4l2_std_id)0x00000001)
 2134 #define V4L2_STD_PAL_B1         ((v4l2_std_id)0x00000002)
 2135 #define V4L2_STD_PAL_G          ((v4l2_std_id)0x00000004)
 2136 #define V4L2_STD_PAL_H          ((v4l2_std_id)0x00000008)
 2137 #define V4L2_STD_PAL_I          ((v4l2_std_id)0x00000010)
 2138 #define V4L2_STD_PAL_D          ((v4l2_std_id)0x00000020)
 2139 #define V4L2_STD_PAL_D1         ((v4l2_std_id)0x00000040)
 2140 #define V4L2_STD_PAL_K          ((v4l2_std_id)0x00000080)
 2141 
 2142 #define V4L2_STD_PAL_M          ((v4l2_std_id)0x00000100)
 2143 #define V4L2_STD_PAL_N          ((v4l2_std_id)0x00000200)
 2144 #define V4L2_STD_PAL_Nc         ((v4l2_std_id)0x00000400)
 2145 #define V4L2_STD_PAL_60         ((v4l2_std_id)0x00000800)
 2146 
 2147 #define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000)       /* BTSC */
 2148 #define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000)       /* EIA-J */
 2149 #define V4L2_STD_NTSC_443       ((v4l2_std_id)0x00004000)
 2150 #define V4L2_STD_NTSC_M_KR      ((v4l2_std_id)0x00008000)       /* FM A2 */
 2151 
 2152 #define V4L2_STD_SECAM_B        ((v4l2_std_id)0x00010000)
 2153 #define V4L2_STD_SECAM_D        ((v4l2_std_id)0x00020000)
 2154 #define V4L2_STD_SECAM_G        ((v4l2_std_id)0x00040000)
 2155 #define V4L2_STD_SECAM_H        ((v4l2_std_id)0x00080000)
 2156 #define V4L2_STD_SECAM_K        ((v4l2_std_id)0x00100000)
 2157 #define V4L2_STD_SECAM_K1       ((v4l2_std_id)0x00200000)
 2158 #define V4L2_STD_SECAM_L        ((v4l2_std_id)0x00400000)
 2159 #define V4L2_STD_SECAM_LC       ((v4l2_std_id)0x00800000)
 2160 
 2161 /* ATSC/HDTV */
 2162 #define V4L2_STD_ATSC_8_VSB     ((v4l2_std_id)0x01000000)
 2163 #define V4L2_STD_ATSC_16_VSB    ((v4l2_std_id)0x02000000)
 2164 
 2165 /* FIXME:
 2166    Although std_id is 64 bits, there is an issue on PPC32 architecture that
 2167    makes switch(u_int64_t) to break. So, there's a hack on v4l2-common.c rounding
 2168    this value to 32 bits.
 2169    As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide),
 2170    it should work fine. However, if needed to add more than two standards,
 2171    v4l2-common.c should be fixed.
 2172  */
 2173 
 2174 /*
 2175  * Some macros to merge video standards in order to make live easier for the
 2176  * drivers and V4L2 applications
 2177  */
 2178 
 2179 /*
 2180  * "Common" NTSC/M - It should be noticed that V4L2_STD_NTSC_443 is
 2181  * Missing here.
 2182  */
 2183 #define V4L2_STD_NTSC           (V4L2_STD_NTSC_M        |\
 2184                                  V4L2_STD_NTSC_M_JP     |\
 2185                                  V4L2_STD_NTSC_M_KR)
 2186 /* Secam macros */
 2187 #define V4L2_STD_SECAM_DK       (V4L2_STD_SECAM_D       |\
 2188                                  V4L2_STD_SECAM_K       |\
 2189                                  V4L2_STD_SECAM_K1)
 2190 /* All Secam Standards */
 2191 #define V4L2_STD_SECAM          (V4L2_STD_SECAM_B       |\
 2192                                  V4L2_STD_SECAM_G       |\
 2193                                  V4L2_STD_SECAM_H       |\
 2194                                  V4L2_STD_SECAM_DK      |\
 2195                                  V4L2_STD_SECAM_L       |\
 2196                                  V4L2_STD_SECAM_LC)
 2197 /* PAL macros */
 2198 #define V4L2_STD_PAL_BG         (V4L2_STD_PAL_B         |\
 2199                                  V4L2_STD_PAL_B1        |\
 2200                                  V4L2_STD_PAL_G)
 2201 #define V4L2_STD_PAL_DK         (V4L2_STD_PAL_D         |\
 2202                                  V4L2_STD_PAL_D1        |\
 2203                                  V4L2_STD_PAL_K)
 2204 /*
 2205  * "Common" PAL - This macro is there to be compatible with the old
 2206  * V4L1 concept of "PAL": /BGDKHI.
 2207  * Several PAL standards are missing here: /M, /N and /Nc
 2208  */
 2209 #define V4L2_STD_PAL            (V4L2_STD_PAL_BG        |\
 2210                                  V4L2_STD_PAL_DK        |\
 2211                                  V4L2_STD_PAL_H         |\
 2212                                  V4L2_STD_PAL_I)
 2213 /* Chroma "agnostic" standards */
 2214 #define V4L2_STD_B              (V4L2_STD_PAL_B         |\
 2215                                  V4L2_STD_PAL_B1        |\
 2216                                  V4L2_STD_SECAM_B)
 2217 #define V4L2_STD_G              (V4L2_STD_PAL_G         |\
 2218                                  V4L2_STD_SECAM_G)
 2219 #define V4L2_STD_H              (V4L2_STD_PAL_H         |\
 2220                                  V4L2_STD_SECAM_H)
 2221 #define V4L2_STD_L              (V4L2_STD_SECAM_L       |\
 2222                                  V4L2_STD_SECAM_LC)
 2223 #define V4L2_STD_GH             (V4L2_STD_G             |\
 2224                                  V4L2_STD_H)
 2225 #define V4L2_STD_DK             (V4L2_STD_PAL_DK        |\
 2226                                  V4L2_STD_SECAM_DK)
 2227 #define V4L2_STD_BG             (V4L2_STD_B             |\
 2228                                  V4L2_STD_G)
 2229 #define V4L2_STD_MN             (V4L2_STD_PAL_M         |\
 2230                                  V4L2_STD_PAL_N         |\
 2231                                  V4L2_STD_PAL_Nc        |\
 2232                                  V4L2_STD_NTSC)
 2233 
 2234 /* Standards where MTS/BTSC stereo could be found */
 2235 #define V4L2_STD_MTS            (V4L2_STD_NTSC_M        |\
 2236                                  V4L2_STD_PAL_M         |\
 2237                                  V4L2_STD_PAL_N         |\
 2238                                  V4L2_STD_PAL_Nc)
 2239 
 2240 /* Standards for Countries with 60Hz Line frequency */
 2241 #define V4L2_STD_525_60         (V4L2_STD_PAL_M         |\
 2242                                  V4L2_STD_PAL_60        |\
 2243                                  V4L2_STD_NTSC          |\
 2244                                  V4L2_STD_NTSC_443)
 2245 /* Standards for Countries with 50Hz Line frequency */
 2246 #define V4L2_STD_625_50         (V4L2_STD_PAL           |\
 2247                                  V4L2_STD_PAL_N         |\
 2248                                  V4L2_STD_PAL_Nc        |\
 2249                                  V4L2_STD_SECAM)
 2250 
 2251 #define V4L2_STD_ATSC           (V4L2_STD_ATSC_8_VSB    |\
 2252                                  V4L2_STD_ATSC_16_VSB)
 2253 /* Macros with none and all analog standards */
 2254 #define V4L2_STD_UNKNOWN        0
 2255 #define V4L2_STD_ALL            (V4L2_STD_525_60        |\
 2256                                  V4L2_STD_625_50)
 2257 
 2258 struct v4l2_standard {
 2259         u_int32_t                    index;
 2260         v4l2_std_id          id;
 2261         u_int8_t                     name[24];
 2262         struct v4l2_fract    frameperiod; /* Frames, not fields */
 2263         u_int32_t                    framelines;
 2264         u_int32_t                    reserved[4];
 2265 };
 2266 
 2267 /*
 2268  *      D V     B T     T I M I N G S
 2269  */
 2270 
 2271 /** struct v4l2_bt_timings - BT.656/BT.1120 timing data
 2272  * @width:      total width of the active video in pixels
 2273  * @height:     total height of the active video in lines
 2274  * @interlaced: Interlaced or progressive
 2275  * @polarities: Positive or negative polarities
 2276  * @pixelclock: Pixel clock in HZ. Ex. 74.25MHz->74250000
 2277  * @hfrontporch:Horizontal front porch in pixels
 2278  * @hsync:      Horizontal Sync length in pixels
 2279  * @hbackporch: Horizontal back porch in pixels
 2280  * @vfrontporch:Vertical front porch in lines
 2281  * @vsync:      Vertical Sync length in lines
 2282  * @vbackporch: Vertical back porch in lines
 2283  * @il_vfrontporch:Vertical front porch for the even field
 2284  *              (aka field 2) of interlaced field formats
 2285  * @il_vsync:   Vertical Sync length for the even field
 2286  *              (aka field 2) of interlaced field formats
 2287  * @il_vbackporch:Vertical back porch for the even field
 2288  *              (aka field 2) of interlaced field formats
 2289  * @standards:  Standards the timing belongs to
 2290  * @flags:      Flags
 2291  * @picture_aspect: The picture aspect ratio (hor/vert).
 2292  * @cea861_vic: VIC code as per the CEA-861 standard.
 2293  * @hdmi_vic:   VIC code as per the HDMI standard.
 2294  * @reserved:   Reserved fields, must be zeroed.
 2295  *
 2296  * A note regarding vertical interlaced timings: height refers to the total
 2297  * height of the active video frame (= two fields). The blanking timings refer
 2298  * to the blanking of each field. So the height of the total frame is
 2299  * calculated as follows:
 2300  *
 2301  * tot_height = height + vfrontporch + vsync + vbackporch +
 2302  *                       il_vfrontporch + il_vsync + il_vbackporch
 2303  *
 2304  * The active height of each field is height / 2.
 2305  */
 2306 struct v4l2_bt_timings {
 2307         u_int32_t       width;
 2308         u_int32_t       height;
 2309         u_int32_t       interlaced;
 2310         u_int32_t       polarities;
 2311         u_int64_t       pixelclock;
 2312         u_int32_t       hfrontporch;
 2313         u_int32_t       hsync;
 2314         u_int32_t       hbackporch;
 2315         u_int32_t       vfrontporch;
 2316         u_int32_t       vsync;
 2317         u_int32_t       vbackporch;
 2318         u_int32_t       il_vfrontporch;
 2319         u_int32_t       il_vsync;
 2320         u_int32_t       il_vbackporch;
 2321         u_int32_t       standards;
 2322         u_int32_t       flags;
 2323         struct v4l2_fract picture_aspect;
 2324         u_int8_t        cea861_vic;
 2325         u_int8_t        hdmi_vic;
 2326         u_int8_t        reserved[46];
 2327 } __packed;
 2328 
 2329 /* Interlaced or progressive format */
 2330 #define V4L2_DV_PROGRESSIVE     0
 2331 #define V4L2_DV_INTERLACED      1
 2332 
 2333 /* Polarities. If bit is not set, it is assumed to be negative polarity */
 2334 #define V4L2_DV_VSYNC_POS_POL   0x00000001
 2335 #define V4L2_DV_HSYNC_POS_POL   0x00000002
 2336 
 2337 /* Timings standards */
 2338 #define V4L2_DV_BT_STD_CEA861   (1 << 0)  /* CEA-861 Digital TV Profile */
 2339 #define V4L2_DV_BT_STD_DMT      (1 << 1)  /* VESA Discrete Monitor Timings */
 2340 #define V4L2_DV_BT_STD_CVT      (1 << 2)  /* VESA Coordinated Video Timings */
 2341 #define V4L2_DV_BT_STD_GTF      (1 << 3)  /* VESA Generalized Timings Formula */
 2342 #define V4L2_DV_BT_STD_SDI      (1 << 4)  /* SDI Timings */
 2343 
 2344 /* Flags */
 2345 
 2346 /*
 2347  * CVT/GTF specific: timing uses reduced blanking (CVT) or the 'Secondary
 2348  * GTF' curve (GTF). In both cases the horizontal and/or vertical blanking
 2349  * intervals are reduced, allowing a higher resolution over the same
 2350  * bandwidth. This is a read-only flag.
 2351  */
 2352 #define V4L2_DV_FL_REDUCED_BLANKING             (1 << 0)
 2353 /*
 2354  * CEA-861 specific: set for CEA-861 formats with a framerate of a multiple
 2355  * of six. These formats can be optionally played at 1 / 1.001 speed.
 2356  * This is a read-only flag.
 2357  */
 2358 #define V4L2_DV_FL_CAN_REDUCE_FPS               (1 << 1)
 2359 /*
 2360  * CEA-861 specific: only valid for video transmitters, the flag is cleared
 2361  * by receivers.
 2362  * If the framerate of the format is a multiple of six, then the pixelclock
 2363  * used to set up the transmitter is divided by 1.001 to make it compatible
 2364  * with 60 Hz based standards such as NTSC and PAL-M that use a framerate of
 2365  * 29.97 Hz. Otherwise this flag is cleared. If the transmitter can't generate
 2366  * such frequencies, then the flag will also be cleared.
 2367  */
 2368 #define V4L2_DV_FL_REDUCED_FPS                  (1 << 2)
 2369 /*
 2370  * Specific to interlaced formats: if set, then field 1 is really one half-line
 2371  * longer and field 2 is really one half-line shorter, so each field has
 2372  * exactly the same number of half-lines. Whether half-lines can be detected
 2373  * or used depends on the hardware.
 2374  */
 2375 #define V4L2_DV_FL_HALF_LINE                    (1 << 3)
 2376 /*
 2377  * If set, then this is a Consumer Electronics (CE) video format. Such formats
 2378  * differ from other formats (commonly called IT formats) in that if RGB
 2379  * encoding is used then by default the RGB values use limited range (i.e.
 2380  * use the range 16-235) as opposed to 0-255. All formats defined in CEA-861
 2381  * except for the 640x480 format are CE formats.
 2382  */
 2383 #define V4L2_DV_FL_IS_CE_VIDEO                  (1 << 4)
 2384 /* Some formats like SMPTE-125M have an interlaced signal with a odd
 2385  * total height. For these formats, if this flag is set, the first
 2386  * field has the extra line. If not, it is the second field.
 2387  */
 2388 #define V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE       (1 << 5)
 2389 /*
 2390  * If set, then the picture_aspect field is valid. Otherwise assume that the
 2391  * pixels are square, so the picture aspect ratio is the same as the width to
 2392  * height ratio.
 2393  */
 2394 #define V4L2_DV_FL_HAS_PICTURE_ASPECT           (1 << 6)
 2395 /*
 2396  * If set, then the cea861_vic field is valid and contains the Video
 2397  * Identification Code as per the CEA-861 standard.
 2398  */
 2399 #define V4L2_DV_FL_HAS_CEA861_VIC               (1 << 7)
 2400 /*
 2401  * If set, then the hdmi_vic field is valid and contains the Video
 2402  * Identification Code as per the HDMI standard (HDMI Vendor Specific
 2403  * InfoFrame).
 2404  */
 2405 #define V4L2_DV_FL_HAS_HDMI_VIC                 (1 << 8)
 2406 
 2407 /* A few useful defines to calculate the total blanking and frame sizes */
 2408 #define V4L2_DV_BT_BLANKING_WIDTH(bt) \
 2409         ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
 2410 #define V4L2_DV_BT_FRAME_WIDTH(bt) \
 2411         ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
 2412 #define V4L2_DV_BT_BLANKING_HEIGHT(bt) \
 2413         ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \
 2414          (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
 2415 #define V4L2_DV_BT_FRAME_HEIGHT(bt) \
 2416         ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
 2417 
 2418 /** struct v4l2_dv_timings - DV timings
 2419  * @type:       the type of the timings
 2420  * @bt: BT656/1120 timings
 2421  */
 2422 struct v4l2_dv_timings {
 2423         u_int32_t type;
 2424         union {
 2425                 struct v4l2_bt_timings  bt;
 2426                 u_int32_t       reserved[32];
 2427         };
 2428 } __packed;
 2429 
 2430 /* Values for the type field */
 2431 #define V4L2_DV_BT_656_1120     0       /* BT.656/1120 timing type */
 2432 
 2433 
 2434 /** struct v4l2_enum_dv_timings - DV timings enumeration
 2435  * @index:      enumeration index
 2436  * @pad:        the pad number for which to enumerate timings (used with
 2437  *              v4l-subdev nodes only)
 2438  * @reserved:   must be zeroed
 2439  * @timings:    the timings for the given index
 2440  */
 2441 struct v4l2_enum_dv_timings {
 2442         u_int32_t index;
 2443         u_int32_t pad;
 2444         u_int32_t reserved[2];
 2445         struct v4l2_dv_timings timings;
 2446 };
 2447 
 2448 /** struct v4l2_bt_timings_cap - BT.656/BT.1120 timing capabilities
 2449  * @min_width:          width in pixels
 2450  * @max_width:          width in pixels
 2451  * @min_height:         height in lines
 2452  * @max_height:         height in lines
 2453  * @min_pixelclock:     Pixel clock in HZ. Ex. 74.25MHz->74250000
 2454  * @max_pixelclock:     Pixel clock in HZ. Ex. 74.25MHz->74250000
 2455  * @standards:          Supported standards
 2456  * @capabilities:       Supported capabilities
 2457  * @reserved:           Must be zeroed
 2458  */
 2459 struct v4l2_bt_timings_cap {
 2460         u_int32_t       min_width;
 2461         u_int32_t       max_width;
 2462         u_int32_t       min_height;
 2463         u_int32_t       max_height;
 2464         u_int64_t       min_pixelclock;
 2465         u_int64_t       max_pixelclock;
 2466         u_int32_t       standards;
 2467         u_int32_t       capabilities;
 2468         u_int32_t       reserved[16];
 2469 } __packed;
 2470 
 2471 /* Supports interlaced formats */
 2472 #define V4L2_DV_BT_CAP_INTERLACED       (1 << 0)
 2473 /* Supports progressive formats */
 2474 #define V4L2_DV_BT_CAP_PROGRESSIVE      (1 << 1)
 2475 /* Supports CVT/GTF reduced blanking */
 2476 #define V4L2_DV_BT_CAP_REDUCED_BLANKING (1 << 2)
 2477 /* Supports custom formats */
 2478 #define V4L2_DV_BT_CAP_CUSTOM           (1 << 3)
 2479 
 2480 /** struct v4l2_dv_timings_cap - DV timings capabilities
 2481  * @type:       the type of the timings (same as in struct v4l2_dv_timings)
 2482  * @pad:        the pad number for which to query capabilities (used with
 2483  *              v4l-subdev nodes only)
 2484  * @bt:         the BT656/1120 timings capabilities
 2485  */
 2486 struct v4l2_dv_timings_cap {
 2487         u_int32_t type;
 2488         u_int32_t pad;
 2489         u_int32_t reserved[2];
 2490         union {
 2491                 struct v4l2_bt_timings_cap bt;
 2492                 u_int32_t raw_data[32];
 2493         };
 2494 };
 2495 
 2496 
 2497 /*
 2498  *      V I D E O   I N P U T S
 2499  */
 2500 struct v4l2_input {
 2501         u_int32_t            index;             /*  Which input */
 2502         u_int8_t             name[32];          /*  Label */
 2503         u_int32_t            type;              /*  Type of input */
 2504         u_int32_t            audioset;          /*  Associated audios (bitfield) */
 2505         u_int32_t        tuner;             /*  enum v4l2_tuner_type */
 2506         v4l2_std_id  std;
 2507         u_int32_t            status;
 2508         u_int32_t            capabilities;
 2509         u_int32_t            reserved[3];
 2510 };
 2511 
 2512 /*  Values for the 'type' field */
 2513 #define V4L2_INPUT_TYPE_TUNER           1
 2514 #define V4L2_INPUT_TYPE_CAMERA          2
 2515 #define V4L2_INPUT_TYPE_TOUCH           3
 2516 
 2517 /* field 'status' - general */
 2518 #define V4L2_IN_ST_NO_POWER    0x00000001  /* Attached device is off */
 2519 #define V4L2_IN_ST_NO_SIGNAL   0x00000002
 2520 #define V4L2_IN_ST_NO_COLOR    0x00000004
 2521 
 2522 /* field 'status' - sensor orientation */
 2523 /* If sensor is mounted upside down set both bits */
 2524 #define V4L2_IN_ST_HFLIP       0x00000010 /* Frames are flipped horizontally */
 2525 #define V4L2_IN_ST_VFLIP       0x00000020 /* Frames are flipped vertically */
 2526 
 2527 /* field 'status' - analog */
 2528 #define V4L2_IN_ST_NO_H_LOCK   0x00000100  /* No horizontal sync lock */
 2529 #define V4L2_IN_ST_COLOR_KILL  0x00000200  /* Color killer is active */
 2530 #define V4L2_IN_ST_NO_V_LOCK   0x00000400  /* No vertical sync lock */
 2531 #define V4L2_IN_ST_NO_STD_LOCK 0x00000800  /* No standard format lock */
 2532 
 2533 /* field 'status' - digital */
 2534 #define V4L2_IN_ST_NO_SYNC     0x00010000  /* No synchronization lock */
 2535 #define V4L2_IN_ST_NO_EQU      0x00020000  /* No equalizer lock */
 2536 #define V4L2_IN_ST_NO_CARRIER  0x00040000  /* Carrier recovery failed */
 2537 
 2538 /* field 'status' - VCR and set-top box */
 2539 #define V4L2_IN_ST_MACROVISION 0x01000000  /* Macrovision detected */
 2540 #define V4L2_IN_ST_NO_ACCESS   0x02000000  /* Conditional access denied */
 2541 #define V4L2_IN_ST_VTR         0x04000000  /* VTR time constant */
 2542 
 2543 /* capabilities flags */
 2544 #define V4L2_IN_CAP_DV_TIMINGS          0x00000002 /* Supports S_DV_TIMINGS */
 2545 #define V4L2_IN_CAP_CUSTOM_TIMINGS      V4L2_IN_CAP_DV_TIMINGS /* For compatibility */
 2546 #define V4L2_IN_CAP_STD                 0x00000004 /* Supports S_STD */
 2547 #define V4L2_IN_CAP_NATIVE_SIZE         0x00000008 /* Supports setting native size */
 2548 
 2549 /*
 2550  *      V I D E O   O U T P U T S
 2551  */
 2552 struct v4l2_output {
 2553         u_int32_t            index;             /*  Which output */
 2554         u_int8_t             name[32];          /*  Label */
 2555         u_int32_t            type;              /*  Type of output */
 2556         u_int32_t            audioset;          /*  Associated audios (bitfield) */
 2557         u_int32_t            modulator;         /*  Associated modulator */
 2558         v4l2_std_id  std;
 2559         u_int32_t            capabilities;
 2560         u_int32_t            reserved[3];
 2561 };
 2562 /*  Values for the 'type' field */
 2563 #define V4L2_OUTPUT_TYPE_MODULATOR              1
 2564 #define V4L2_OUTPUT_TYPE_ANALOG                 2
 2565 #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY       3
 2566 
 2567 /* capabilities flags */
 2568 #define V4L2_OUT_CAP_DV_TIMINGS         0x00000002 /* Supports S_DV_TIMINGS */
 2569 #define V4L2_OUT_CAP_CUSTOM_TIMINGS     V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */
 2570 #define V4L2_OUT_CAP_STD                0x00000004 /* Supports S_STD */
 2571 #define V4L2_OUT_CAP_NATIVE_SIZE        0x00000008 /* Supports setting native size */
 2572 
 2573 /*
 2574  *      C O N T R O L S
 2575  */
 2576 struct v4l2_control {
 2577         u_int32_t                    id;
 2578         int32_t              value;
 2579 };
 2580 
 2581 struct v4l2_ext_control {
 2582         u_int32_t id;
 2583         u_int32_t size;
 2584         u_int32_t reserved2[1];
 2585         union {
 2586                 int32_t value;
 2587                 int64_t value64;
 2588                 char __user *string;
 2589                 u_int8_t __user *p_u8;
 2590                 u_int16_t __user *p_u16;
 2591                 u_int32_t __user *p_u32;
 2592                 void __user *ptr;
 2593         };
 2594 } __packed;
 2595 
 2596 struct v4l2_ext_controls {
 2597         union {
 2598 #ifndef _KERNEL
 2599                 u_int32_t ctrl_class;
 2600 #endif
 2601                 u_int32_t which;
 2602         };
 2603         u_int32_t count;
 2604         u_int32_t error_idx;
 2605         u_int32_t reserved[2];
 2606         struct v4l2_ext_control *controls;
 2607 };
 2608 
 2609 #define V4L2_CTRL_ID_MASK         (0x0fffffff)
 2610 #define V4L2_CTRL_ID2CID(id)    (id & 0xffff)
 2611 #ifndef _KERNEL
 2612 #define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)
 2613 #endif
 2614 #define V4L2_CTRL_ID2WHICH(id)    ((id) & 0x0fff0000UL)
 2615 #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
 2616 #define V4L2_CTRL_MAX_DIMS        (4)
 2617 #define V4L2_CTRL_WHICH_CUR_VAL   0
 2618 #define V4L2_CTRL_WHICH_DEF_VAL   0x0f000000
 2619 
 2620 enum v4l2_ctrl_type {
 2621         V4L2_CTRL_TYPE_INTEGER       = 1,
 2622         V4L2_CTRL_TYPE_BOOLEAN       = 2,
 2623         V4L2_CTRL_TYPE_MENU          = 3,
 2624         V4L2_CTRL_TYPE_BUTTON        = 4,
 2625         V4L2_CTRL_TYPE_INTEGER64     = 5,
 2626         V4L2_CTRL_TYPE_CTRL_CLASS    = 6,
 2627         V4L2_CTRL_TYPE_STRING        = 7,
 2628         V4L2_CTRL_TYPE_BITMASK       = 8,
 2629         V4L2_CTRL_TYPE_INTEGER_MENU  = 9,
 2630 
 2631         /* Compound types are >= 0x0100 */
 2632         V4L2_CTRL_COMPOUND_TYPES     = 0x0100,
 2633         V4L2_CTRL_TYPE_U8            = 0x0100,
 2634         V4L2_CTRL_TYPE_U16           = 0x0101,
 2635         V4L2_CTRL_TYPE_U32           = 0x0102,
 2636 };
 2637 
 2638 /*  Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
 2639 struct v4l2_queryctrl {
 2640         u_int32_t                    id;
 2641         u_int32_t                    type;      /* enum v4l2_ctrl_type */
 2642         u_int8_t                     name[32];  /* Whatever */
 2643         int32_t              minimum;   /* Note signedness */
 2644         int32_t              maximum;
 2645         int32_t              step;
 2646         int32_t              default_value;
 2647         u_int32_t                flags;
 2648         u_int32_t                    reserved[2];
 2649 };
 2650 
 2651 /*  Used in the VIDIOC_QUERY_EXT_CTRL ioctl for querying extended controls */
 2652 struct v4l2_query_ext_ctrl {
 2653         u_int32_t                    id;
 2654         u_int32_t                    type;
 2655         char                 name[32];
 2656         int64_t              minimum;
 2657         int64_t              maximum;
 2658         u_int64_t                    step;
 2659         int64_t              default_value;
 2660         u_int32_t                flags;
 2661         u_int32_t                elem_size;
 2662         u_int32_t                elems;
 2663         u_int32_t                nr_of_dims;
 2664         u_int32_t                dims[V4L2_CTRL_MAX_DIMS];
 2665         u_int32_t                    reserved[32];
 2666 };
 2667 
 2668 /*  Used in the VIDIOC_QUERYMENU ioctl for querying menu items */
 2669 struct v4l2_querymenu {
 2670         u_int32_t               id;
 2671         u_int32_t               index;
 2672         union {
 2673                 u_int8_t        name[32];       /* Whatever */
 2674                 int64_t value;
 2675         };
 2676         u_int32_t               reserved;
 2677 } __packed;
 2678 
 2679 /*  Control flags  */
 2680 #define V4L2_CTRL_FLAG_DISABLED         0x0001
 2681 #define V4L2_CTRL_FLAG_GRABBED          0x0002
 2682 #define V4L2_CTRL_FLAG_READ_ONLY        0x0004
 2683 #define V4L2_CTRL_FLAG_UPDATE           0x0008
 2684 #define V4L2_CTRL_FLAG_INACTIVE         0x0010
 2685 #define V4L2_CTRL_FLAG_SLIDER           0x0020
 2686 #define V4L2_CTRL_FLAG_WRITE_ONLY       0x0040
 2687 #define V4L2_CTRL_FLAG_VOLATILE         0x0080
 2688 #define V4L2_CTRL_FLAG_HAS_PAYLOAD      0x0100
 2689 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 2690 
 2691 /*  Query flags, to be ORed with the control ID */
 2692 #define V4L2_CTRL_FLAG_NEXT_CTRL        0x80000000
 2693 #define V4L2_CTRL_FLAG_NEXT_COMPOUND    0x40000000
 2694 
 2695 /*  User-class control IDs defined by V4L2 */
 2696 #define V4L2_CID_MAX_CTRLS              1024
 2697 /*  IDs reserved for driver specific controls */
 2698 #define V4L2_CID_PRIVATE_BASE           0x08000000
 2699 
 2700 
 2701 /*
 2702  *      T U N I N G
 2703  */
 2704 struct v4l2_tuner {
 2705         u_int32_t                   index;
 2706         u_int8_t                        name[32];
 2707         u_int32_t                       type;   /* enum v4l2_tuner_type */
 2708         u_int32_t                       capability;
 2709         u_int32_t                       rangelow;
 2710         u_int32_t                       rangehigh;
 2711         u_int32_t                       rxsubchans;
 2712         u_int32_t                       audmode;
 2713         int32_t                 signal;
 2714         int32_t                 afc;
 2715         u_int32_t                       reserved[4];
 2716 };
 2717 
 2718 struct v4l2_modulator {
 2719         u_int32_t                       index;
 2720         u_int8_t                        name[32];
 2721         u_int32_t                       capability;
 2722         u_int32_t                       rangelow;
 2723         u_int32_t                       rangehigh;
 2724         u_int32_t                       txsubchans;
 2725         u_int32_t                       type;   /* enum v4l2_tuner_type */
 2726         u_int32_t                       reserved[3];
 2727 };
 2728 
 2729 /*  Flags for the 'capability' field */
 2730 #define V4L2_TUNER_CAP_LOW              0x0001
 2731 #define V4L2_TUNER_CAP_NORM             0x0002
 2732 #define V4L2_TUNER_CAP_HWSEEK_BOUNDED   0x0004
 2733 #define V4L2_TUNER_CAP_HWSEEK_WRAP      0x0008
 2734 #define V4L2_TUNER_CAP_STEREO           0x0010
 2735 #define V4L2_TUNER_CAP_LANG2            0x0020
 2736 #define V4L2_TUNER_CAP_SAP              0x0020
 2737 #define V4L2_TUNER_CAP_LANG1            0x0040
 2738 #define V4L2_TUNER_CAP_RDS              0x0080
 2739 #define V4L2_TUNER_CAP_RDS_BLOCK_IO     0x0100
 2740 #define V4L2_TUNER_CAP_RDS_CONTROLS     0x0200
 2741 #define V4L2_TUNER_CAP_FREQ_BANDS       0x0400
 2742 #define V4L2_TUNER_CAP_HWSEEK_PROG_LIM  0x0800
 2743 #define V4L2_TUNER_CAP_1HZ              0x1000
 2744 
 2745 /*  Flags for the 'rxsubchans' field */
 2746 #define V4L2_TUNER_SUB_MONO             0x0001
 2747 #define V4L2_TUNER_SUB_STEREO           0x0002
 2748 #define V4L2_TUNER_SUB_LANG2            0x0004
 2749 #define V4L2_TUNER_SUB_SAP              0x0004
 2750 #define V4L2_TUNER_SUB_LANG1            0x0008
 2751 #define V4L2_TUNER_SUB_RDS              0x0010
 2752 
 2753 /*  Values for the 'audmode' field */
 2754 #define V4L2_TUNER_MODE_MONO            0x0000
 2755 #define V4L2_TUNER_MODE_STEREO          0x0001
 2756 #define V4L2_TUNER_MODE_LANG2           0x0002
 2757 #define V4L2_TUNER_MODE_SAP             0x0002
 2758 #define V4L2_TUNER_MODE_LANG1           0x0003
 2759 #define V4L2_TUNER_MODE_LANG1_LANG2     0x0004
 2760 
 2761 struct v4l2_frequency {
 2762         u_int32_t       tuner;
 2763         u_int32_t       type;   /* enum v4l2_tuner_type */
 2764         u_int32_t       frequency;
 2765         u_int32_t       reserved[8];
 2766 };
 2767 
 2768 #define V4L2_BAND_MODULATION_VSB        (1 << 1)
 2769 #define V4L2_BAND_MODULATION_FM         (1 << 2)
 2770 #define V4L2_BAND_MODULATION_AM         (1 << 3)
 2771 
 2772 struct v4l2_frequency_band {
 2773         u_int32_t       tuner;
 2774         u_int32_t       type;   /* enum v4l2_tuner_type */
 2775         u_int32_t       index;
 2776         u_int32_t       capability;
 2777         u_int32_t       rangelow;
 2778         u_int32_t       rangehigh;
 2779         u_int32_t       modulation;
 2780         u_int32_t       reserved[9];
 2781 };
 2782 
 2783 struct v4l2_hw_freq_seek {
 2784         u_int32_t       tuner;
 2785         u_int32_t       type;   /* enum v4l2_tuner_type */
 2786         u_int32_t       seek_upward;
 2787         u_int32_t       wrap_around;
 2788         u_int32_t       spacing;
 2789         u_int32_t       rangelow;
 2790         u_int32_t       rangehigh;
 2791         u_int32_t       reserved[5];
 2792 };
 2793 
 2794 /*
 2795  *      R D S
 2796  */
 2797 
 2798 struct v4l2_rds_data {
 2799         u_int8_t        lsb;
 2800         u_int8_t        msb;
 2801         u_int8_t        block;
 2802 } __packed;
 2803 
 2804 #define V4L2_RDS_BLOCK_MSK       0x7
 2805 #define V4L2_RDS_BLOCK_A         0
 2806 #define V4L2_RDS_BLOCK_B         1
 2807 #define V4L2_RDS_BLOCK_C         2
 2808 #define V4L2_RDS_BLOCK_D         3
 2809 #define V4L2_RDS_BLOCK_C_ALT     4
 2810 #define V4L2_RDS_BLOCK_INVALID   7
 2811 
 2812 #define V4L2_RDS_BLOCK_CORRECTED 0x40
 2813 #define V4L2_RDS_BLOCK_ERROR     0x80
 2814 
 2815 /*
 2816  *      A U D I O
 2817  */
 2818 struct v4l2_audio {
 2819         u_int32_t       index;
 2820         u_int8_t        name[32];
 2821         u_int32_t       capability;
 2822         u_int32_t       mode;
 2823         u_int32_t       reserved[2];
 2824 };
 2825 
 2826 /*  Flags for the 'capability' field */
 2827 #define V4L2_AUDCAP_STEREO              0x00001
 2828 #define V4L2_AUDCAP_AVL                 0x00002
 2829 
 2830 /*  Flags for the 'mode' field */
 2831 #define V4L2_AUDMODE_AVL                0x00001
 2832 
 2833 struct v4l2_audioout {
 2834         u_int32_t       index;
 2835         u_int8_t        name[32];
 2836         u_int32_t       capability;
 2837         u_int32_t       mode;
 2838         u_int32_t       reserved[2];
 2839 };
 2840 
 2841 /*
 2842  *      M P E G   S E R V I C E S
 2843  */
 2844 #if 1
 2845 #define V4L2_ENC_IDX_FRAME_I    (0)
 2846 #define V4L2_ENC_IDX_FRAME_P    (1)
 2847 #define V4L2_ENC_IDX_FRAME_B    (2)
 2848 #define V4L2_ENC_IDX_FRAME_MASK (0xf)
 2849 
 2850 struct v4l2_enc_idx_entry {
 2851         u_int64_t offset;
 2852         u_int64_t pts;
 2853         u_int32_t length;
 2854         u_int32_t flags;
 2855         u_int32_t reserved[2];
 2856 };
 2857 
 2858 #define V4L2_ENC_IDX_ENTRIES (64)
 2859 struct v4l2_enc_idx {
 2860         u_int32_t entries;
 2861         u_int32_t entries_cap;
 2862         u_int32_t reserved[4];
 2863         struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
 2864 };
 2865 
 2866 
 2867 #define V4L2_ENC_CMD_START      (0)
 2868 #define V4L2_ENC_CMD_STOP       (1)
 2869 #define V4L2_ENC_CMD_PAUSE      (2)
 2870 #define V4L2_ENC_CMD_RESUME     (3)
 2871 
 2872 /* Flags for V4L2_ENC_CMD_STOP */
 2873 #define V4L2_ENC_CMD_STOP_AT_GOP_END    (1 << 0)
 2874 
 2875 struct v4l2_encoder_cmd {
 2876         u_int32_t cmd;
 2877         u_int32_t flags;
 2878         union {
 2879                 struct {
 2880                         u_int32_t data[8];
 2881                 } raw;
 2882         };
 2883 };
 2884 
 2885 /* Decoder commands */
 2886 #define V4L2_DEC_CMD_START       (0)
 2887 #define V4L2_DEC_CMD_STOP        (1)
 2888 #define V4L2_DEC_CMD_PAUSE       (2)
 2889 #define V4L2_DEC_CMD_RESUME      (3)
 2890 
 2891 /* Flags for V4L2_DEC_CMD_START */
 2892 #define V4L2_DEC_CMD_START_MUTE_AUDIO   (1 << 0)
 2893 
 2894 /* Flags for V4L2_DEC_CMD_PAUSE */
 2895 #define V4L2_DEC_CMD_PAUSE_TO_BLACK     (1 << 0)
 2896 
 2897 /* Flags for V4L2_DEC_CMD_STOP */
 2898 #define V4L2_DEC_CMD_STOP_TO_BLACK      (1 << 0)
 2899 #define V4L2_DEC_CMD_STOP_IMMEDIATELY   (1 << 1)
 2900 
 2901 /* Play format requirements (returned by the driver): */
 2902 
 2903 /* The decoder has no special format requirements */
 2904 #define V4L2_DEC_START_FMT_NONE         (0)
 2905 /* The decoder requires full GOPs */
 2906 #define V4L2_DEC_START_FMT_GOP          (1)
 2907 
 2908 /* The structure must be zeroed before use by the application
 2909    This ensures it can be extended safely in the future. */
 2910 struct v4l2_decoder_cmd {
 2911         u_int32_t cmd;
 2912         u_int32_t flags;
 2913         union {
 2914                 struct {
 2915                         u_int64_t pts;
 2916                 } stop;
 2917 
 2918                 struct {
 2919                         /* 0 or 1000 specifies normal speed,
 2920                            1 specifies forward single stepping,
 2921                            -1 specifies backward single stepping,
 2922                            >1: playback at speed/1000 of the normal speed,
 2923                            <-1: reverse playback at (-speed/1000) of the normal speed. */
 2924                         int32_t speed;
 2925                         u_int32_t format;
 2926                 } start;
 2927 
 2928                 struct {
 2929                         u_int32_t data[16];
 2930                 } raw;
 2931         };
 2932 };
 2933 #endif
 2934 
 2935 
 2936 /*
 2937  *      D A T A   S E R V I C E S   ( V B I )
 2938  *
 2939  *      Data services API by Michael Schimek
 2940  */
 2941 
 2942 /* Raw VBI */
 2943 struct v4l2_vbi_format {
 2944         u_int32_t       sampling_rate;          /* in 1 Hz */
 2945         u_int32_t       offset;
 2946         u_int32_t       samples_per_line;
 2947         u_int32_t       sample_format;          /* V4L2_PIX_FMT_* */
 2948         int32_t start[2];
 2949         u_int32_t       count[2];
 2950         u_int32_t       flags;                  /* V4L2_VBI_* */
 2951         u_int32_t       reserved[2];            /* must be zero */
 2952 };
 2953 
 2954 /*  VBI flags  */
 2955 #define V4L2_VBI_UNSYNC         (1 << 0)
 2956 #define V4L2_VBI_INTERLACED     (1 << 1)
 2957 
 2958 /* ITU-R start lines for each field */
 2959 #define V4L2_VBI_ITU_525_F1_START (1)
 2960 #define V4L2_VBI_ITU_525_F2_START (264)
 2961 #define V4L2_VBI_ITU_625_F1_START (1)
 2962 #define V4L2_VBI_ITU_625_F2_START (314)
 2963 
 2964 /* Sliced VBI
 2965  *
 2966  *    This implements is a proposal V4L2 API to allow SLICED VBI
 2967  * required for some hardware encoders. It should change without
 2968  * notice in the definitive implementation.
 2969  */
 2970 
 2971 struct v4l2_sliced_vbi_format {
 2972         u_int16_t   service_set;
 2973         /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field
 2974            service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field
 2975                                  (equals frame lines 313-336 for 625 line video
 2976                                   standards, 263-286 for 525 line standards) */
 2977         u_int16_t   service_lines[2][24];
 2978         u_int32_t   io_size;
 2979         u_int32_t   reserved[2];            /* must be zero */
 2980 };
 2981 
 2982 /* Teletext World System Teletext
 2983    (WST), defined on ITU-R BT.653-2 */
 2984 #define V4L2_SLICED_TELETEXT_B          (0x0001)
 2985 /* Video Program System, defined on ETS 300 231*/
 2986 #define V4L2_SLICED_VPS                 (0x0400)
 2987 /* Closed Caption, defined on EIA-608 */
 2988 #define V4L2_SLICED_CAPTION_525         (0x1000)
 2989 /* Wide Screen System, defined on ITU-R BT1119.1 */
 2990 #define V4L2_SLICED_WSS_625             (0x4000)
 2991 
 2992 #define V4L2_SLICED_VBI_525             (V4L2_SLICED_CAPTION_525)
 2993 #define V4L2_SLICED_VBI_625             (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
 2994 
 2995 struct v4l2_sliced_vbi_cap {
 2996         u_int16_t   service_set;
 2997         /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field
 2998            service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field
 2999                                  (equals frame lines 313-336 for 625 line video
 3000                                   standards, 263-286 for 525 line standards) */
 3001         u_int16_t   service_lines[2][24];
 3002         u_int32_t       type;           /* enum v4l2_buf_type */
 3003         u_int32_t   reserved[3];    /* must be 0 */
 3004 };
 3005 
 3006 struct v4l2_sliced_vbi_data {
 3007         u_int32_t   id;
 3008         u_int32_t   field;          /* 0: first field, 1: second field */
 3009         u_int32_t   line;           /* 1-23 */
 3010         u_int32_t   reserved;       /* must be 0 */
 3011         u_int8_t    data[48];
 3012 };
 3013 
 3014 /*
 3015  * Sliced VBI data inserted into MPEG Streams
 3016  */
 3017 
 3018 /*
 3019  * V4L2_MPEG_STREAM_VBI_FMT_IVTV:
 3020  *
 3021  * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an
 3022  * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI
 3023  * data
 3024  *
 3025  * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header
 3026  * definitions are not included here.  See the MPEG-2 specifications for details
 3027  * on these headers.
 3028  */
 3029 
 3030 /* Line type IDs */
 3031 #define V4L2_MPEG_VBI_IVTV_TELETEXT_B     (1)
 3032 #define V4L2_MPEG_VBI_IVTV_CAPTION_525    (4)
 3033 #define V4L2_MPEG_VBI_IVTV_WSS_625        (5)
 3034 #define V4L2_MPEG_VBI_IVTV_VPS            (7)
 3035 
 3036 struct v4l2_mpeg_vbi_itv0_line {
 3037         u_int8_t id;    /* One of V4L2_MPEG_VBI_IVTV_* above */
 3038         u_int8_t data[42];      /* Sliced VBI data for the line */
 3039 } __packed;
 3040 
 3041 struct v4l2_mpeg_vbi_itv0 {
 3042         u_int32_t linemask[2]; /* Bitmasks of VBI service lines present */
 3043         struct v4l2_mpeg_vbi_itv0_line line[35];
 3044 } __packed;
 3045 
 3046 struct v4l2_mpeg_vbi_ITV0 {
 3047         struct v4l2_mpeg_vbi_itv0_line line[36];
 3048 } __packed;
 3049 
 3050 #define V4L2_MPEG_VBI_IVTV_MAGIC0       "itv0"
 3051 #define V4L2_MPEG_VBI_IVTV_MAGIC1       "ITV0"
 3052 
 3053 struct v4l2_mpeg_vbi_fmt_ivtv {
 3054         u_int8_t magic[4];
 3055         union {
 3056                 struct v4l2_mpeg_vbi_itv0 itv0;
 3057                 struct v4l2_mpeg_vbi_ITV0 ITV0;
 3058         };
 3059 } __packed;
 3060 
 3061 /*
 3062  *      A G G R E G A T E   S T R U C T U R E S
 3063  */
 3064 
 3065 /**
 3066  * struct v4l2_plane_pix_format - additional, per-plane format definition
 3067  * @sizeimage:          maximum size in bytes required for data, for which
 3068  *                      this plane will be used
 3069  * @bytesperline:       distance in bytes between the leftmost pixels in two
 3070  *                      adjacent lines
 3071  */
 3072 struct v4l2_plane_pix_format {
 3073         u_int32_t               sizeimage;
 3074         u_int32_t               bytesperline;
 3075         u_int16_t               reserved[6];
 3076 } __packed;
 3077 
 3078 /**
 3079  * struct v4l2_pix_format_mplane - multiplanar format definition
 3080  * @width:              image width in pixels
 3081  * @height:             image height in pixels
 3082  * @pixelformat:        little endian four character code (fourcc)
 3083  * @field:              enum v4l2_field; field order (for interlaced video)
 3084  * @colorspace:         enum v4l2_colorspace; supplemental to pixelformat
 3085  * @plane_fmt:          per-plane information
 3086  * @num_planes:         number of planes for this format
 3087  * @flags:              format flags (V4L2_PIX_FMT_FLAG_*)
 3088  * @ycbcr_enc:          enum v4l2_ycbcr_encoding, Y'CbCr encoding
 3089  * @quantization:       enum v4l2_quantization, colorspace quantization
 3090  * @xfer_func:          enum v4l2_xfer_func, colorspace transfer function
 3091  */
 3092 struct v4l2_pix_format_mplane {
 3093         u_int32_t                               width;
 3094         u_int32_t                               height;
 3095         u_int32_t                               pixelformat;
 3096         u_int32_t                               field;
 3097         u_int32_t                               colorspace;
 3098 
 3099         struct v4l2_plane_pix_format    plane_fmt[VIDEO_MAX_PLANES];
 3100         u_int8_t                                num_planes;
 3101         u_int8_t                                flags;
 3102          union {
 3103                 u_int8_t                                ycbcr_enc;
 3104                 u_int8_t                                hsv_enc;
 3105         };
 3106         u_int8_t                                quantization;
 3107         u_int8_t                                xfer_func;
 3108         u_int8_t                                reserved[7];
 3109 } __packed;
 3110 
 3111 /**
 3112  * struct v4l2_sdr_format - SDR format definition
 3113  * @pixelformat:        little endian four character code (fourcc)
 3114  * @buffersize:         maximum size in bytes required for data
 3115  */
 3116 struct v4l2_sdr_format {
 3117         u_int32_t                               pixelformat;
 3118         u_int32_t                               buffersize;
 3119         u_int8_t                                reserved[24];
 3120 } __packed;
 3121 
 3122 /**
 3123  * struct v4l2_format - stream data format
 3124  * @type:       enum v4l2_buf_type; type of the data stream
 3125  * @pix:        definition of an image format
 3126  * @pix_mp:     definition of a multiplanar image format
 3127  * @win:        definition of an overlaid image
 3128  * @vbi:        raw VBI capture or output parameters
 3129  * @sliced:     sliced VBI capture or output parameters
 3130  * @raw_data:   placeholder for future extensions and custom formats
 3131  */
 3132 struct v4l2_format {
 3133         u_int32_t        type;
 3134         union {
 3135                 struct v4l2_pix_format          pix;     /* V4L2_BUF_TYPE_VIDEO_CAPTURE */
 3136                 struct v4l2_pix_format_mplane   pix_mp;  /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */
 3137                 struct v4l2_window              win;     /* V4L2_BUF_TYPE_VIDEO_OVERLAY */
 3138                 struct v4l2_vbi_format          vbi;     /* V4L2_BUF_TYPE_VBI_CAPTURE */
 3139                 struct v4l2_sliced_vbi_format   sliced;  /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */
 3140                 struct v4l2_sdr_format          sdr;     /* V4L2_BUF_TYPE_SDR_CAPTURE */
 3141                 u_int8_t        raw_data[200];                   /* user-defined */
 3142         } fmt;
 3143 };
 3144 
 3145 /*      Stream type-dependent parameters
 3146  */
 3147 struct v4l2_streamparm {
 3148         u_int32_t        type;                  /* enum v4l2_buf_type */
 3149         union {
 3150                 struct v4l2_captureparm capture;
 3151                 struct v4l2_outputparm  output;
 3152                 u_int8_t        raw_data[200];  /* user-defined */
 3153         } parm;
 3154 };
 3155 
 3156 /*
 3157  *      E V E N T S
 3158  */
 3159 
 3160 #define V4L2_EVENT_ALL                          0
 3161 #define V4L2_EVENT_VSYNC                        1
 3162 #define V4L2_EVENT_EOS                          2
 3163 #define V4L2_EVENT_CTRL                         3
 3164 #define V4L2_EVENT_FRAME_SYNC                   4
 3165 #define V4L2_EVENT_SOURCE_CHANGE                5
 3166 #define V4L2_EVENT_MOTION_DET                   6
 3167 #define V4L2_EVENT_PRIVATE_START                0x08000000
 3168 
 3169 /* Payload for V4L2_EVENT_VSYNC */
 3170 struct v4l2_event_vsync {
 3171         /* Can be V4L2_FIELD_ANY, _NONE, _TOP or _BOTTOM */
 3172         u_int8_t field;
 3173 } __packed;
 3174 
 3175 /* Payload for V4L2_EVENT_CTRL */
 3176 #define V4L2_EVENT_CTRL_CH_VALUE                (1 << 0)
 3177 #define V4L2_EVENT_CTRL_CH_FLAGS                (1 << 1)
 3178 #define V4L2_EVENT_CTRL_CH_RANGE                (1 << 2)
 3179 
 3180 struct v4l2_event_ctrl {
 3181         u_int32_t changes;
 3182         u_int32_t type;
 3183         union {
 3184                 int32_t value;
 3185                 int64_t value64;
 3186         };
 3187         u_int32_t flags;
 3188         int32_t minimum;
 3189         int32_t maximum;
 3190         int32_t step;
 3191         int32_t default_value;
 3192 };
 3193 
 3194 struct v4l2_event_frame_sync {
 3195         u_int32_t frame_sequence;
 3196 };
 3197 
 3198 #define V4L2_EVENT_SRC_CH_RESOLUTION            (1 << 0)
 3199 
 3200 struct v4l2_event_src_change {
 3201         u_int32_t changes;
 3202 };
 3203 
 3204 #define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ (1 << 0)
 3205 
 3206 /**
 3207  * struct v4l2_event_motion_det - motion detection event
 3208  * @flags:             if V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ is set, then the
 3209  *                     frame_sequence field is valid.
 3210  * @frame_sequence:    the frame sequence number associated with this event.
 3211  * @region_mask:       which regions detected motion.
 3212  */
 3213 struct v4l2_event_motion_det {
 3214         u_int32_t flags;
 3215         u_int32_t frame_sequence;
 3216         u_int32_t region_mask;
 3217 };
 3218 
 3219 struct v4l2_event {
 3220         u_int32_t                               type;
 3221         union {
 3222                 struct v4l2_event_vsync         vsync;
 3223                 struct v4l2_event_ctrl          ctrl;
 3224                 struct v4l2_event_frame_sync    frame_sync;
 3225                 struct v4l2_event_src_change    src_change;
 3226                 struct v4l2_event_motion_det    motion_det;
 3227                 u_int8_t                                data[64];
 3228         } u;
 3229         u_int32_t                               pending;
 3230         u_int32_t                               sequence;
 3231         struct timespec                 timestamp;
 3232         u_int32_t                               id;
 3233         u_int32_t                               reserved[8];
 3234 };
 3235 
 3236 #define V4L2_EVENT_SUB_FL_SEND_INITIAL          (1 << 0)
 3237 #define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK        (1 << 1)
 3238 
 3239 struct v4l2_event_subscription {
 3240         u_int32_t                               type;
 3241         u_int32_t                               id;
 3242         u_int32_t                               flags;
 3243         u_int32_t                               reserved[5];
 3244 };
 3245 
 3246 /*
 3247  *      A D V A N C E D   D E B U G G I N G
 3248  *
 3249  *      NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS!
 3250  *      FOR DEBUGGING, TESTING AND INTERNAL USE ONLY!
 3251  */
 3252 
 3253 /* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */
 3254 
 3255 #define V4L2_CHIP_MATCH_BRIDGE      0  /* Match against chip ID on the bridge (0 for the bridge) */
 3256 #define V4L2_CHIP_MATCH_SUBDEV      4  /* Match against subdev index */
 3257 
 3258 /* The following four defines are no longer in use */
 3259 #define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE
 3260 #define V4L2_CHIP_MATCH_I2C_DRIVER  1  /* Match against I2C driver name */
 3261 #define V4L2_CHIP_MATCH_I2C_ADDR    2  /* Match against I2C 7-bit address */
 3262 #define V4L2_CHIP_MATCH_AC97        3  /* Match against ancillary AC97 chip */
 3263 
 3264 struct v4l2_dbg_match {
 3265         u_int32_t type; /* Match type */
 3266         union {     /* Match this chip, meaning determined by type */
 3267                 u_int32_t addr;
 3268                 char name[32];
 3269         };
 3270 } __packed;
 3271 
 3272 struct v4l2_dbg_register {
 3273         struct v4l2_dbg_match match;
 3274         u_int32_t size; /* register size in bytes */
 3275         u_int64_t reg;
 3276         u_int64_t val;
 3277 } __packed;
 3278 
 3279 #define V4L2_CHIP_FL_READABLE (1 << 0)
 3280 #define V4L2_CHIP_FL_WRITABLE (1 << 1)
 3281 
 3282 /* VIDIOC_DBG_G_CHIP_INFO */
 3283 struct v4l2_dbg_chip_info {
 3284         struct v4l2_dbg_match match;
 3285         char name[32];
 3286         u_int32_t flags;
 3287         u_int32_t reserved[32];
 3288 } __packed;
 3289 
 3290 /**
 3291  * struct v4l2_create_buffers - VIDIOC_CREATE_BUFS argument
 3292  * @index:      on return, index of the first created buffer
 3293  * @count:      entry: number of requested buffers,
 3294  *              return: number of created buffers
 3295  * @memory:     enum v4l2_memory; buffer memory type
 3296  * @format:     frame format, for which buffers are requested
 3297  * @reserved:   future extensions
 3298  */
 3299 struct v4l2_create_buffers {
 3300         u_int32_t                       index;
 3301         u_int32_t                       count;
 3302         u_int32_t                       memory;
 3303         struct v4l2_format      format;
 3304         u_int32_t                       reserved[8];
 3305 };
 3306 
 3307 /*
 3308  *      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
 3309  *
 3310  */
 3311 #define VIDIOC_QUERYCAP          _IOR('V',  0, struct v4l2_capability)
 3312 #define VIDIOC_RESERVED           _IO('V',  1)
 3313 #define VIDIOC_ENUM_FMT         _IOWR('V',  2, struct v4l2_fmtdesc)
 3314 #define VIDIOC_G_FMT            _IOWR('V',  4, struct v4l2_format)
 3315 #define VIDIOC_S_FMT            _IOWR('V',  5, struct v4l2_format)
 3316 #define VIDIOC_REQBUFS          _IOWR('V',  8, struct v4l2_requestbuffers)
 3317 #define VIDIOC_QUERYBUF         _IOWR('V',  9, struct v4l2_buffer)
 3318 #define VIDIOC_G_FBUF            _IOR('V', 10, struct v4l2_framebuffer)
 3319 #define VIDIOC_S_FBUF            _IOW('V', 11, struct v4l2_framebuffer)
 3320 #define VIDIOC_OVERLAY           _IOW('V', 14, int)
 3321 #define VIDIOC_QBUF             _IOWR('V', 15, struct v4l2_buffer)
 3322 #define VIDIOC_EXPBUF           _IOWR('V', 16, struct v4l2_exportbuffer)
 3323 #define VIDIOC_DQBUF            _IOWR('V', 17, struct v4l2_buffer)
 3324 #define VIDIOC_STREAMON          _IOW('V', 18, int)
 3325 #define VIDIOC_STREAMOFF         _IOW('V', 19, int)
 3326 #define VIDIOC_G_PARM           _IOWR('V', 21, struct v4l2_streamparm)
 3327 #define VIDIOC_S_PARM           _IOWR('V', 22, struct v4l2_streamparm)
 3328 #define VIDIOC_G_STD             _IOR('V', 23, v4l2_std_id)
 3329 #define VIDIOC_S_STD             _IOW('V', 24, v4l2_std_id)
 3330 #define VIDIOC_ENUMSTD          _IOWR('V', 25, struct v4l2_standard)
 3331 #define VIDIOC_ENUMINPUT        _IOWR('V', 26, struct v4l2_input)
 3332 #define VIDIOC_G_CTRL           _IOWR('V', 27, struct v4l2_control)
 3333 #define VIDIOC_S_CTRL           _IOWR('V', 28, struct v4l2_control)
 3334 #define VIDIOC_G_TUNER          _IOWR('V', 29, struct v4l2_tuner)
 3335 #define VIDIOC_S_TUNER           _IOW('V', 30, struct v4l2_tuner)
 3336 #define VIDIOC_G_AUDIO           _IOR('V', 33, struct v4l2_audio)
 3337 #define VIDIOC_S_AUDIO           _IOW('V', 34, struct v4l2_audio)
 3338 #define VIDIOC_QUERYCTRL        _IOWR('V', 36, struct v4l2_queryctrl)
 3339 #define VIDIOC_QUERYMENU        _IOWR('V', 37, struct v4l2_querymenu)
 3340 #define VIDIOC_G_INPUT           _IOR('V', 38, int)
 3341 #define VIDIOC_S_INPUT          _IOWR('V', 39, int)
 3342 #define VIDIOC_G_EDID           _IOWR('V', 40, struct v4l2_edid)
 3343 #define VIDIOC_S_EDID           _IOWR('V', 41, struct v4l2_edid)
 3344 #define VIDIOC_G_OUTPUT          _IOR('V', 46, int)
 3345 #define VIDIOC_S_OUTPUT         _IOWR('V', 47, int)
 3346 #define VIDIOC_ENUMOUTPUT       _IOWR('V', 48, struct v4l2_output)
 3347 #define VIDIOC_G_AUDOUT          _IOR('V', 49, struct v4l2_audioout)
 3348 #define VIDIOC_S_AUDOUT          _IOW('V', 50, struct v4l2_audioout)
 3349 #define VIDIOC_G_MODULATOR      _IOWR('V', 54, struct v4l2_modulator)
 3350 #define VIDIOC_S_MODULATOR       _IOW('V', 55, struct v4l2_modulator)
 3351 #define VIDIOC_G_FREQUENCY      _IOWR('V', 56, struct v4l2_frequency)
 3352 #define VIDIOC_S_FREQUENCY       _IOW('V', 57, struct v4l2_frequency)
 3353 #define VIDIOC_CROPCAP          _IOWR('V', 58, struct v4l2_cropcap)
 3354 #define VIDIOC_G_CROP           _IOWR('V', 59, struct v4l2_crop)
 3355 #define VIDIOC_S_CROP            _IOW('V', 60, struct v4l2_crop)
 3356 #define VIDIOC_G_JPEGCOMP        _IOR('V', 61, struct v4l2_jpegcompression)
 3357 #define VIDIOC_S_JPEGCOMP        _IOW('V', 62, struct v4l2_jpegcompression)
 3358 #define VIDIOC_QUERYSTD          _IOR('V', 63, v4l2_std_id)
 3359 #define VIDIOC_TRY_FMT          _IOWR('V', 64, struct v4l2_format)
 3360 #define VIDIOC_ENUMAUDIO        _IOWR('V', 65, struct v4l2_audio)
 3361 #define VIDIOC_ENUMAUDOUT       _IOWR('V', 66, struct v4l2_audioout)
 3362 #define VIDIOC_G_PRIORITY        _IOR('V', 67, u_int32_t) /* enum v4l2_priority */
 3363 #define VIDIOC_S_PRIORITY        _IOW('V', 68, u_int32_t) /* enum v4l2_priority */
 3364 #define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)
 3365 #define VIDIOC_LOG_STATUS         _IO('V', 70)
 3366 #define VIDIOC_G_EXT_CTRLS      _IOWR('V', 71, struct v4l2_ext_controls)
 3367 #define VIDIOC_S_EXT_CTRLS      _IOWR('V', 72, struct v4l2_ext_controls)
 3368 #define VIDIOC_TRY_EXT_CTRLS    _IOWR('V', 73, struct v4l2_ext_controls)
 3369 #define VIDIOC_ENUM_FRAMESIZES  _IOWR('V', 74, struct v4l2_frmsizeenum)
 3370 #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
 3371 #define VIDIOC_G_ENC_INDEX       _IOR('V', 76, struct v4l2_enc_idx)
 3372 #define VIDIOC_ENCODER_CMD      _IOWR('V', 77, struct v4l2_encoder_cmd)
 3373 #define VIDIOC_TRY_ENCODER_CMD  _IOWR('V', 78, struct v4l2_encoder_cmd)
 3374 
 3375 /*
 3376  * Experimental, meant for debugging, testing and internal use.
 3377  * Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.
 3378  * You must be root to use these ioctls. Never use these in applications!
 3379  */
 3380 #define VIDIOC_DBG_S_REGISTER    _IOW('V', 79, struct v4l2_dbg_register)
 3381 #define VIDIOC_DBG_G_REGISTER   _IOWR('V', 80, struct v4l2_dbg_register)
 3382 
 3383 #define VIDIOC_S_HW_FREQ_SEEK    _IOW('V', 82, struct v4l2_hw_freq_seek)
 3384 #define VIDIOC_S_DV_TIMINGS     _IOWR('V', 87, struct v4l2_dv_timings)
 3385 #define VIDIOC_G_DV_TIMINGS     _IOWR('V', 88, struct v4l2_dv_timings)
 3386 #define VIDIOC_DQEVENT           _IOR('V', 89, struct v4l2_event)
 3387 #define VIDIOC_SUBSCRIBE_EVENT   _IOW('V', 90, struct v4l2_event_subscription)
 3388 #define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)
 3389 #define VIDIOC_CREATE_BUFS      _IOWR('V', 92, struct v4l2_create_buffers)
 3390 #define VIDIOC_PREPARE_BUF      _IOWR('V', 93, struct v4l2_buffer)
 3391 #define VIDIOC_G_SELECTION      _IOWR('V', 94, struct v4l2_selection)
 3392 #define VIDIOC_S_SELECTION      _IOWR('V', 95, struct v4l2_selection)
 3393 #define VIDIOC_DECODER_CMD      _IOWR('V', 96, struct v4l2_decoder_cmd)
 3394 #define VIDIOC_TRY_DECODER_CMD  _IOWR('V', 97, struct v4l2_decoder_cmd)
 3395 #define VIDIOC_ENUM_DV_TIMINGS  _IOWR('V', 98, struct v4l2_enum_dv_timings)
 3396 #define VIDIOC_QUERY_DV_TIMINGS  _IOR('V', 99, struct v4l2_dv_timings)
 3397 #define VIDIOC_DV_TIMINGS_CAP   _IOWR('V', 100, struct v4l2_dv_timings_cap)
 3398 #define VIDIOC_ENUM_FREQ_BANDS  _IOWR('V', 101, struct v4l2_frequency_band)
 3399 
 3400 /*
 3401  * Experimental, meant for debugging, testing and internal use.
 3402  * Never use this in applications!
 3403  */
 3404 #define VIDIOC_DBG_G_CHIP_INFO  _IOWR('V', 102, struct v4l2_dbg_chip_info)
 3405 
 3406 #define VIDIOC_QUERY_EXT_CTRL   _IOWR('V', 103, struct v4l2_query_ext_ctrl)
 3407 
 3408 /* Reminder: when adding new ioctls please add support for them to
 3409    drivers/media/v4l2-core/v4l2-compat-ioctl32.c as well! */
 3410 
 3411 #define BASE_VIDIOC_PRIVATE     192             /* 192-255 are private */
 3412 
 3413 #ifdef _KERNEL
 3414 #define VIDIOC_QUERYBUF50       _IOWR('V', 9, struct v4l2_buffer50)
 3415 #define VIDIOC_QBUF50           _IOWR('V', 15, struct v4l2_buffer50)
 3416 #define VIDIOC_DQBUF50          _IOWR('V', 17, struct v4l2_buffer50)
 3417 #endif
 3418 
 3419 #endif /* _SYS_VIDEOIO_H */

Cache object: 409f89b32e4e9f7c91963f182d8f908d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.