Show a patch.

GET /api/1.1/patches/245/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 245,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/245/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/245/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20190115231909.19893-2-kieran.bingham@ideasonboard.com>",
    "date": "2019-01-15T23:19:07",
    "name": "[libcamera-devel,v3,1/3] include: linux: Import videodev2.h from Linux v4.19",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "55f0501e756538ad84411e5d46597e50378864bb",
    "submitter": {
        "id": 4,
        "url": "https://patchwork.libcamera.org/api/1.1/people/4/?format=api",
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/245/mbox/",
    "series": [
        {
            "id": 83,
            "url": "https://patchwork.libcamera.org/api/1.1/series/83/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=83",
            "date": "2019-01-15T23:19:06",
            "name": "V4L2Device: Add basic V4L2 support class",
            "version": 3,
            "mbox": "https://patchwork.libcamera.org/series/83/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/245/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/245/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<kieran.bingham@ideasonboard.com>",
        "Received": [
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 83CAD60C6A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 16 Jan 2019 00:19:14 +0100 (CET)",
            "from localhost.localdomain\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id D0F4A55C;\n\tWed, 16 Jan 2019 00:19:13 +0100 (CET)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1547594354;\n\tbh=FePNPwSOlZFMnf+A5Ug8joXZfThSoeSB0Q8uhyB+uHg=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=DmpC+eLp4T3M8hWsuruAENRPRuzi8ZCoGfv+6QHtCUS/6/tnGr/NiYDI1Nvy4CL1z\n\tddUbJGFfK43NXorI++C0mp1LM3jxcRoPblwG/Fb2pDmPr++zp+z6xWS72/EXKRXlBp\n\t5wFoHBMHcOkKFB0Jr6fHmeICg0CaQNui2coMjh8c=",
        "From": "Kieran Bingham <kieran.bingham@ideasonboard.com>",
        "To": "LibCamera Devel <libcamera-devel@lists.libcamera.org>",
        "Date": "Tue, 15 Jan 2019 23:19:07 +0000",
        "Message-Id": "<20190115231909.19893-2-kieran.bingham@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20190115231909.19893-1-kieran.bingham@ideasonboard.com>",
        "References": "<20190115231909.19893-1-kieran.bingham@ideasonboard.com>",
        "Subject": "[libcamera-devel] [PATCH v3 1/3] include: linux: Import videodev2.h\n\tfrom Linux v4.19",
        "X-BeenThere": "libcamera-devel@lists.libcamera.org",
        "X-Mailman-Version": "2.1.23",
        "Precedence": "list",
        "List-Id": "<libcamera-devel.lists.libcamera.org>",
        "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>",
        "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>",
        "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>",
        "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>",
        "X-List-Received-Date": "Tue, 15 Jan 2019 23:19:14 -0000"
    },
    "content": "Import the linux/videodev2.h from the installed linux kernel headers.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n include/linux/videodev2.h | 2412 +++++++++++++++++++++++++++++++++++++\n 1 file changed, 2412 insertions(+)\n create mode 100644 include/linux/videodev2.h",
    "diff": "diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h\nnew file mode 100644\nindex 000000000000..1a95662f5ad0\n--- /dev/null\n+++ b/include/linux/videodev2.h\n@@ -0,0 +1,2412 @@\n+/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */\n+/*\n+ *  Video for Linux Two header file\n+ *\n+ *  Copyright (C) 1999-2012 the contributors\n+ *\n+ *  This program is free software; you can redistribute it and/or modify\n+ *  it under the terms of the GNU General Public License as published by\n+ *  the Free Software Foundation; either version 2 of the License, or\n+ *  (at your option) any later version.\n+ *\n+ *  This program is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  Alternatively you can redistribute this file under the terms of the\n+ *  BSD license as stated below:\n+ *\n+ *  Redistribution and use in source and binary forms, with or without\n+ *  modification, are permitted provided that the following conditions\n+ *  are met:\n+ *  1. Redistributions of source code must retain the above copyright\n+ *     notice, this list of conditions and the following disclaimer.\n+ *  2. Redistributions in binary form must reproduce the above copyright\n+ *     notice, this list of conditions and the following disclaimer in\n+ *     the documentation and/or other materials provided with the\n+ *     distribution.\n+ *  3. The names of its contributors may not be used to endorse or promote\n+ *     products derived from this software without specific prior written\n+ *     permission.\n+ *\n+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ *  \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ *\tHeader file for v4l or V4L2 drivers and applications\n+ * with public API.\n+ * All kernel-specific stuff were moved to media/v4l2-dev.h, so\n+ * no #if __KERNEL tests are allowed here\n+ *\n+ *\tSee https://linuxtv.org for more info\n+ *\n+ *\tAuthor: Bill Dirks <bill@thedirks.org>\n+ *\t\tJustin Schoeman\n+ *              Hans Verkuil <hverkuil@xs4all.nl>\n+ *\t\tet al.\n+ */\n+#ifndef __LINUX_VIDEODEV2_H\n+#define __LINUX_VIDEODEV2_H\n+\n+#include <sys/time.h>\n+\n+#include <linux/ioctl.h>\n+#include <linux/types.h>\n+#include <linux/v4l2-common.h>\n+#include <linux/v4l2-controls.h>\n+\n+/*\n+ * Common stuff for both V4L1 and V4L2\n+ * Moved from videodev.h\n+ */\n+#define VIDEO_MAX_FRAME               32\n+#define VIDEO_MAX_PLANES               8\n+\n+/*\n+ *\tM I S C E L L A N E O U S\n+ */\n+\n+/*  Four-character-code (FOURCC) */\n+#define v4l2_fourcc(a, b, c, d)\\\n+\t((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))\n+#define v4l2_fourcc_be(a, b, c, d)\t(v4l2_fourcc(a, b, c, d) | (1 << 31))\n+\n+/*\n+ *\tE N U M S\n+ */\n+enum v4l2_field {\n+\tV4L2_FIELD_ANY           = 0, /* driver can choose from none,\n+\t\t\t\t\t top, bottom, interlaced\n+\t\t\t\t\t depending on whatever it thinks\n+\t\t\t\t\t is approximate ... */\n+\tV4L2_FIELD_NONE          = 1, /* this device has no fields ... */\n+\tV4L2_FIELD_TOP           = 2, /* top field only */\n+\tV4L2_FIELD_BOTTOM        = 3, /* bottom field only */\n+\tV4L2_FIELD_INTERLACED    = 4, /* both fields interlaced */\n+\tV4L2_FIELD_SEQ_TB        = 5, /* both fields sequential into one\n+\t\t\t\t\t buffer, top-bottom order */\n+\tV4L2_FIELD_SEQ_BT        = 6, /* same as above + bottom-top order */\n+\tV4L2_FIELD_ALTERNATE     = 7, /* both fields alternating into\n+\t\t\t\t\t separate buffers */\n+\tV4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field\n+\t\t\t\t\t first and the top field is\n+\t\t\t\t\t transmitted first */\n+\tV4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field\n+\t\t\t\t\t first and the bottom field is\n+\t\t\t\t\t transmitted first */\n+};\n+#define V4L2_FIELD_HAS_TOP(field)\t\\\n+\t((field) == V4L2_FIELD_TOP\t||\\\n+\t (field) == V4L2_FIELD_INTERLACED ||\\\n+\t (field) == V4L2_FIELD_INTERLACED_TB ||\\\n+\t (field) == V4L2_FIELD_INTERLACED_BT ||\\\n+\t (field) == V4L2_FIELD_SEQ_TB\t||\\\n+\t (field) == V4L2_FIELD_SEQ_BT)\n+#define V4L2_FIELD_HAS_BOTTOM(field)\t\\\n+\t((field) == V4L2_FIELD_BOTTOM\t||\\\n+\t (field) == V4L2_FIELD_INTERLACED ||\\\n+\t (field) == V4L2_FIELD_INTERLACED_TB ||\\\n+\t (field) == V4L2_FIELD_INTERLACED_BT ||\\\n+\t (field) == V4L2_FIELD_SEQ_TB\t||\\\n+\t (field) == V4L2_FIELD_SEQ_BT)\n+#define V4L2_FIELD_HAS_BOTH(field)\t\\\n+\t((field) == V4L2_FIELD_INTERLACED ||\\\n+\t (field) == V4L2_FIELD_INTERLACED_TB ||\\\n+\t (field) == V4L2_FIELD_INTERLACED_BT ||\\\n+\t (field) == V4L2_FIELD_SEQ_TB ||\\\n+\t (field) == V4L2_FIELD_SEQ_BT)\n+#define V4L2_FIELD_HAS_T_OR_B(field)\t\\\n+\t((field) == V4L2_FIELD_BOTTOM ||\\\n+\t (field) == V4L2_FIELD_TOP ||\\\n+\t (field) == V4L2_FIELD_ALTERNATE)\n+\n+enum v4l2_buf_type {\n+\tV4L2_BUF_TYPE_VIDEO_CAPTURE        = 1,\n+\tV4L2_BUF_TYPE_VIDEO_OUTPUT         = 2,\n+\tV4L2_BUF_TYPE_VIDEO_OVERLAY        = 3,\n+\tV4L2_BUF_TYPE_VBI_CAPTURE          = 4,\n+\tV4L2_BUF_TYPE_VBI_OUTPUT           = 5,\n+\tV4L2_BUF_TYPE_SLICED_VBI_CAPTURE   = 6,\n+\tV4L2_BUF_TYPE_SLICED_VBI_OUTPUT    = 7,\n+\tV4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,\n+\tV4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,\n+\tV4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE  = 10,\n+\tV4L2_BUF_TYPE_SDR_CAPTURE          = 11,\n+\tV4L2_BUF_TYPE_SDR_OUTPUT           = 12,\n+\tV4L2_BUF_TYPE_META_CAPTURE         = 13,\n+\t/* Deprecated, do not use */\n+\tV4L2_BUF_TYPE_PRIVATE              = 0x80,\n+};\n+\n+#define V4L2_TYPE_IS_MULTIPLANAR(type)\t\t\t\\\n+\t((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE\t\\\n+\t || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)\n+\n+#define V4L2_TYPE_IS_OUTPUT(type)\t\t\t\t\\\n+\t((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT\t\t\t\\\n+\t || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE\t\t\\\n+\t || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY\t\t\\\n+\t || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY\t\\\n+\t || (type) == V4L2_BUF_TYPE_VBI_OUTPUT\t\t\t\\\n+\t || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT\t\t\\\n+\t || (type) == V4L2_BUF_TYPE_SDR_OUTPUT)\n+\n+enum v4l2_tuner_type {\n+\tV4L2_TUNER_RADIO\t     = 1,\n+\tV4L2_TUNER_ANALOG_TV\t     = 2,\n+\tV4L2_TUNER_DIGITAL_TV\t     = 3,\n+\tV4L2_TUNER_SDR               = 4,\n+\tV4L2_TUNER_RF                = 5,\n+};\n+\n+/* Deprecated, do not use */\n+#define V4L2_TUNER_ADC  V4L2_TUNER_SDR\n+\n+enum v4l2_memory {\n+\tV4L2_MEMORY_MMAP             = 1,\n+\tV4L2_MEMORY_USERPTR          = 2,\n+\tV4L2_MEMORY_OVERLAY          = 3,\n+\tV4L2_MEMORY_DMABUF           = 4,\n+};\n+\n+/* see also http://vektor.theorem.ca/graphics/ycbcr/ */\n+enum v4l2_colorspace {\n+\t/*\n+\t * Default colorspace, i.e. let the driver figure it out.\n+\t * Can only be used with video capture.\n+\t */\n+\tV4L2_COLORSPACE_DEFAULT       = 0,\n+\n+\t/* SMPTE 170M: used for broadcast NTSC/PAL SDTV */\n+\tV4L2_COLORSPACE_SMPTE170M     = 1,\n+\n+\t/* Obsolete pre-1998 SMPTE 240M HDTV standard, superseded by Rec 709 */\n+\tV4L2_COLORSPACE_SMPTE240M     = 2,\n+\n+\t/* Rec.709: used for HDTV */\n+\tV4L2_COLORSPACE_REC709        = 3,\n+\n+\t/*\n+\t * Deprecated, do not use. No driver will ever return this. This was\n+\t * based on a misunderstanding of the bt878 datasheet.\n+\t */\n+\tV4L2_COLORSPACE_BT878         = 4,\n+\n+\t/*\n+\t * NTSC 1953 colorspace. This only makes sense when dealing with\n+\t * really, really old NTSC recordings. Superseded by SMPTE 170M.\n+\t */\n+\tV4L2_COLORSPACE_470_SYSTEM_M  = 5,\n+\n+\t/*\n+\t * EBU Tech 3213 PAL/SECAM colorspace. This only makes sense when\n+\t * dealing with really old PAL/SECAM recordings. Superseded by\n+\t * SMPTE 170M.\n+\t */\n+\tV4L2_COLORSPACE_470_SYSTEM_BG = 6,\n+\n+\t/*\n+\t * Effectively shorthand for V4L2_COLORSPACE_SRGB, V4L2_YCBCR_ENC_601\n+\t * and V4L2_QUANTIZATION_FULL_RANGE. To be used for (Motion-)JPEG.\n+\t */\n+\tV4L2_COLORSPACE_JPEG          = 7,\n+\n+\t/* For RGB colorspaces such as produces by most webcams. */\n+\tV4L2_COLORSPACE_SRGB          = 8,\n+\n+\t/* AdobeRGB colorspace */\n+\tV4L2_COLORSPACE_ADOBERGB      = 9,\n+\n+\t/* BT.2020 colorspace, used for UHDTV. */\n+\tV4L2_COLORSPACE_BT2020        = 10,\n+\n+\t/* Raw colorspace: for RAW unprocessed images */\n+\tV4L2_COLORSPACE_RAW           = 11,\n+\n+\t/* DCI-P3 colorspace, used by cinema projectors */\n+\tV4L2_COLORSPACE_DCI_P3        = 12,\n+};\n+\n+/*\n+ * Determine how COLORSPACE_DEFAULT should map to a proper colorspace.\n+ * This depends on whether this is a SDTV image (use SMPTE 170M), an\n+ * HDTV image (use Rec. 709), or something else (use sRGB).\n+ */\n+#define V4L2_MAP_COLORSPACE_DEFAULT(is_sdtv, is_hdtv) \\\n+\t((is_sdtv) ? V4L2_COLORSPACE_SMPTE170M : \\\n+\t ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB))\n+\n+enum v4l2_xfer_func {\n+\t/*\n+\t * Mapping of V4L2_XFER_FUNC_DEFAULT to actual transfer functions\n+\t * for the various colorspaces:\n+\t *\n+\t * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M,\n+\t * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_REC709 and\n+\t * V4L2_COLORSPACE_BT2020: V4L2_XFER_FUNC_709\n+\t *\n+\t * V4L2_COLORSPACE_SRGB, V4L2_COLORSPACE_JPEG: V4L2_XFER_FUNC_SRGB\n+\t *\n+\t * V4L2_COLORSPACE_ADOBERGB: V4L2_XFER_FUNC_ADOBERGB\n+\t *\n+\t * V4L2_COLORSPACE_SMPTE240M: V4L2_XFER_FUNC_SMPTE240M\n+\t *\n+\t * V4L2_COLORSPACE_RAW: V4L2_XFER_FUNC_NONE\n+\t *\n+\t * V4L2_COLORSPACE_DCI_P3: V4L2_XFER_FUNC_DCI_P3\n+\t */\n+\tV4L2_XFER_FUNC_DEFAULT     = 0,\n+\tV4L2_XFER_FUNC_709         = 1,\n+\tV4L2_XFER_FUNC_SRGB        = 2,\n+\tV4L2_XFER_FUNC_ADOBERGB    = 3,\n+\tV4L2_XFER_FUNC_SMPTE240M   = 4,\n+\tV4L2_XFER_FUNC_NONE        = 5,\n+\tV4L2_XFER_FUNC_DCI_P3      = 6,\n+\tV4L2_XFER_FUNC_SMPTE2084   = 7,\n+};\n+\n+/*\n+ * Determine how XFER_FUNC_DEFAULT should map to a proper transfer function.\n+ * This depends on the colorspace.\n+ */\n+#define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \\\n+\t((colsp) == V4L2_COLORSPACE_ADOBERGB ? V4L2_XFER_FUNC_ADOBERGB : \\\n+\t ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \\\n+\t  ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : \\\n+\t   ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \\\n+\t    ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? \\\n+\t     V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709)))))\n+\n+enum v4l2_ycbcr_encoding {\n+\t/*\n+\t * Mapping of V4L2_YCBCR_ENC_DEFAULT to actual encodings for the\n+\t * various colorspaces:\n+\t *\n+\t * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M,\n+\t * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_SRGB,\n+\t * V4L2_COLORSPACE_ADOBERGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601\n+\t *\n+\t * V4L2_COLORSPACE_REC709 and V4L2_COLORSPACE_DCI_P3: V4L2_YCBCR_ENC_709\n+\t *\n+\t * V4L2_COLORSPACE_BT2020: V4L2_YCBCR_ENC_BT2020\n+\t *\n+\t * V4L2_COLORSPACE_SMPTE240M: V4L2_YCBCR_ENC_SMPTE240M\n+\t */\n+\tV4L2_YCBCR_ENC_DEFAULT        = 0,\n+\n+\t/* ITU-R 601 -- SDTV */\n+\tV4L2_YCBCR_ENC_601            = 1,\n+\n+\t/* Rec. 709 -- HDTV */\n+\tV4L2_YCBCR_ENC_709            = 2,\n+\n+\t/* ITU-R 601/EN 61966-2-4 Extended Gamut -- SDTV */\n+\tV4L2_YCBCR_ENC_XV601          = 3,\n+\n+\t/* Rec. 709/EN 61966-2-4 Extended Gamut -- HDTV */\n+\tV4L2_YCBCR_ENC_XV709          = 4,\n+\n+\t/*\n+\t * sYCC (Y'CbCr encoding of sRGB), identical to ENC_601. It was added\n+\t * originally due to a misunderstanding of the sYCC standard. It should\n+\t * not be used, instead use V4L2_YCBCR_ENC_601.\n+\t */\n+\tV4L2_YCBCR_ENC_SYCC           = 5,\n+\n+\t/* BT.2020 Non-constant Luminance Y'CbCr */\n+\tV4L2_YCBCR_ENC_BT2020         = 6,\n+\n+\t/* BT.2020 Constant Luminance Y'CbcCrc */\n+\tV4L2_YCBCR_ENC_BT2020_CONST_LUM = 7,\n+\n+\t/* SMPTE 240M -- Obsolete HDTV */\n+\tV4L2_YCBCR_ENC_SMPTE240M      = 8,\n+};\n+\n+/*\n+ * enum v4l2_hsv_encoding values should not collide with the ones from\n+ * enum v4l2_ycbcr_encoding.\n+ */\n+enum v4l2_hsv_encoding {\n+\n+\t/* Hue mapped to 0 - 179 */\n+\tV4L2_HSV_ENC_180\t\t= 128,\n+\n+\t/* Hue mapped to 0-255 */\n+\tV4L2_HSV_ENC_256\t\t= 129,\n+};\n+\n+/*\n+ * Determine how YCBCR_ENC_DEFAULT should map to a proper Y'CbCr encoding.\n+ * This depends on the colorspace.\n+ */\n+#define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) \\\n+\t(((colsp) == V4L2_COLORSPACE_REC709 || \\\n+\t  (colsp) == V4L2_COLORSPACE_DCI_P3) ? V4L2_YCBCR_ENC_709 : \\\n+\t ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : \\\n+\t  ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : \\\n+\t   V4L2_YCBCR_ENC_601)))\n+\n+enum v4l2_quantization {\n+\t/*\n+\t * The default for R'G'B' quantization is always full range, except\n+\t * for the BT2020 colorspace. For Y'CbCr the quantization is always\n+\t * limited range, except for COLORSPACE_JPEG: this is full range.\n+\t */\n+\tV4L2_QUANTIZATION_DEFAULT     = 0,\n+\tV4L2_QUANTIZATION_FULL_RANGE  = 1,\n+\tV4L2_QUANTIZATION_LIM_RANGE   = 2,\n+};\n+\n+/*\n+ * Determine how QUANTIZATION_DEFAULT should map to a proper quantization.\n+ * This depends on whether the image is RGB or not, the colorspace and the\n+ * Y'CbCr encoding.\n+ */\n+#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv, colsp, ycbcr_enc) \\\n+\t(((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? \\\n+\t V4L2_QUANTIZATION_LIM_RANGE : \\\n+\t (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \\\n+\t V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))\n+\n+enum v4l2_priority {\n+\tV4L2_PRIORITY_UNSET       = 0,  /* not initialized */\n+\tV4L2_PRIORITY_BACKGROUND  = 1,\n+\tV4L2_PRIORITY_INTERACTIVE = 2,\n+\tV4L2_PRIORITY_RECORD      = 3,\n+\tV4L2_PRIORITY_DEFAULT     = V4L2_PRIORITY_INTERACTIVE,\n+};\n+\n+struct v4l2_rect {\n+\t__s32   left;\n+\t__s32   top;\n+\t__u32   width;\n+\t__u32   height;\n+};\n+\n+struct v4l2_fract {\n+\t__u32   numerator;\n+\t__u32   denominator;\n+};\n+\n+/**\n+  * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP\n+  *\n+  * @driver:\t   name of the driver module (e.g. \"bttv\")\n+  * @card:\t   name of the card (e.g. \"Hauppauge WinTV\")\n+  * @bus_info:\t   name of the bus (e.g. \"PCI:\" + pci_name(pci_dev) )\n+  * @version:\t   KERNEL_VERSION\n+  * @capabilities: capabilities of the physical device as a whole\n+  * @device_caps:  capabilities accessed via this particular device (node)\n+  * @reserved:\t   reserved fields for future extensions\n+  */\n+struct v4l2_capability {\n+\t__u8\tdriver[16];\n+\t__u8\tcard[32];\n+\t__u8\tbus_info[32];\n+\t__u32   version;\n+\t__u32\tcapabilities;\n+\t__u32\tdevice_caps;\n+\t__u32\treserved[3];\n+};\n+\n+/* Values for 'capabilities' field */\n+#define V4L2_CAP_VIDEO_CAPTURE\t\t0x00000001  /* Is a video capture device */\n+#define V4L2_CAP_VIDEO_OUTPUT\t\t0x00000002  /* Is a video output device */\n+#define V4L2_CAP_VIDEO_OVERLAY\t\t0x00000004  /* Can do video overlay */\n+#define V4L2_CAP_VBI_CAPTURE\t\t0x00000010  /* Is a raw VBI capture device */\n+#define V4L2_CAP_VBI_OUTPUT\t\t0x00000020  /* Is a raw VBI output device */\n+#define V4L2_CAP_SLICED_VBI_CAPTURE\t0x00000040  /* Is a sliced VBI capture device */\n+#define V4L2_CAP_SLICED_VBI_OUTPUT\t0x00000080  /* Is a sliced VBI output device */\n+#define V4L2_CAP_RDS_CAPTURE\t\t0x00000100  /* RDS data capture */\n+#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY\t0x00000200  /* Can do video output overlay */\n+#define V4L2_CAP_HW_FREQ_SEEK\t\t0x00000400  /* Can do hardware frequency seek  */\n+#define V4L2_CAP_RDS_OUTPUT\t\t0x00000800  /* Is an RDS encoder */\n+\n+/* Is a video capture device that supports multiplanar formats */\n+#define V4L2_CAP_VIDEO_CAPTURE_MPLANE\t0x00001000\n+/* Is a video output device that supports multiplanar formats */\n+#define V4L2_CAP_VIDEO_OUTPUT_MPLANE\t0x00002000\n+/* Is a video mem-to-mem device that supports multiplanar formats */\n+#define V4L2_CAP_VIDEO_M2M_MPLANE\t0x00004000\n+/* Is a video mem-to-mem device */\n+#define V4L2_CAP_VIDEO_M2M\t\t0x00008000\n+\n+#define V4L2_CAP_TUNER\t\t\t0x00010000  /* has a tuner */\n+#define V4L2_CAP_AUDIO\t\t\t0x00020000  /* has audio support */\n+#define V4L2_CAP_RADIO\t\t\t0x00040000  /* is a radio device */\n+#define V4L2_CAP_MODULATOR\t\t0x00080000  /* has a modulator */\n+\n+#define V4L2_CAP_SDR_CAPTURE\t\t0x00100000  /* Is a SDR capture device */\n+#define V4L2_CAP_EXT_PIX_FORMAT\t\t0x00200000  /* Supports the extended pixel format */\n+#define V4L2_CAP_SDR_OUTPUT\t\t0x00400000  /* Is a SDR output device */\n+#define V4L2_CAP_META_CAPTURE\t\t0x00800000  /* Is a metadata capture device */\n+\n+#define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */\n+#define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */\n+#define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */\n+\n+#define V4L2_CAP_TOUCH                  0x10000000  /* Is a touch device */\n+\n+#define V4L2_CAP_DEVICE_CAPS            0x80000000  /* sets device capabilities field */\n+\n+/*\n+ *\tV I D E O   I M A G E   F O R M A T\n+ */\n+struct v4l2_pix_format {\n+\t__u32\t\t\twidth;\n+\t__u32\t\t\theight;\n+\t__u32\t\t\tpixelformat;\n+\t__u32\t\t\tfield;\t\t/* enum v4l2_field */\n+\t__u32\t\t\tbytesperline;\t/* for padding, zero if unused */\n+\t__u32\t\t\tsizeimage;\n+\t__u32\t\t\tcolorspace;\t/* enum v4l2_colorspace */\n+\t__u32\t\t\tpriv;\t\t/* private data, depends on pixelformat */\n+\t__u32\t\t\tflags;\t\t/* format flags (V4L2_PIX_FMT_FLAG_*) */\n+\tunion {\n+\t\t/* enum v4l2_ycbcr_encoding */\n+\t\t__u32\t\t\tycbcr_enc;\n+\t\t/* enum v4l2_hsv_encoding */\n+\t\t__u32\t\t\thsv_enc;\n+\t};\n+\t__u32\t\t\tquantization;\t/* enum v4l2_quantization */\n+\t__u32\t\t\txfer_func;\t/* enum v4l2_xfer_func */\n+};\n+\n+/*      Pixel format         FOURCC                          depth  Description  */\n+\n+/* RGB formats */\n+#define V4L2_PIX_FMT_RGB332  v4l2_fourcc('R', 'G', 'B', '1') /*  8  RGB-3-3-2     */\n+#define V4L2_PIX_FMT_RGB444  v4l2_fourcc('R', '4', '4', '4') /* 16  xxxxrrrr ggggbbbb */\n+#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16  aaaarrrr ggggbbbb */\n+#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16  xxxxrrrr ggggbbbb */\n+#define V4L2_PIX_FMT_RGB555  v4l2_fourcc('R', 'G', 'B', 'O') /* 16  RGB-5-5-5     */\n+#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16  ARGB-1-5-5-5  */\n+#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16  XRGB-1-5-5-5  */\n+#define V4L2_PIX_FMT_RGB565  v4l2_fourcc('R', 'G', 'B', 'P') /* 16  RGB-5-6-5     */\n+#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16  RGB-5-5-5 BE  */\n+#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16  ARGB-5-5-5 BE */\n+#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16  XRGB-5-5-5 BE */\n+#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16  RGB-5-6-5 BE  */\n+#define V4L2_PIX_FMT_BGR666  v4l2_fourcc('B', 'G', 'R', 'H') /* 18  BGR-6-6-6\t  */\n+#define V4L2_PIX_FMT_BGR24   v4l2_fourcc('B', 'G', 'R', '3') /* 24  BGR-8-8-8     */\n+#define V4L2_PIX_FMT_RGB24   v4l2_fourcc('R', 'G', 'B', '3') /* 24  RGB-8-8-8     */\n+#define V4L2_PIX_FMT_BGR32   v4l2_fourcc('B', 'G', 'R', '4') /* 32  BGR-8-8-8-8   */\n+#define V4L2_PIX_FMT_ABGR32  v4l2_fourcc('A', 'R', '2', '4') /* 32  BGRA-8-8-8-8  */\n+#define V4L2_PIX_FMT_XBGR32  v4l2_fourcc('X', 'R', '2', '4') /* 32  BGRX-8-8-8-8  */\n+#define V4L2_PIX_FMT_RGB32   v4l2_fourcc('R', 'G', 'B', '4') /* 32  RGB-8-8-8-8   */\n+#define V4L2_PIX_FMT_ARGB32  v4l2_fourcc('B', 'A', '2', '4') /* 32  ARGB-8-8-8-8  */\n+#define V4L2_PIX_FMT_XRGB32  v4l2_fourcc('B', 'X', '2', '4') /* 32  XRGB-8-8-8-8  */\n+\n+/* Grey formats */\n+#define V4L2_PIX_FMT_GREY    v4l2_fourcc('G', 'R', 'E', 'Y') /*  8  Greyscale     */\n+#define V4L2_PIX_FMT_Y4      v4l2_fourcc('Y', '0', '4', ' ') /*  4  Greyscale     */\n+#define V4L2_PIX_FMT_Y6      v4l2_fourcc('Y', '0', '6', ' ') /*  6  Greyscale     */\n+#define V4L2_PIX_FMT_Y10     v4l2_fourcc('Y', '1', '0', ' ') /* 10  Greyscale     */\n+#define V4L2_PIX_FMT_Y12     v4l2_fourcc('Y', '1', '2', ' ') /* 12  Greyscale     */\n+#define V4L2_PIX_FMT_Y16     v4l2_fourcc('Y', '1', '6', ' ') /* 16  Greyscale     */\n+#define V4L2_PIX_FMT_Y16_BE  v4l2_fourcc_be('Y', '1', '6', ' ') /* 16  Greyscale BE  */\n+\n+/* Grey bit-packed formats */\n+#define V4L2_PIX_FMT_Y10BPACK    v4l2_fourcc('Y', '1', '0', 'B') /* 10  Greyscale bit-packed */\n+#define V4L2_PIX_FMT_Y10P    v4l2_fourcc('Y', '1', '0', 'P') /* 10  Greyscale, MIPI RAW10 packed */\n+\n+/* Palette formats */\n+#define V4L2_PIX_FMT_PAL8    v4l2_fourcc('P', 'A', 'L', '8') /*  8  8-bit palette */\n+\n+/* Chrominance formats */\n+#define V4L2_PIX_FMT_UV8     v4l2_fourcc('U', 'V', '8', ' ') /*  8  UV 4:4 */\n+\n+/* Luminance+Chrominance formats */\n+#define V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16  YUV 4:2:2     */\n+#define V4L2_PIX_FMT_YYUV    v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16  YUV 4:2:2     */\n+#define V4L2_PIX_FMT_YVYU    v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */\n+#define V4L2_PIX_FMT_UYVY    v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16  YUV 4:2:2     */\n+#define V4L2_PIX_FMT_VYUY    v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16  YUV 4:2:2     */\n+#define V4L2_PIX_FMT_Y41P    v4l2_fourcc('Y', '4', '1', 'P') /* 12  YUV 4:1:1     */\n+#define V4L2_PIX_FMT_YUV444  v4l2_fourcc('Y', '4', '4', '4') /* 16  xxxxyyyy uuuuvvvv */\n+#define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O') /* 16  YUV-5-5-5     */\n+#define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y', 'U', 'V', 'P') /* 16  YUV-5-6-5     */\n+#define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  YUV-8-8-8-8   */\n+#define V4L2_PIX_FMT_HI240   v4l2_fourcc('H', 'I', '2', '4') /*  8  8-bit color   */\n+#define V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2') /*  8  YUV 4:2:0 16x16 macroblocks */\n+#define V4L2_PIX_FMT_M420    v4l2_fourcc('M', '4', '2', '0') /* 12  YUV 4:2:0 2 lines y, 1 line uv interleaved */\n+\n+/* two planes -- one Y, one Cr + Cb interleaved  */\n+#define V4L2_PIX_FMT_NV12    v4l2_fourcc('N', 'V', '1', '2') /* 12  Y/CbCr 4:2:0  */\n+#define V4L2_PIX_FMT_NV21    v4l2_fourcc('N', 'V', '2', '1') /* 12  Y/CrCb 4:2:0  */\n+#define V4L2_PIX_FMT_NV16    v4l2_fourcc('N', 'V', '1', '6') /* 16  Y/CbCr 4:2:2  */\n+#define V4L2_PIX_FMT_NV61    v4l2_fourcc('N', 'V', '6', '1') /* 16  Y/CrCb 4:2:2  */\n+#define V4L2_PIX_FMT_NV24    v4l2_fourcc('N', 'V', '2', '4') /* 24  Y/CbCr 4:4:4  */\n+#define V4L2_PIX_FMT_NV42    v4l2_fourcc('N', 'V', '4', '2') /* 24  Y/CrCb 4:4:4  */\n+\n+/* two non contiguous planes - one Y, one Cr + Cb interleaved  */\n+#define V4L2_PIX_FMT_NV12M   v4l2_fourcc('N', 'M', '1', '2') /* 12  Y/CbCr 4:2:0  */\n+#define V4L2_PIX_FMT_NV21M   v4l2_fourcc('N', 'M', '2', '1') /* 21  Y/CrCb 4:2:0  */\n+#define V4L2_PIX_FMT_NV16M   v4l2_fourcc('N', 'M', '1', '6') /* 16  Y/CbCr 4:2:2  */\n+#define V4L2_PIX_FMT_NV61M   v4l2_fourcc('N', 'M', '6', '1') /* 16  Y/CrCb 4:2:2  */\n+#define V4L2_PIX_FMT_NV12MT  v4l2_fourcc('T', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 64x32 macroblocks */\n+#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 16x16 macroblocks */\n+\n+/* three planes - Y Cb, Cr */\n+#define V4L2_PIX_FMT_YUV410  v4l2_fourcc('Y', 'U', 'V', '9') /*  9  YUV 4:1:0     */\n+#define V4L2_PIX_FMT_YVU410  v4l2_fourcc('Y', 'V', 'U', '9') /*  9  YVU 4:1:0     */\n+#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 12  YVU411 planar */\n+#define V4L2_PIX_FMT_YUV420  v4l2_fourcc('Y', 'U', '1', '2') /* 12  YUV 4:2:0     */\n+#define V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y', 'V', '1', '2') /* 12  YVU 4:2:0     */\n+#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16  YVU422 planar */\n+\n+/* three non contiguous planes - Y, Cb, Cr */\n+#define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12  YUV420 planar */\n+#define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12  YVU420 planar */\n+#define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6') /* 16  YUV422 planar */\n+#define V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1') /* 16  YVU422 planar */\n+#define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24  YUV444 planar */\n+#define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24  YVU444 planar */\n+\n+/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */\n+#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B', 'A', '8', '1') /*  8  BGBG.. GRGR.. */\n+#define V4L2_PIX_FMT_SGBRG8  v4l2_fourcc('G', 'B', 'R', 'G') /*  8  GBGB.. RGRG.. */\n+#define V4L2_PIX_FMT_SGRBG8  v4l2_fourcc('G', 'R', 'B', 'G') /*  8  GRGR.. BGBG.. */\n+#define V4L2_PIX_FMT_SRGGB8  v4l2_fourcc('R', 'G', 'G', 'B') /*  8  RGRG.. GBGB.. */\n+#define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0') /* 10  BGBG.. GRGR.. */\n+#define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10  GBGB.. RGRG.. */\n+#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10  GRGR.. BGBG.. */\n+#define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10  RGRG.. GBGB.. */\n+\t/* 10bit raw bayer packed, 5 bytes for every 4 pixels */\n+#define V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A')\n+#define V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A')\n+#define V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A')\n+#define V4L2_PIX_FMT_SRGGB10P v4l2_fourcc('p', 'R', 'A', 'A')\n+\t/* 10bit raw bayer a-law compressed to 8 bits */\n+#define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8')\n+#define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8')\n+#define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8')\n+#define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8')\n+\t/* 10bit raw bayer DPCM compressed to 8 bits */\n+#define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8')\n+#define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8')\n+#define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')\n+#define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8')\n+#define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12  BGBG.. GRGR.. */\n+#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12  GBGB.. RGRG.. */\n+#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12  GRGR.. BGBG.. */\n+#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12  RGRG.. GBGB.. */\n+\t/* 12bit raw bayer packed, 6 bytes for every 4 pixels */\n+#define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C')\n+#define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C')\n+#define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C')\n+#define V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C')\n+\t/* 14bit raw bayer packed, 7 bytes for every 4 pixels */\n+#define V4L2_PIX_FMT_SBGGR14P v4l2_fourcc('p', 'B', 'E', 'E')\n+#define V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E')\n+#define V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E')\n+#define V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E')\n+#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16  BGBG.. GRGR.. */\n+#define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16  GBGB.. RGRG.. */\n+#define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16  GRGR.. BGBG.. */\n+#define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16  RGRG.. GBGB.. */\n+\n+/* HSV formats */\n+#define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')\n+#define V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4')\n+\n+/* compressed formats */\n+#define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG   */\n+#define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG     */\n+#define V4L2_PIX_FMT_DV       v4l2_fourcc('d', 'v', 's', 'd') /* 1394          */\n+#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */\n+#define V4L2_PIX_FMT_H264     v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */\n+#define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */\n+#define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */\n+#define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */\n+#define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */\n+#define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES     */\n+#define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */\n+#define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */\n+#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */\n+#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */\n+#define V4L2_PIX_FMT_VP8      v4l2_fourcc('V', 'P', '8', '0') /* VP8 */\n+#define V4L2_PIX_FMT_VP9      v4l2_fourcc('V', 'P', '9', '0') /* VP9 */\n+#define V4L2_PIX_FMT_HEVC     v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */\n+#define V4L2_PIX_FMT_FWHT     v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */\n+\n+/*  Vendor-specific formats   */\n+#define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */\n+#define V4L2_PIX_FMT_WNVA     v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */\n+#define V4L2_PIX_FMT_SN9C10X  v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */\n+#define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */\n+#define V4L2_PIX_FMT_PWC1     v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */\n+#define V4L2_PIX_FMT_PWC2     v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */\n+#define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */\n+#define V4L2_PIX_FMT_SPCA501  v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */\n+#define V4L2_PIX_FMT_SPCA505  v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */\n+#define V4L2_PIX_FMT_SPCA508  v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */\n+#define V4L2_PIX_FMT_SPCA561  v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */\n+#define V4L2_PIX_FMT_PAC207   v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */\n+#define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */\n+#define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0') /* compressed RGGB bayer */\n+#define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */\n+#define V4L2_PIX_FMT_SQ905C   v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */\n+#define V4L2_PIX_FMT_PJPG     v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */\n+#define V4L2_PIX_FMT_OV511    v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */\n+#define V4L2_PIX_FMT_OV518    v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */\n+#define V4L2_PIX_FMT_STV0680  v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */\n+#define V4L2_PIX_FMT_TM6000   v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */\n+#define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */\n+#define V4L2_PIX_FMT_KONICA420  v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */\n+#define V4L2_PIX_FMT_JPGL\tv4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */\n+#define V4L2_PIX_FMT_SE401      v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */\n+#define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */\n+#define V4L2_PIX_FMT_Y8I      v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */\n+#define V4L2_PIX_FMT_Y12I     v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */\n+#define V4L2_PIX_FMT_Z16      v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */\n+#define V4L2_PIX_FMT_MT21C    v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode  */\n+#define V4L2_PIX_FMT_INZI     v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */\n+\n+/* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */\n+#define V4L2_PIX_FMT_IPU3_SBGGR10\tv4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */\n+#define V4L2_PIX_FMT_IPU3_SGBRG10\tv4l2_fourcc('i', 'p', '3', 'g') /* IPU3 packed 10-bit GBRG bayer */\n+#define V4L2_PIX_FMT_IPU3_SGRBG10\tv4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */\n+#define V4L2_PIX_FMT_IPU3_SRGGB10\tv4l2_fourcc('i', 'p', '3', 'r') /* IPU3 packed 10-bit RGGB bayer */\n+\n+/* SDR formats - used only for Software Defined Radio devices */\n+#define V4L2_SDR_FMT_CU8          v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */\n+#define V4L2_SDR_FMT_CU16LE       v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */\n+#define V4L2_SDR_FMT_CS8          v4l2_fourcc('C', 'S', '0', '8') /* complex s8 */\n+#define V4L2_SDR_FMT_CS14LE       v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */\n+#define V4L2_SDR_FMT_RU12LE       v4l2_fourcc('R', 'U', '1', '2') /* real u12le */\n+#define V4L2_SDR_FMT_PCU16BE\t  v4l2_fourcc('P', 'C', '1', '6') /* planar complex u16be */\n+#define V4L2_SDR_FMT_PCU18BE\t  v4l2_fourcc('P', 'C', '1', '8') /* planar complex u18be */\n+#define V4L2_SDR_FMT_PCU20BE\t  v4l2_fourcc('P', 'C', '2', '0') /* planar complex u20be */\n+\n+/* Touch formats - used for Touch devices */\n+#define V4L2_TCH_FMT_DELTA_TD16\tv4l2_fourcc('T', 'D', '1', '6') /* 16-bit signed deltas */\n+#define V4L2_TCH_FMT_DELTA_TD08\tv4l2_fourcc('T', 'D', '0', '8') /* 8-bit signed deltas */\n+#define V4L2_TCH_FMT_TU16\tv4l2_fourcc('T', 'U', '1', '6') /* 16-bit unsigned touch data */\n+#define V4L2_TCH_FMT_TU08\tv4l2_fourcc('T', 'U', '0', '8') /* 8-bit unsigned touch data */\n+\n+/* Meta-data formats */\n+#define V4L2_META_FMT_VSP1_HGO    v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 1-D Histogram */\n+#define V4L2_META_FMT_VSP1_HGT    v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */\n+#define V4L2_META_FMT_UVC         v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */\n+\n+/* priv field value to indicates that subsequent fields are valid. */\n+#define V4L2_PIX_FMT_PRIV_MAGIC\t\t0xfeedcafe\n+\n+/* Flags */\n+#define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA\t0x00000001\n+\n+/*\n+ *\tF O R M A T   E N U M E R A T I O N\n+ */\n+struct v4l2_fmtdesc {\n+\t__u32\t\t    index;             /* Format number      */\n+\t__u32\t\t    type;              /* enum v4l2_buf_type */\n+\t__u32               flags;\n+\t__u8\t\t    description[32];   /* Description string */\n+\t__u32\t\t    pixelformat;       /* Format fourcc      */\n+\t__u32\t\t    reserved[4];\n+};\n+\n+#define V4L2_FMT_FLAG_COMPRESSED 0x0001\n+#define V4L2_FMT_FLAG_EMULATED   0x0002\n+\n+\t/* Frame Size and frame rate enumeration */\n+/*\n+ *\tF R A M E   S I Z E   E N U M E R A T I O N\n+ */\n+enum v4l2_frmsizetypes {\n+\tV4L2_FRMSIZE_TYPE_DISCRETE\t= 1,\n+\tV4L2_FRMSIZE_TYPE_CONTINUOUS\t= 2,\n+\tV4L2_FRMSIZE_TYPE_STEPWISE\t= 3,\n+};\n+\n+struct v4l2_frmsize_discrete {\n+\t__u32\t\t\twidth;\t\t/* Frame width [pixel] */\n+\t__u32\t\t\theight;\t\t/* Frame height [pixel] */\n+};\n+\n+struct v4l2_frmsize_stepwise {\n+\t__u32\t\t\tmin_width;\t/* Minimum frame width [pixel] */\n+\t__u32\t\t\tmax_width;\t/* Maximum frame width [pixel] */\n+\t__u32\t\t\tstep_width;\t/* Frame width step size [pixel] */\n+\t__u32\t\t\tmin_height;\t/* Minimum frame height [pixel] */\n+\t__u32\t\t\tmax_height;\t/* Maximum frame height [pixel] */\n+\t__u32\t\t\tstep_height;\t/* Frame height step size [pixel] */\n+};\n+\n+struct v4l2_frmsizeenum {\n+\t__u32\t\t\tindex;\t\t/* Frame size number */\n+\t__u32\t\t\tpixel_format;\t/* Pixel format */\n+\t__u32\t\t\ttype;\t\t/* Frame size type the device supports. */\n+\n+\tunion {\t\t\t\t\t/* Frame size */\n+\t\tstruct v4l2_frmsize_discrete\tdiscrete;\n+\t\tstruct v4l2_frmsize_stepwise\tstepwise;\n+\t};\n+\n+\t__u32   reserved[2];\t\t\t/* Reserved space for future use */\n+};\n+\n+/*\n+ *\tF R A M E   R A T E   E N U M E R A T I O N\n+ */\n+enum v4l2_frmivaltypes {\n+\tV4L2_FRMIVAL_TYPE_DISCRETE\t= 1,\n+\tV4L2_FRMIVAL_TYPE_CONTINUOUS\t= 2,\n+\tV4L2_FRMIVAL_TYPE_STEPWISE\t= 3,\n+};\n+\n+struct v4l2_frmival_stepwise {\n+\tstruct v4l2_fract\tmin;\t\t/* Minimum frame interval [s] */\n+\tstruct v4l2_fract\tmax;\t\t/* Maximum frame interval [s] */\n+\tstruct v4l2_fract\tstep;\t\t/* Frame interval step size [s] */\n+};\n+\n+struct v4l2_frmivalenum {\n+\t__u32\t\t\tindex;\t\t/* Frame format index */\n+\t__u32\t\t\tpixel_format;\t/* Pixel format */\n+\t__u32\t\t\twidth;\t\t/* Frame width */\n+\t__u32\t\t\theight;\t\t/* Frame height */\n+\t__u32\t\t\ttype;\t\t/* Frame interval type the device supports. */\n+\n+\tunion {\t\t\t\t\t/* Frame interval */\n+\t\tstruct v4l2_fract\t\tdiscrete;\n+\t\tstruct v4l2_frmival_stepwise\tstepwise;\n+\t};\n+\n+\t__u32\treserved[2];\t\t\t/* Reserved space for future use */\n+};\n+\n+/*\n+ *\tT I M E C O D E\n+ */\n+struct v4l2_timecode {\n+\t__u32\ttype;\n+\t__u32\tflags;\n+\t__u8\tframes;\n+\t__u8\tseconds;\n+\t__u8\tminutes;\n+\t__u8\thours;\n+\t__u8\tuserbits[4];\n+};\n+\n+/*  Type  */\n+#define V4L2_TC_TYPE_24FPS\t\t1\n+#define V4L2_TC_TYPE_25FPS\t\t2\n+#define V4L2_TC_TYPE_30FPS\t\t3\n+#define V4L2_TC_TYPE_50FPS\t\t4\n+#define V4L2_TC_TYPE_60FPS\t\t5\n+\n+/*  Flags  */\n+#define V4L2_TC_FLAG_DROPFRAME\t\t0x0001 /* \"drop-frame\" mode */\n+#define V4L2_TC_FLAG_COLORFRAME\t\t0x0002\n+#define V4L2_TC_USERBITS_field\t\t0x000C\n+#define V4L2_TC_USERBITS_USERDEFINED\t0x0000\n+#define V4L2_TC_USERBITS_8BITCHARS\t0x0008\n+/* The above is based on SMPTE timecodes */\n+\n+struct v4l2_jpegcompression {\n+\tint quality;\n+\n+\tint  APPn;              /* Number of APP segment to be written,\n+\t\t\t\t * must be 0..15 */\n+\tint  APP_len;           /* Length of data in JPEG APPn segment */\n+\tchar APP_data[60];      /* Data in the JPEG APPn segment. */\n+\n+\tint  COM_len;           /* Length of data in JPEG COM segment */\n+\tchar COM_data[60];      /* Data in JPEG COM segment */\n+\n+\t__u32 jpeg_markers;     /* Which markers should go into the JPEG\n+\t\t\t\t * output. Unless you exactly know what\n+\t\t\t\t * you do, leave them untouched.\n+\t\t\t\t * Including less markers will make the\n+\t\t\t\t * resulting code smaller, but there will\n+\t\t\t\t * be fewer applications which can read it.\n+\t\t\t\t * The presence of the APP and COM marker\n+\t\t\t\t * is influenced by APP_len and COM_len\n+\t\t\t\t * ONLY, not by this property! */\n+\n+#define V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */\n+#define V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */\n+#define V4L2_JPEG_MARKER_DRI (1<<5)    /* Define Restart Interval */\n+#define V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */\n+#define V4L2_JPEG_MARKER_APP (1<<7)    /* App segment, driver will\n+\t\t\t\t\t* always use APP0 */\n+};\n+\n+/*\n+ *\tM E M O R Y - M A P P I N G   B U F F E R S\n+ */\n+struct v4l2_requestbuffers {\n+\t__u32\t\t\tcount;\n+\t__u32\t\t\ttype;\t\t/* enum v4l2_buf_type */\n+\t__u32\t\t\tmemory;\t\t/* enum v4l2_memory */\n+\t__u32\t\t\treserved[2];\n+};\n+\n+/**\n+ * struct v4l2_plane - plane info for multi-planar buffers\n+ * @bytesused:\t\tnumber of bytes occupied by data in the plane (payload)\n+ * @length:\t\tsize of this plane (NOT the payload) in bytes\n+ * @mem_offset:\t\twhen memory in the associated struct v4l2_buffer is\n+ *\t\t\tV4L2_MEMORY_MMAP, equals the offset from the start of\n+ *\t\t\tthe device memory for this plane (or is a \"cookie\" that\n+ *\t\t\tshould be passed to mmap() called on the video node)\n+ * @userptr:\t\twhen memory is V4L2_MEMORY_USERPTR, a userspace pointer\n+ *\t\t\tpointing to this plane\n+ * @fd:\t\t\twhen memory is V4L2_MEMORY_DMABUF, a userspace file\n+ *\t\t\tdescriptor associated with this plane\n+ * @data_offset:\toffset in the plane to the start of data; usually 0,\n+ *\t\t\tunless there is a header in front of the data\n+ *\n+ * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer\n+ * with two planes can have one plane for Y, and another for interleaved CbCr\n+ * components. Each plane can reside in a separate memory buffer, or even in\n+ * a completely separate memory node (e.g. in embedded devices).\n+ */\n+struct v4l2_plane {\n+\t__u32\t\t\tbytesused;\n+\t__u32\t\t\tlength;\n+\tunion {\n+\t\t__u32\t\tmem_offset;\n+\t\tunsigned long\tuserptr;\n+\t\t__s32\t\tfd;\n+\t} m;\n+\t__u32\t\t\tdata_offset;\n+\t__u32\t\t\treserved[11];\n+};\n+\n+/**\n+ * struct v4l2_buffer - video buffer info\n+ * @index:\tid number of the buffer\n+ * @type:\tenum v4l2_buf_type; buffer type (type == *_MPLANE for\n+ *\t\tmultiplanar buffers);\n+ * @bytesused:\tnumber of bytes occupied by data in the buffer (payload);\n+ *\t\tunused (set to 0) for multiplanar buffers\n+ * @flags:\tbuffer informational flags\n+ * @field:\tenum v4l2_field; field order of the image in the buffer\n+ * @timestamp:\tframe timestamp\n+ * @timecode:\tframe timecode\n+ * @sequence:\tsequence count of this frame\n+ * @memory:\tenum v4l2_memory; the method, in which the actual video data is\n+ *\t\tpassed\n+ * @offset:\tfor non-multiplanar buffers with memory == V4L2_MEMORY_MMAP;\n+ *\t\toffset from the start of the device memory for this plane,\n+ *\t\t(or a \"cookie\" that should be passed to mmap() as offset)\n+ * @userptr:\tfor non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR;\n+ *\t\ta userspace pointer pointing to this buffer\n+ * @fd:\t\tfor non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF;\n+ *\t\ta userspace file descriptor associated with this buffer\n+ * @planes:\tfor multiplanar buffers; userspace pointer to the array of plane\n+ *\t\tinfo structs for this buffer\n+ * @length:\tsize in bytes of the buffer (NOT its payload) for single-plane\n+ *\t\tbuffers (when type != *_MPLANE); number of elements in the\n+ *\t\tplanes array for multi-plane buffers\n+ *\n+ * Contains data exchanged by application and driver using one of the Streaming\n+ * I/O methods.\n+ */\n+struct v4l2_buffer {\n+\t__u32\t\t\tindex;\n+\t__u32\t\t\ttype;\n+\t__u32\t\t\tbytesused;\n+\t__u32\t\t\tflags;\n+\t__u32\t\t\tfield;\n+\tstruct timeval\t\ttimestamp;\n+\tstruct v4l2_timecode\ttimecode;\n+\t__u32\t\t\tsequence;\n+\n+\t/* memory location */\n+\t__u32\t\t\tmemory;\n+\tunion {\n+\t\t__u32           offset;\n+\t\tunsigned long   userptr;\n+\t\tstruct v4l2_plane *planes;\n+\t\t__s32\t\tfd;\n+\t} m;\n+\t__u32\t\t\tlength;\n+\t__u32\t\t\treserved2;\n+\t__u32\t\t\treserved;\n+};\n+\n+/*  Flags for 'flags' field */\n+/* Buffer is mapped (flag) */\n+#define V4L2_BUF_FLAG_MAPPED\t\t\t0x00000001\n+/* Buffer is queued for processing */\n+#define V4L2_BUF_FLAG_QUEUED\t\t\t0x00000002\n+/* Buffer is ready */\n+#define V4L2_BUF_FLAG_DONE\t\t\t0x00000004\n+/* Image is a keyframe (I-frame) */\n+#define V4L2_BUF_FLAG_KEYFRAME\t\t\t0x00000008\n+/* Image is a P-frame */\n+#define V4L2_BUF_FLAG_PFRAME\t\t\t0x00000010\n+/* Image is a B-frame */\n+#define V4L2_BUF_FLAG_BFRAME\t\t\t0x00000020\n+/* Buffer is ready, but the data contained within is corrupted. */\n+#define V4L2_BUF_FLAG_ERROR\t\t\t0x00000040\n+/* timecode field is valid */\n+#define V4L2_BUF_FLAG_TIMECODE\t\t\t0x00000100\n+/* Buffer is prepared for queuing */\n+#define V4L2_BUF_FLAG_PREPARED\t\t\t0x00000400\n+/* Cache handling flags */\n+#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE\t0x00000800\n+#define V4L2_BUF_FLAG_NO_CACHE_CLEAN\t\t0x00001000\n+/* Timestamp type */\n+#define V4L2_BUF_FLAG_TIMESTAMP_MASK\t\t0x0000e000\n+#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN\t\t0x00000000\n+#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC\t0x00002000\n+#define V4L2_BUF_FLAG_TIMESTAMP_COPY\t\t0x00004000\n+/* Timestamp sources. */\n+#define V4L2_BUF_FLAG_TSTAMP_SRC_MASK\t\t0x00070000\n+#define V4L2_BUF_FLAG_TSTAMP_SRC_EOF\t\t0x00000000\n+#define V4L2_BUF_FLAG_TSTAMP_SRC_SOE\t\t0x00010000\n+/* mem2mem encoder/decoder */\n+#define V4L2_BUF_FLAG_LAST\t\t\t0x00100000\n+\n+/**\n+ * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor\n+ *\n+ * @index:\tid number of the buffer\n+ * @type:\tenum v4l2_buf_type; buffer type (type == *_MPLANE for\n+ *\t\tmultiplanar buffers);\n+ * @plane:\tindex of the plane to be exported, 0 for single plane queues\n+ * @flags:\tflags for newly created file, currently only O_CLOEXEC is\n+ *\t\tsupported, refer to manual of open syscall for more details\n+ * @fd:\t\tfile descriptor associated with DMABUF (set by driver)\n+ *\n+ * Contains data used for exporting a video buffer as DMABUF file descriptor.\n+ * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF\n+ * (identical to the cookie used to mmap() the buffer to userspace). All\n+ * reserved fields must be set to zero. The field reserved0 is expected to\n+ * become a structure 'type' allowing an alternative layout of the structure\n+ * content. Therefore this field should not be used for any other extensions.\n+ */\n+struct v4l2_exportbuffer {\n+\t__u32\t\ttype; /* enum v4l2_buf_type */\n+\t__u32\t\tindex;\n+\t__u32\t\tplane;\n+\t__u32\t\tflags;\n+\t__s32\t\tfd;\n+\t__u32\t\treserved[11];\n+};\n+\n+/*\n+ *\tO V E R L A Y   P R E V I E W\n+ */\n+struct v4l2_framebuffer {\n+\t__u32\t\t\tcapability;\n+\t__u32\t\t\tflags;\n+/* FIXME: in theory we should pass something like PCI device + memory\n+ * region + offset instead of some physical address */\n+\tvoid                    *base;\n+\tstruct {\n+\t\t__u32\t\twidth;\n+\t\t__u32\t\theight;\n+\t\t__u32\t\tpixelformat;\n+\t\t__u32\t\tfield;\t\t/* enum v4l2_field */\n+\t\t__u32\t\tbytesperline;\t/* for padding, zero if unused */\n+\t\t__u32\t\tsizeimage;\n+\t\t__u32\t\tcolorspace;\t/* enum v4l2_colorspace */\n+\t\t__u32\t\tpriv;\t\t/* reserved field, set to 0 */\n+\t} fmt;\n+};\n+/*  Flags for the 'capability' field. Read only */\n+#define V4L2_FBUF_CAP_EXTERNOVERLAY\t0x0001\n+#define V4L2_FBUF_CAP_CHROMAKEY\t\t0x0002\n+#define V4L2_FBUF_CAP_LIST_CLIPPING     0x0004\n+#define V4L2_FBUF_CAP_BITMAP_CLIPPING\t0x0008\n+#define V4L2_FBUF_CAP_LOCAL_ALPHA\t0x0010\n+#define V4L2_FBUF_CAP_GLOBAL_ALPHA\t0x0020\n+#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA\t0x0040\n+#define V4L2_FBUF_CAP_SRC_CHROMAKEY\t0x0080\n+/*  Flags for the 'flags' field. */\n+#define V4L2_FBUF_FLAG_PRIMARY\t\t0x0001\n+#define V4L2_FBUF_FLAG_OVERLAY\t\t0x0002\n+#define V4L2_FBUF_FLAG_CHROMAKEY\t0x0004\n+#define V4L2_FBUF_FLAG_LOCAL_ALPHA\t0x0008\n+#define V4L2_FBUF_FLAG_GLOBAL_ALPHA\t0x0010\n+#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA\t0x0020\n+#define V4L2_FBUF_FLAG_SRC_CHROMAKEY\t0x0040\n+\n+struct v4l2_clip {\n+\tstruct v4l2_rect        c;\n+\tstruct v4l2_clip\t*next;\n+};\n+\n+struct v4l2_window {\n+\tstruct v4l2_rect        w;\n+\t__u32\t\t\tfield;\t /* enum v4l2_field */\n+\t__u32\t\t\tchromakey;\n+\tstruct v4l2_clip\t*clips;\n+\t__u32\t\t\tclipcount;\n+\tvoid\t\t\t*bitmap;\n+\t__u8                    global_alpha;\n+};\n+\n+/*\n+ *\tC A P T U R E   P A R A M E T E R S\n+ */\n+struct v4l2_captureparm {\n+\t__u32\t\t   capability;\t  /*  Supported modes */\n+\t__u32\t\t   capturemode;\t  /*  Current mode */\n+\tstruct v4l2_fract  timeperframe;  /*  Time per frame in seconds */\n+\t__u32\t\t   extendedmode;  /*  Driver-specific extensions */\n+\t__u32              readbuffers;   /*  # of buffers for read */\n+\t__u32\t\t   reserved[4];\n+};\n+\n+/*  Flags for 'capability' and 'capturemode' fields */\n+#define V4L2_MODE_HIGHQUALITY\t0x0001\t/*  High quality imaging mode */\n+#define V4L2_CAP_TIMEPERFRAME\t0x1000\t/*  timeperframe field is supported */\n+\n+struct v4l2_outputparm {\n+\t__u32\t\t   capability;\t /*  Supported modes */\n+\t__u32\t\t   outputmode;\t /*  Current mode */\n+\tstruct v4l2_fract  timeperframe; /*  Time per frame in seconds */\n+\t__u32\t\t   extendedmode; /*  Driver-specific extensions */\n+\t__u32              writebuffers; /*  # of buffers for write */\n+\t__u32\t\t   reserved[4];\n+};\n+\n+/*\n+ *\tI N P U T   I M A G E   C R O P P I N G\n+ */\n+struct v4l2_cropcap {\n+\t__u32\t\t\ttype;\t/* enum v4l2_buf_type */\n+\tstruct v4l2_rect        bounds;\n+\tstruct v4l2_rect        defrect;\n+\tstruct v4l2_fract       pixelaspect;\n+};\n+\n+struct v4l2_crop {\n+\t__u32\t\t\ttype;\t/* enum v4l2_buf_type */\n+\tstruct v4l2_rect        c;\n+};\n+\n+/**\n+ * struct v4l2_selection - selection info\n+ * @type:\tbuffer type (do not use *_MPLANE types)\n+ * @target:\tSelection target, used to choose one of possible rectangles;\n+ *\t\tdefined in v4l2-common.h; V4L2_SEL_TGT_* .\n+ * @flags:\tconstraints flags, defined in v4l2-common.h; V4L2_SEL_FLAG_*.\n+ * @r:\t\tcoordinates of selection window\n+ * @reserved:\tfor future use, rounds structure size to 64 bytes, set to zero\n+ *\n+ * Hardware may use multiple helper windows to process a video stream.\n+ * The structure is used to exchange this selection areas between\n+ * an application and a driver.\n+ */\n+struct v4l2_selection {\n+\t__u32\t\t\ttype;\n+\t__u32\t\t\ttarget;\n+\t__u32                   flags;\n+\tstruct v4l2_rect        r;\n+\t__u32                   reserved[9];\n+};\n+\n+\n+/*\n+ *      A N A L O G   V I D E O   S T A N D A R D\n+ */\n+\n+typedef __u64 v4l2_std_id;\n+\n+/* one bit for each */\n+#define V4L2_STD_PAL_B          ((v4l2_std_id)0x00000001)\n+#define V4L2_STD_PAL_B1         ((v4l2_std_id)0x00000002)\n+#define V4L2_STD_PAL_G          ((v4l2_std_id)0x00000004)\n+#define V4L2_STD_PAL_H          ((v4l2_std_id)0x00000008)\n+#define V4L2_STD_PAL_I          ((v4l2_std_id)0x00000010)\n+#define V4L2_STD_PAL_D          ((v4l2_std_id)0x00000020)\n+#define V4L2_STD_PAL_D1         ((v4l2_std_id)0x00000040)\n+#define V4L2_STD_PAL_K          ((v4l2_std_id)0x00000080)\n+\n+#define V4L2_STD_PAL_M          ((v4l2_std_id)0x00000100)\n+#define V4L2_STD_PAL_N          ((v4l2_std_id)0x00000200)\n+#define V4L2_STD_PAL_Nc         ((v4l2_std_id)0x00000400)\n+#define V4L2_STD_PAL_60         ((v4l2_std_id)0x00000800)\n+\n+#define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000)\t/* BTSC */\n+#define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000)\t/* EIA-J */\n+#define V4L2_STD_NTSC_443       ((v4l2_std_id)0x00004000)\n+#define V4L2_STD_NTSC_M_KR      ((v4l2_std_id)0x00008000)\t/* FM A2 */\n+\n+#define V4L2_STD_SECAM_B        ((v4l2_std_id)0x00010000)\n+#define V4L2_STD_SECAM_D        ((v4l2_std_id)0x00020000)\n+#define V4L2_STD_SECAM_G        ((v4l2_std_id)0x00040000)\n+#define V4L2_STD_SECAM_H        ((v4l2_std_id)0x00080000)\n+#define V4L2_STD_SECAM_K        ((v4l2_std_id)0x00100000)\n+#define V4L2_STD_SECAM_K1       ((v4l2_std_id)0x00200000)\n+#define V4L2_STD_SECAM_L        ((v4l2_std_id)0x00400000)\n+#define V4L2_STD_SECAM_LC       ((v4l2_std_id)0x00800000)\n+\n+/* ATSC/HDTV */\n+#define V4L2_STD_ATSC_8_VSB     ((v4l2_std_id)0x01000000)\n+#define V4L2_STD_ATSC_16_VSB    ((v4l2_std_id)0x02000000)\n+\n+/* FIXME:\n+   Although std_id is 64 bits, there is an issue on PPC32 architecture that\n+   makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding\n+   this value to 32 bits.\n+   As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide),\n+   it should work fine. However, if needed to add more than two standards,\n+   v4l2-common.c should be fixed.\n+ */\n+\n+/*\n+ * Some macros to merge video standards in order to make live easier for the\n+ * drivers and V4L2 applications\n+ */\n+\n+/*\n+ * \"Common\" NTSC/M - It should be noticed that V4L2_STD_NTSC_443 is\n+ * Missing here.\n+ */\n+#define V4L2_STD_NTSC           (V4L2_STD_NTSC_M\t|\\\n+\t\t\t\t V4L2_STD_NTSC_M_JP     |\\\n+\t\t\t\t V4L2_STD_NTSC_M_KR)\n+/* Secam macros */\n+#define V4L2_STD_SECAM_DK\t(V4L2_STD_SECAM_D\t|\\\n+\t\t\t\t V4L2_STD_SECAM_K\t|\\\n+\t\t\t\t V4L2_STD_SECAM_K1)\n+/* All Secam Standards */\n+#define V4L2_STD_SECAM\t\t(V4L2_STD_SECAM_B\t|\\\n+\t\t\t\t V4L2_STD_SECAM_G\t|\\\n+\t\t\t\t V4L2_STD_SECAM_H\t|\\\n+\t\t\t\t V4L2_STD_SECAM_DK\t|\\\n+\t\t\t\t V4L2_STD_SECAM_L       |\\\n+\t\t\t\t V4L2_STD_SECAM_LC)\n+/* PAL macros */\n+#define V4L2_STD_PAL_BG\t\t(V4L2_STD_PAL_B\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_B1\t|\\\n+\t\t\t\t V4L2_STD_PAL_G)\n+#define V4L2_STD_PAL_DK\t\t(V4L2_STD_PAL_D\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_D1\t|\\\n+\t\t\t\t V4L2_STD_PAL_K)\n+/*\n+ * \"Common\" PAL - This macro is there to be compatible with the old\n+ * V4L1 concept of \"PAL\": /BGDKHI.\n+ * Several PAL standards are missing here: /M, /N and /Nc\n+ */\n+#define V4L2_STD_PAL\t\t(V4L2_STD_PAL_BG\t|\\\n+\t\t\t\t V4L2_STD_PAL_DK\t|\\\n+\t\t\t\t V4L2_STD_PAL_H\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_I)\n+/* Chroma \"agnostic\" standards */\n+#define V4L2_STD_B\t\t(V4L2_STD_PAL_B\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_B1\t|\\\n+\t\t\t\t V4L2_STD_SECAM_B)\n+#define V4L2_STD_G\t\t(V4L2_STD_PAL_G\t\t|\\\n+\t\t\t\t V4L2_STD_SECAM_G)\n+#define V4L2_STD_H\t\t(V4L2_STD_PAL_H\t\t|\\\n+\t\t\t\t V4L2_STD_SECAM_H)\n+#define V4L2_STD_L\t\t(V4L2_STD_SECAM_L\t|\\\n+\t\t\t\t V4L2_STD_SECAM_LC)\n+#define V4L2_STD_GH\t\t(V4L2_STD_G\t\t|\\\n+\t\t\t\t V4L2_STD_H)\n+#define V4L2_STD_DK\t\t(V4L2_STD_PAL_DK\t|\\\n+\t\t\t\t V4L2_STD_SECAM_DK)\n+#define V4L2_STD_BG\t\t(V4L2_STD_B\t\t|\\\n+\t\t\t\t V4L2_STD_G)\n+#define V4L2_STD_MN\t\t(V4L2_STD_PAL_M\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_N\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_Nc\t|\\\n+\t\t\t\t V4L2_STD_NTSC)\n+\n+/* Standards where MTS/BTSC stereo could be found */\n+#define V4L2_STD_MTS\t\t(V4L2_STD_NTSC_M\t|\\\n+\t\t\t\t V4L2_STD_PAL_M\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_N\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_Nc)\n+\n+/* Standards for Countries with 60Hz Line frequency */\n+#define V4L2_STD_525_60\t\t(V4L2_STD_PAL_M\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_60\t|\\\n+\t\t\t\t V4L2_STD_NTSC\t\t|\\\n+\t\t\t\t V4L2_STD_NTSC_443)\n+/* Standards for Countries with 50Hz Line frequency */\n+#define V4L2_STD_625_50\t\t(V4L2_STD_PAL\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_N\t\t|\\\n+\t\t\t\t V4L2_STD_PAL_Nc\t|\\\n+\t\t\t\t V4L2_STD_SECAM)\n+\n+#define V4L2_STD_ATSC           (V4L2_STD_ATSC_8_VSB    |\\\n+\t\t\t\t V4L2_STD_ATSC_16_VSB)\n+/* Macros with none and all analog standards */\n+#define V4L2_STD_UNKNOWN        0\n+#define V4L2_STD_ALL            (V4L2_STD_525_60\t|\\\n+\t\t\t\t V4L2_STD_625_50)\n+\n+struct v4l2_standard {\n+\t__u32\t\t     index;\n+\tv4l2_std_id          id;\n+\t__u8\t\t     name[24];\n+\tstruct v4l2_fract    frameperiod; /* Frames, not fields */\n+\t__u32\t\t     framelines;\n+\t__u32\t\t     reserved[4];\n+};\n+\n+/*\n+ *\tD V\tB T\tT I M I N G S\n+ */\n+\n+/** struct v4l2_bt_timings - BT.656/BT.1120 timing data\n+ * @width:\ttotal width of the active video in pixels\n+ * @height:\ttotal height of the active video in lines\n+ * @interlaced:\tInterlaced or progressive\n+ * @polarities:\tPositive or negative polarities\n+ * @pixelclock:\tPixel clock in HZ. Ex. 74.25MHz->74250000\n+ * @hfrontporch:Horizontal front porch in pixels\n+ * @hsync:\tHorizontal Sync length in pixels\n+ * @hbackporch:\tHorizontal back porch in pixels\n+ * @vfrontporch:Vertical front porch in lines\n+ * @vsync:\tVertical Sync length in lines\n+ * @vbackporch:\tVertical back porch in lines\n+ * @il_vfrontporch:Vertical front porch for the even field\n+ *\t\t(aka field 2) of interlaced field formats\n+ * @il_vsync:\tVertical Sync length for the even field\n+ *\t\t(aka field 2) of interlaced field formats\n+ * @il_vbackporch:Vertical back porch for the even field\n+ *\t\t(aka field 2) of interlaced field formats\n+ * @standards:\tStandards the timing belongs to\n+ * @flags:\tFlags\n+ * @picture_aspect: The picture aspect ratio (hor/vert).\n+ * @cea861_vic:\tVIC code as per the CEA-861 standard.\n+ * @hdmi_vic:\tVIC code as per the HDMI standard.\n+ * @reserved:\tReserved fields, must be zeroed.\n+ *\n+ * A note regarding vertical interlaced timings: height refers to the total\n+ * height of the active video frame (= two fields). The blanking timings refer\n+ * to the blanking of each field. So the height of the total frame is\n+ * calculated as follows:\n+ *\n+ * tot_height = height + vfrontporch + vsync + vbackporch +\n+ *                       il_vfrontporch + il_vsync + il_vbackporch\n+ *\n+ * The active height of each field is height / 2.\n+ */\n+struct v4l2_bt_timings {\n+\t__u32\twidth;\n+\t__u32\theight;\n+\t__u32\tinterlaced;\n+\t__u32\tpolarities;\n+\t__u64\tpixelclock;\n+\t__u32\thfrontporch;\n+\t__u32\thsync;\n+\t__u32\thbackporch;\n+\t__u32\tvfrontporch;\n+\t__u32\tvsync;\n+\t__u32\tvbackporch;\n+\t__u32\til_vfrontporch;\n+\t__u32\til_vsync;\n+\t__u32\til_vbackporch;\n+\t__u32\tstandards;\n+\t__u32\tflags;\n+\tstruct v4l2_fract picture_aspect;\n+\t__u8\tcea861_vic;\n+\t__u8\thdmi_vic;\n+\t__u8\treserved[46];\n+} __attribute__ ((packed));\n+\n+/* Interlaced or progressive format */\n+#define\tV4L2_DV_PROGRESSIVE\t0\n+#define\tV4L2_DV_INTERLACED\t1\n+\n+/* Polarities. If bit is not set, it is assumed to be negative polarity */\n+#define V4L2_DV_VSYNC_POS_POL\t0x00000001\n+#define V4L2_DV_HSYNC_POS_POL\t0x00000002\n+\n+/* Timings standards */\n+#define V4L2_DV_BT_STD_CEA861\t(1 << 0)  /* CEA-861 Digital TV Profile */\n+#define V4L2_DV_BT_STD_DMT\t(1 << 1)  /* VESA Discrete Monitor Timings */\n+#define V4L2_DV_BT_STD_CVT\t(1 << 2)  /* VESA Coordinated Video Timings */\n+#define V4L2_DV_BT_STD_GTF\t(1 << 3)  /* VESA Generalized Timings Formula */\n+#define V4L2_DV_BT_STD_SDI\t(1 << 4)  /* SDI Timings */\n+\n+/* Flags */\n+\n+/*\n+ * CVT/GTF specific: timing uses reduced blanking (CVT) or the 'Secondary\n+ * GTF' curve (GTF). In both cases the horizontal and/or vertical blanking\n+ * intervals are reduced, allowing a higher resolution over the same\n+ * bandwidth. This is a read-only flag.\n+ */\n+#define V4L2_DV_FL_REDUCED_BLANKING\t\t(1 << 0)\n+/*\n+ * CEA-861 specific: set for CEA-861 formats with a framerate of a multiple\n+ * of six. These formats can be optionally played at 1 / 1.001 speed.\n+ * This is a read-only flag.\n+ */\n+#define V4L2_DV_FL_CAN_REDUCE_FPS\t\t(1 << 1)\n+/*\n+ * CEA-861 specific: only valid for video transmitters, the flag is cleared\n+ * by receivers.\n+ * If the framerate of the format is a multiple of six, then the pixelclock\n+ * used to set up the transmitter is divided by 1.001 to make it compatible\n+ * with 60 Hz based standards such as NTSC and PAL-M that use a framerate of\n+ * 29.97 Hz. Otherwise this flag is cleared. If the transmitter can't generate\n+ * such frequencies, then the flag will also be cleared.\n+ */\n+#define V4L2_DV_FL_REDUCED_FPS\t\t\t(1 << 2)\n+/*\n+ * Specific to interlaced formats: if set, then field 1 is really one half-line\n+ * longer and field 2 is really one half-line shorter, so each field has\n+ * exactly the same number of half-lines. Whether half-lines can be detected\n+ * or used depends on the hardware.\n+ */\n+#define V4L2_DV_FL_HALF_LINE\t\t\t(1 << 3)\n+/*\n+ * If set, then this is a Consumer Electronics (CE) video format. Such formats\n+ * differ from other formats (commonly called IT formats) in that if RGB\n+ * encoding is used then by default the RGB values use limited range (i.e.\n+ * use the range 16-235) as opposed to 0-255. All formats defined in CEA-861\n+ * except for the 640x480 format are CE formats.\n+ */\n+#define V4L2_DV_FL_IS_CE_VIDEO\t\t\t(1 << 4)\n+/* Some formats like SMPTE-125M have an interlaced signal with a odd\n+ * total height. For these formats, if this flag is set, the first\n+ * field has the extra line. If not, it is the second field.\n+ */\n+#define V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE\t(1 << 5)\n+/*\n+ * If set, then the picture_aspect field is valid. Otherwise assume that the\n+ * pixels are square, so the picture aspect ratio is the same as the width to\n+ * height ratio.\n+ */\n+#define V4L2_DV_FL_HAS_PICTURE_ASPECT\t\t(1 << 6)\n+/*\n+ * If set, then the cea861_vic field is valid and contains the Video\n+ * Identification Code as per the CEA-861 standard.\n+ */\n+#define V4L2_DV_FL_HAS_CEA861_VIC\t\t(1 << 7)\n+/*\n+ * If set, then the hdmi_vic field is valid and contains the Video\n+ * Identification Code as per the HDMI standard (HDMI Vendor Specific\n+ * InfoFrame).\n+ */\n+#define V4L2_DV_FL_HAS_HDMI_VIC\t\t\t(1 << 8)\n+\n+/* A few useful defines to calculate the total blanking and frame sizes */\n+#define V4L2_DV_BT_BLANKING_WIDTH(bt) \\\n+\t((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)\n+#define V4L2_DV_BT_FRAME_WIDTH(bt) \\\n+\t((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))\n+#define V4L2_DV_BT_BLANKING_HEIGHT(bt) \\\n+\t((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \\\n+\t (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)\n+#define V4L2_DV_BT_FRAME_HEIGHT(bt) \\\n+\t((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))\n+\n+/** struct v4l2_dv_timings - DV timings\n+ * @type:\tthe type of the timings\n+ * @bt:\tBT656/1120 timings\n+ */\n+struct v4l2_dv_timings {\n+\t__u32 type;\n+\tunion {\n+\t\tstruct v4l2_bt_timings\tbt;\n+\t\t__u32\treserved[32];\n+\t};\n+} __attribute__ ((packed));\n+\n+/* Values for the type field */\n+#define V4L2_DV_BT_656_1120\t0\t/* BT.656/1120 timing type */\n+\n+\n+/** struct v4l2_enum_dv_timings - DV timings enumeration\n+ * @index:\tenumeration index\n+ * @pad:\tthe pad number for which to enumerate timings (used with\n+ *\t\tv4l-subdev nodes only)\n+ * @reserved:\tmust be zeroed\n+ * @timings:\tthe timings for the given index\n+ */\n+struct v4l2_enum_dv_timings {\n+\t__u32 index;\n+\t__u32 pad;\n+\t__u32 reserved[2];\n+\tstruct v4l2_dv_timings timings;\n+};\n+\n+/** struct v4l2_bt_timings_cap - BT.656/BT.1120 timing capabilities\n+ * @min_width:\t\twidth in pixels\n+ * @max_width:\t\twidth in pixels\n+ * @min_height:\t\theight in lines\n+ * @max_height:\t\theight in lines\n+ * @min_pixelclock:\tPixel clock in HZ. Ex. 74.25MHz->74250000\n+ * @max_pixelclock:\tPixel clock in HZ. Ex. 74.25MHz->74250000\n+ * @standards:\t\tSupported standards\n+ * @capabilities:\tSupported capabilities\n+ * @reserved:\t\tMust be zeroed\n+ */\n+struct v4l2_bt_timings_cap {\n+\t__u32\tmin_width;\n+\t__u32\tmax_width;\n+\t__u32\tmin_height;\n+\t__u32\tmax_height;\n+\t__u64\tmin_pixelclock;\n+\t__u64\tmax_pixelclock;\n+\t__u32\tstandards;\n+\t__u32\tcapabilities;\n+\t__u32\treserved[16];\n+} __attribute__ ((packed));\n+\n+/* Supports interlaced formats */\n+#define V4L2_DV_BT_CAP_INTERLACED\t(1 << 0)\n+/* Supports progressive formats */\n+#define V4L2_DV_BT_CAP_PROGRESSIVE\t(1 << 1)\n+/* Supports CVT/GTF reduced blanking */\n+#define V4L2_DV_BT_CAP_REDUCED_BLANKING\t(1 << 2)\n+/* Supports custom formats */\n+#define V4L2_DV_BT_CAP_CUSTOM\t\t(1 << 3)\n+\n+/** struct v4l2_dv_timings_cap - DV timings capabilities\n+ * @type:\tthe type of the timings (same as in struct v4l2_dv_timings)\n+ * @pad:\tthe pad number for which to query capabilities (used with\n+ *\t\tv4l-subdev nodes only)\n+ * @bt:\t\tthe BT656/1120 timings capabilities\n+ */\n+struct v4l2_dv_timings_cap {\n+\t__u32 type;\n+\t__u32 pad;\n+\t__u32 reserved[2];\n+\tunion {\n+\t\tstruct v4l2_bt_timings_cap bt;\n+\t\t__u32 raw_data[32];\n+\t};\n+};\n+\n+\n+/*\n+ *\tV I D E O   I N P U T S\n+ */\n+struct v4l2_input {\n+\t__u32\t     index;\t\t/*  Which input */\n+\t__u8\t     name[32];\t\t/*  Label */\n+\t__u32\t     type;\t\t/*  Type of input */\n+\t__u32\t     audioset;\t\t/*  Associated audios (bitfield) */\n+\t__u32        tuner;             /*  enum v4l2_tuner_type */\n+\tv4l2_std_id  std;\n+\t__u32\t     status;\n+\t__u32\t     capabilities;\n+\t__u32\t     reserved[3];\n+};\n+\n+/*  Values for the 'type' field */\n+#define V4L2_INPUT_TYPE_TUNER\t\t1\n+#define V4L2_INPUT_TYPE_CAMERA\t\t2\n+#define V4L2_INPUT_TYPE_TOUCH\t\t3\n+\n+/* field 'status' - general */\n+#define V4L2_IN_ST_NO_POWER    0x00000001  /* Attached device is off */\n+#define V4L2_IN_ST_NO_SIGNAL   0x00000002\n+#define V4L2_IN_ST_NO_COLOR    0x00000004\n+\n+/* field 'status' - sensor orientation */\n+/* If sensor is mounted upside down set both bits */\n+#define V4L2_IN_ST_HFLIP       0x00000010 /* Frames are flipped horizontally */\n+#define V4L2_IN_ST_VFLIP       0x00000020 /* Frames are flipped vertically */\n+\n+/* field 'status' - analog */\n+#define V4L2_IN_ST_NO_H_LOCK   0x00000100  /* No horizontal sync lock */\n+#define V4L2_IN_ST_COLOR_KILL  0x00000200  /* Color killer is active */\n+#define V4L2_IN_ST_NO_V_LOCK   0x00000400  /* No vertical sync lock */\n+#define V4L2_IN_ST_NO_STD_LOCK 0x00000800  /* No standard format lock */\n+\n+/* field 'status' - digital */\n+#define V4L2_IN_ST_NO_SYNC     0x00010000  /* No synchronization lock */\n+#define V4L2_IN_ST_NO_EQU      0x00020000  /* No equalizer lock */\n+#define V4L2_IN_ST_NO_CARRIER  0x00040000  /* Carrier recovery failed */\n+\n+/* field 'status' - VCR and set-top box */\n+#define V4L2_IN_ST_MACROVISION 0x01000000  /* Macrovision detected */\n+#define V4L2_IN_ST_NO_ACCESS   0x02000000  /* Conditional access denied */\n+#define V4L2_IN_ST_VTR         0x04000000  /* VTR time constant */\n+\n+/* capabilities flags */\n+#define V4L2_IN_CAP_DV_TIMINGS\t\t0x00000002 /* Supports S_DV_TIMINGS */\n+#define V4L2_IN_CAP_CUSTOM_TIMINGS\tV4L2_IN_CAP_DV_TIMINGS /* For compatibility */\n+#define V4L2_IN_CAP_STD\t\t\t0x00000004 /* Supports S_STD */\n+#define V4L2_IN_CAP_NATIVE_SIZE\t\t0x00000008 /* Supports setting native size */\n+\n+/*\n+ *\tV I D E O   O U T P U T S\n+ */\n+struct v4l2_output {\n+\t__u32\t     index;\t\t/*  Which output */\n+\t__u8\t     name[32];\t\t/*  Label */\n+\t__u32\t     type;\t\t/*  Type of output */\n+\t__u32\t     audioset;\t\t/*  Associated audios (bitfield) */\n+\t__u32\t     modulator;         /*  Associated modulator */\n+\tv4l2_std_id  std;\n+\t__u32\t     capabilities;\n+\t__u32\t     reserved[3];\n+};\n+/*  Values for the 'type' field */\n+#define V4L2_OUTPUT_TYPE_MODULATOR\t\t1\n+#define V4L2_OUTPUT_TYPE_ANALOG\t\t\t2\n+#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY\t3\n+\n+/* capabilities flags */\n+#define V4L2_OUT_CAP_DV_TIMINGS\t\t0x00000002 /* Supports S_DV_TIMINGS */\n+#define V4L2_OUT_CAP_CUSTOM_TIMINGS\tV4L2_OUT_CAP_DV_TIMINGS /* For compatibility */\n+#define V4L2_OUT_CAP_STD\t\t0x00000004 /* Supports S_STD */\n+#define V4L2_OUT_CAP_NATIVE_SIZE\t0x00000008 /* Supports setting native size */\n+\n+/*\n+ *\tC O N T R O L S\n+ */\n+struct v4l2_control {\n+\t__u32\t\t     id;\n+\t__s32\t\t     value;\n+};\n+\n+struct v4l2_ext_control {\n+\t__u32 id;\n+\t__u32 size;\n+\t__u32 reserved2[1];\n+\tunion {\n+\t\t__s32 value;\n+\t\t__s64 value64;\n+\t\tchar *string;\n+\t\t__u8 *p_u8;\n+\t\t__u16 *p_u16;\n+\t\t__u32 *p_u32;\n+\t\tvoid *ptr;\n+\t};\n+} __attribute__ ((packed));\n+\n+struct v4l2_ext_controls {\n+\tunion {\n+\t\t__u32 ctrl_class;\n+\t\t__u32 which;\n+\t};\n+\t__u32 count;\n+\t__u32 error_idx;\n+\t__u32 reserved[2];\n+\tstruct v4l2_ext_control *controls;\n+};\n+\n+#define V4L2_CTRL_ID_MASK\t  (0x0fffffff)\n+#define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)\n+#define V4L2_CTRL_ID2WHICH(id)    ((id) & 0x0fff0000UL)\n+#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)\n+#define V4L2_CTRL_MAX_DIMS\t  (4)\n+#define V4L2_CTRL_WHICH_CUR_VAL   0\n+#define V4L2_CTRL_WHICH_DEF_VAL   0x0f000000\n+\n+enum v4l2_ctrl_type {\n+\tV4L2_CTRL_TYPE_INTEGER\t     = 1,\n+\tV4L2_CTRL_TYPE_BOOLEAN\t     = 2,\n+\tV4L2_CTRL_TYPE_MENU\t     = 3,\n+\tV4L2_CTRL_TYPE_BUTTON\t     = 4,\n+\tV4L2_CTRL_TYPE_INTEGER64     = 5,\n+\tV4L2_CTRL_TYPE_CTRL_CLASS    = 6,\n+\tV4L2_CTRL_TYPE_STRING        = 7,\n+\tV4L2_CTRL_TYPE_BITMASK       = 8,\n+\tV4L2_CTRL_TYPE_INTEGER_MENU  = 9,\n+\n+\t/* Compound types are >= 0x0100 */\n+\tV4L2_CTRL_COMPOUND_TYPES     = 0x0100,\n+\tV4L2_CTRL_TYPE_U8\t     = 0x0100,\n+\tV4L2_CTRL_TYPE_U16\t     = 0x0101,\n+\tV4L2_CTRL_TYPE_U32\t     = 0x0102,\n+};\n+\n+/*  Used in the VIDIOC_QUERYCTRL ioctl for querying controls */\n+struct v4l2_queryctrl {\n+\t__u32\t\t     id;\n+\t__u32\t\t     type;\t/* enum v4l2_ctrl_type */\n+\t__u8\t\t     name[32];\t/* Whatever */\n+\t__s32\t\t     minimum;\t/* Note signedness */\n+\t__s32\t\t     maximum;\n+\t__s32\t\t     step;\n+\t__s32\t\t     default_value;\n+\t__u32                flags;\n+\t__u32\t\t     reserved[2];\n+};\n+\n+/*  Used in the VIDIOC_QUERY_EXT_CTRL ioctl for querying extended controls */\n+struct v4l2_query_ext_ctrl {\n+\t__u32\t\t     id;\n+\t__u32\t\t     type;\n+\tchar\t\t     name[32];\n+\t__s64\t\t     minimum;\n+\t__s64\t\t     maximum;\n+\t__u64\t\t     step;\n+\t__s64\t\t     default_value;\n+\t__u32                flags;\n+\t__u32                elem_size;\n+\t__u32                elems;\n+\t__u32                nr_of_dims;\n+\t__u32                dims[V4L2_CTRL_MAX_DIMS];\n+\t__u32\t\t     reserved[32];\n+};\n+\n+/*  Used in the VIDIOC_QUERYMENU ioctl for querying menu items */\n+struct v4l2_querymenu {\n+\t__u32\t\tid;\n+\t__u32\t\tindex;\n+\tunion {\n+\t\t__u8\tname[32];\t/* Whatever */\n+\t\t__s64\tvalue;\n+\t};\n+\t__u32\t\treserved;\n+} __attribute__ ((packed));\n+\n+/*  Control flags  */\n+#define V4L2_CTRL_FLAG_DISABLED\t\t0x0001\n+#define V4L2_CTRL_FLAG_GRABBED\t\t0x0002\n+#define V4L2_CTRL_FLAG_READ_ONLY\t0x0004\n+#define V4L2_CTRL_FLAG_UPDATE\t\t0x0008\n+#define V4L2_CTRL_FLAG_INACTIVE\t\t0x0010\n+#define V4L2_CTRL_FLAG_SLIDER\t\t0x0020\n+#define V4L2_CTRL_FLAG_WRITE_ONLY\t0x0040\n+#define V4L2_CTRL_FLAG_VOLATILE\t\t0x0080\n+#define V4L2_CTRL_FLAG_HAS_PAYLOAD\t0x0100\n+#define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE\t0x0200\n+#define V4L2_CTRL_FLAG_MODIFY_LAYOUT\t0x0400\n+\n+/*  Query flags, to be ORed with the control ID */\n+#define V4L2_CTRL_FLAG_NEXT_CTRL\t0x80000000\n+#define V4L2_CTRL_FLAG_NEXT_COMPOUND\t0x40000000\n+\n+/*  User-class control IDs defined by V4L2 */\n+#define V4L2_CID_MAX_CTRLS\t\t1024\n+/*  IDs reserved for driver specific controls */\n+#define V4L2_CID_PRIVATE_BASE\t\t0x08000000\n+\n+\n+/*\n+ *\tT U N I N G\n+ */\n+struct v4l2_tuner {\n+\t__u32                   index;\n+\t__u8\t\t\tname[32];\n+\t__u32\t\t\ttype;\t/* enum v4l2_tuner_type */\n+\t__u32\t\t\tcapability;\n+\t__u32\t\t\trangelow;\n+\t__u32\t\t\trangehigh;\n+\t__u32\t\t\trxsubchans;\n+\t__u32\t\t\taudmode;\n+\t__s32\t\t\tsignal;\n+\t__s32\t\t\tafc;\n+\t__u32\t\t\treserved[4];\n+};\n+\n+struct v4l2_modulator {\n+\t__u32\t\t\tindex;\n+\t__u8\t\t\tname[32];\n+\t__u32\t\t\tcapability;\n+\t__u32\t\t\trangelow;\n+\t__u32\t\t\trangehigh;\n+\t__u32\t\t\ttxsubchans;\n+\t__u32\t\t\ttype;\t/* enum v4l2_tuner_type */\n+\t__u32\t\t\treserved[3];\n+};\n+\n+/*  Flags for the 'capability' field */\n+#define V4L2_TUNER_CAP_LOW\t\t0x0001\n+#define V4L2_TUNER_CAP_NORM\t\t0x0002\n+#define V4L2_TUNER_CAP_HWSEEK_BOUNDED\t0x0004\n+#define V4L2_TUNER_CAP_HWSEEK_WRAP\t0x0008\n+#define V4L2_TUNER_CAP_STEREO\t\t0x0010\n+#define V4L2_TUNER_CAP_LANG2\t\t0x0020\n+#define V4L2_TUNER_CAP_SAP\t\t0x0020\n+#define V4L2_TUNER_CAP_LANG1\t\t0x0040\n+#define V4L2_TUNER_CAP_RDS\t\t0x0080\n+#define V4L2_TUNER_CAP_RDS_BLOCK_IO\t0x0100\n+#define V4L2_TUNER_CAP_RDS_CONTROLS\t0x0200\n+#define V4L2_TUNER_CAP_FREQ_BANDS\t0x0400\n+#define V4L2_TUNER_CAP_HWSEEK_PROG_LIM\t0x0800\n+#define V4L2_TUNER_CAP_1HZ\t\t0x1000\n+\n+/*  Flags for the 'rxsubchans' field */\n+#define V4L2_TUNER_SUB_MONO\t\t0x0001\n+#define V4L2_TUNER_SUB_STEREO\t\t0x0002\n+#define V4L2_TUNER_SUB_LANG2\t\t0x0004\n+#define V4L2_TUNER_SUB_SAP\t\t0x0004\n+#define V4L2_TUNER_SUB_LANG1\t\t0x0008\n+#define V4L2_TUNER_SUB_RDS\t\t0x0010\n+\n+/*  Values for the 'audmode' field */\n+#define V4L2_TUNER_MODE_MONO\t\t0x0000\n+#define V4L2_TUNER_MODE_STEREO\t\t0x0001\n+#define V4L2_TUNER_MODE_LANG2\t\t0x0002\n+#define V4L2_TUNER_MODE_SAP\t\t0x0002\n+#define V4L2_TUNER_MODE_LANG1\t\t0x0003\n+#define V4L2_TUNER_MODE_LANG1_LANG2\t0x0004\n+\n+struct v4l2_frequency {\n+\t__u32\ttuner;\n+\t__u32\ttype;\t/* enum v4l2_tuner_type */\n+\t__u32\tfrequency;\n+\t__u32\treserved[8];\n+};\n+\n+#define V4L2_BAND_MODULATION_VSB\t(1 << 1)\n+#define V4L2_BAND_MODULATION_FM\t\t(1 << 2)\n+#define V4L2_BAND_MODULATION_AM\t\t(1 << 3)\n+\n+struct v4l2_frequency_band {\n+\t__u32\ttuner;\n+\t__u32\ttype;\t/* enum v4l2_tuner_type */\n+\t__u32\tindex;\n+\t__u32\tcapability;\n+\t__u32\trangelow;\n+\t__u32\trangehigh;\n+\t__u32\tmodulation;\n+\t__u32\treserved[9];\n+};\n+\n+struct v4l2_hw_freq_seek {\n+\t__u32\ttuner;\n+\t__u32\ttype;\t/* enum v4l2_tuner_type */\n+\t__u32\tseek_upward;\n+\t__u32\twrap_around;\n+\t__u32\tspacing;\n+\t__u32\trangelow;\n+\t__u32\trangehigh;\n+\t__u32\treserved[5];\n+};\n+\n+/*\n+ *\tR D S\n+ */\n+\n+struct v4l2_rds_data {\n+\t__u8\tlsb;\n+\t__u8\tmsb;\n+\t__u8\tblock;\n+} __attribute__ ((packed));\n+\n+#define V4L2_RDS_BLOCK_MSK\t 0x7\n+#define V4L2_RDS_BLOCK_A\t 0\n+#define V4L2_RDS_BLOCK_B\t 1\n+#define V4L2_RDS_BLOCK_C\t 2\n+#define V4L2_RDS_BLOCK_D\t 3\n+#define V4L2_RDS_BLOCK_C_ALT\t 4\n+#define V4L2_RDS_BLOCK_INVALID\t 7\n+\n+#define V4L2_RDS_BLOCK_CORRECTED 0x40\n+#define V4L2_RDS_BLOCK_ERROR\t 0x80\n+\n+/*\n+ *\tA U D I O\n+ */\n+struct v4l2_audio {\n+\t__u32\tindex;\n+\t__u8\tname[32];\n+\t__u32\tcapability;\n+\t__u32\tmode;\n+\t__u32\treserved[2];\n+};\n+\n+/*  Flags for the 'capability' field */\n+#define V4L2_AUDCAP_STEREO\t\t0x00001\n+#define V4L2_AUDCAP_AVL\t\t\t0x00002\n+\n+/*  Flags for the 'mode' field */\n+#define V4L2_AUDMODE_AVL\t\t0x00001\n+\n+struct v4l2_audioout {\n+\t__u32\tindex;\n+\t__u8\tname[32];\n+\t__u32\tcapability;\n+\t__u32\tmode;\n+\t__u32\treserved[2];\n+};\n+\n+/*\n+ *\tM P E G   S E R V I C E S\n+ */\n+#if 1\n+#define V4L2_ENC_IDX_FRAME_I    (0)\n+#define V4L2_ENC_IDX_FRAME_P    (1)\n+#define V4L2_ENC_IDX_FRAME_B    (2)\n+#define V4L2_ENC_IDX_FRAME_MASK (0xf)\n+\n+struct v4l2_enc_idx_entry {\n+\t__u64 offset;\n+\t__u64 pts;\n+\t__u32 length;\n+\t__u32 flags;\n+\t__u32 reserved[2];\n+};\n+\n+#define V4L2_ENC_IDX_ENTRIES (64)\n+struct v4l2_enc_idx {\n+\t__u32 entries;\n+\t__u32 entries_cap;\n+\t__u32 reserved[4];\n+\tstruct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];\n+};\n+\n+\n+#define V4L2_ENC_CMD_START      (0)\n+#define V4L2_ENC_CMD_STOP       (1)\n+#define V4L2_ENC_CMD_PAUSE      (2)\n+#define V4L2_ENC_CMD_RESUME     (3)\n+\n+/* Flags for V4L2_ENC_CMD_STOP */\n+#define V4L2_ENC_CMD_STOP_AT_GOP_END    (1 << 0)\n+\n+struct v4l2_encoder_cmd {\n+\t__u32 cmd;\n+\t__u32 flags;\n+\tunion {\n+\t\tstruct {\n+\t\t\t__u32 data[8];\n+\t\t} raw;\n+\t};\n+};\n+\n+/* Decoder commands */\n+#define V4L2_DEC_CMD_START       (0)\n+#define V4L2_DEC_CMD_STOP        (1)\n+#define V4L2_DEC_CMD_PAUSE       (2)\n+#define V4L2_DEC_CMD_RESUME      (3)\n+\n+/* Flags for V4L2_DEC_CMD_START */\n+#define V4L2_DEC_CMD_START_MUTE_AUDIO\t(1 << 0)\n+\n+/* Flags for V4L2_DEC_CMD_PAUSE */\n+#define V4L2_DEC_CMD_PAUSE_TO_BLACK\t(1 << 0)\n+\n+/* Flags for V4L2_DEC_CMD_STOP */\n+#define V4L2_DEC_CMD_STOP_TO_BLACK\t(1 << 0)\n+#define V4L2_DEC_CMD_STOP_IMMEDIATELY\t(1 << 1)\n+\n+/* Play format requirements (returned by the driver): */\n+\n+/* The decoder has no special format requirements */\n+#define V4L2_DEC_START_FMT_NONE\t\t(0)\n+/* The decoder requires full GOPs */\n+#define V4L2_DEC_START_FMT_GOP\t\t(1)\n+\n+/* The structure must be zeroed before use by the application\n+   This ensures it can be extended safely in the future. */\n+struct v4l2_decoder_cmd {\n+\t__u32 cmd;\n+\t__u32 flags;\n+\tunion {\n+\t\tstruct {\n+\t\t\t__u64 pts;\n+\t\t} stop;\n+\n+\t\tstruct {\n+\t\t\t/* 0 or 1000 specifies normal speed,\n+\t\t\t   1 specifies forward single stepping,\n+\t\t\t   -1 specifies backward single stepping,\n+\t\t\t   >1: playback at speed/1000 of the normal speed,\n+\t\t\t   <-1: reverse playback at (-speed/1000) of the normal speed. */\n+\t\t\t__s32 speed;\n+\t\t\t__u32 format;\n+\t\t} start;\n+\n+\t\tstruct {\n+\t\t\t__u32 data[16];\n+\t\t} raw;\n+\t};\n+};\n+#endif\n+\n+\n+/*\n+ *\tD A T A   S E R V I C E S   ( V B I )\n+ *\n+ *\tData services API by Michael Schimek\n+ */\n+\n+/* Raw VBI */\n+struct v4l2_vbi_format {\n+\t__u32\tsampling_rate;\t\t/* in 1 Hz */\n+\t__u32\toffset;\n+\t__u32\tsamples_per_line;\n+\t__u32\tsample_format;\t\t/* V4L2_PIX_FMT_* */\n+\t__s32\tstart[2];\n+\t__u32\tcount[2];\n+\t__u32\tflags;\t\t\t/* V4L2_VBI_* */\n+\t__u32\treserved[2];\t\t/* must be zero */\n+};\n+\n+/*  VBI flags  */\n+#define V4L2_VBI_UNSYNC\t\t(1 << 0)\n+#define V4L2_VBI_INTERLACED\t(1 << 1)\n+\n+/* ITU-R start lines for each field */\n+#define V4L2_VBI_ITU_525_F1_START (1)\n+#define V4L2_VBI_ITU_525_F2_START (264)\n+#define V4L2_VBI_ITU_625_F1_START (1)\n+#define V4L2_VBI_ITU_625_F2_START (314)\n+\n+/* Sliced VBI\n+ *\n+ *    This implements is a proposal V4L2 API to allow SLICED VBI\n+ * required for some hardware encoders. It should change without\n+ * notice in the definitive implementation.\n+ */\n+\n+struct v4l2_sliced_vbi_format {\n+\t__u16   service_set;\n+\t/* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field\n+\t   service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field\n+\t\t\t\t (equals frame lines 313-336 for 625 line video\n+\t\t\t\t  standards, 263-286 for 525 line standards) */\n+\t__u16   service_lines[2][24];\n+\t__u32   io_size;\n+\t__u32   reserved[2];            /* must be zero */\n+};\n+\n+/* Teletext World System Teletext\n+   (WST), defined on ITU-R BT.653-2 */\n+#define V4L2_SLICED_TELETEXT_B          (0x0001)\n+/* Video Program System, defined on ETS 300 231*/\n+#define V4L2_SLICED_VPS                 (0x0400)\n+/* Closed Caption, defined on EIA-608 */\n+#define V4L2_SLICED_CAPTION_525         (0x1000)\n+/* Wide Screen System, defined on ITU-R BT1119.1 */\n+#define V4L2_SLICED_WSS_625             (0x4000)\n+\n+#define V4L2_SLICED_VBI_525             (V4L2_SLICED_CAPTION_525)\n+#define V4L2_SLICED_VBI_625             (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)\n+\n+struct v4l2_sliced_vbi_cap {\n+\t__u16   service_set;\n+\t/* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field\n+\t   service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field\n+\t\t\t\t (equals frame lines 313-336 for 625 line video\n+\t\t\t\t  standards, 263-286 for 525 line standards) */\n+\t__u16   service_lines[2][24];\n+\t__u32\ttype;\t\t/* enum v4l2_buf_type */\n+\t__u32   reserved[3];    /* must be 0 */\n+};\n+\n+struct v4l2_sliced_vbi_data {\n+\t__u32   id;\n+\t__u32   field;          /* 0: first field, 1: second field */\n+\t__u32   line;           /* 1-23 */\n+\t__u32   reserved;       /* must be 0 */\n+\t__u8    data[48];\n+};\n+\n+/*\n+ * Sliced VBI data inserted into MPEG Streams\n+ */\n+\n+/*\n+ * V4L2_MPEG_STREAM_VBI_FMT_IVTV:\n+ *\n+ * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an\n+ * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI\n+ * data\n+ *\n+ * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header\n+ * definitions are not included here.  See the MPEG-2 specifications for details\n+ * on these headers.\n+ */\n+\n+/* Line type IDs */\n+#define V4L2_MPEG_VBI_IVTV_TELETEXT_B     (1)\n+#define V4L2_MPEG_VBI_IVTV_CAPTION_525    (4)\n+#define V4L2_MPEG_VBI_IVTV_WSS_625        (5)\n+#define V4L2_MPEG_VBI_IVTV_VPS            (7)\n+\n+struct v4l2_mpeg_vbi_itv0_line {\n+\t__u8 id;\t/* One of V4L2_MPEG_VBI_IVTV_* above */\n+\t__u8 data[42];\t/* Sliced VBI data for the line */\n+} __attribute__ ((packed));\n+\n+struct v4l2_mpeg_vbi_itv0 {\n+\t__le32 linemask[2]; /* Bitmasks of VBI service lines present */\n+\tstruct v4l2_mpeg_vbi_itv0_line line[35];\n+} __attribute__ ((packed));\n+\n+struct v4l2_mpeg_vbi_ITV0 {\n+\tstruct v4l2_mpeg_vbi_itv0_line line[36];\n+} __attribute__ ((packed));\n+\n+#define V4L2_MPEG_VBI_IVTV_MAGIC0\t\"itv0\"\n+#define V4L2_MPEG_VBI_IVTV_MAGIC1\t\"ITV0\"\n+\n+struct v4l2_mpeg_vbi_fmt_ivtv {\n+\t__u8 magic[4];\n+\tunion {\n+\t\tstruct v4l2_mpeg_vbi_itv0 itv0;\n+\t\tstruct v4l2_mpeg_vbi_ITV0 ITV0;\n+\t};\n+} __attribute__ ((packed));\n+\n+/*\n+ *\tA G G R E G A T E   S T R U C T U R E S\n+ */\n+\n+/**\n+ * struct v4l2_plane_pix_format - additional, per-plane format definition\n+ * @sizeimage:\t\tmaximum size in bytes required for data, for which\n+ *\t\t\tthis plane will be used\n+ * @bytesperline:\tdistance in bytes between the leftmost pixels in two\n+ *\t\t\tadjacent lines\n+ */\n+struct v4l2_plane_pix_format {\n+\t__u32\t\tsizeimage;\n+\t__u32\t\tbytesperline;\n+\t__u16\t\treserved[6];\n+} __attribute__ ((packed));\n+\n+/**\n+ * struct v4l2_pix_format_mplane - multiplanar format definition\n+ * @width:\t\timage width in pixels\n+ * @height:\t\timage height in pixels\n+ * @pixelformat:\tlittle endian four character code (fourcc)\n+ * @field:\t\tenum v4l2_field; field order (for interlaced video)\n+ * @colorspace:\t\tenum v4l2_colorspace; supplemental to pixelformat\n+ * @plane_fmt:\t\tper-plane information\n+ * @num_planes:\t\tnumber of planes for this format\n+ * @flags:\t\tformat flags (V4L2_PIX_FMT_FLAG_*)\n+ * @ycbcr_enc:\t\tenum v4l2_ycbcr_encoding, Y'CbCr encoding\n+ * @quantization:\tenum v4l2_quantization, colorspace quantization\n+ * @xfer_func:\t\tenum v4l2_xfer_func, colorspace transfer function\n+ */\n+struct v4l2_pix_format_mplane {\n+\t__u32\t\t\t\twidth;\n+\t__u32\t\t\t\theight;\n+\t__u32\t\t\t\tpixelformat;\n+\t__u32\t\t\t\tfield;\n+\t__u32\t\t\t\tcolorspace;\n+\n+\tstruct v4l2_plane_pix_format\tplane_fmt[VIDEO_MAX_PLANES];\n+\t__u8\t\t\t\tnum_planes;\n+\t__u8\t\t\t\tflags;\n+\t union {\n+\t\t__u8\t\t\t\tycbcr_enc;\n+\t\t__u8\t\t\t\thsv_enc;\n+\t};\n+\t__u8\t\t\t\tquantization;\n+\t__u8\t\t\t\txfer_func;\n+\t__u8\t\t\t\treserved[7];\n+} __attribute__ ((packed));\n+\n+/**\n+ * struct v4l2_sdr_format - SDR format definition\n+ * @pixelformat:\tlittle endian four character code (fourcc)\n+ * @buffersize:\t\tmaximum size in bytes required for data\n+ */\n+struct v4l2_sdr_format {\n+\t__u32\t\t\t\tpixelformat;\n+\t__u32\t\t\t\tbuffersize;\n+\t__u8\t\t\t\treserved[24];\n+} __attribute__ ((packed));\n+\n+/**\n+ * struct v4l2_meta_format - metadata format definition\n+ * @dataformat:\t\tlittle endian four character code (fourcc)\n+ * @buffersize:\t\tmaximum size in bytes required for data\n+ */\n+struct v4l2_meta_format {\n+\t__u32\t\t\t\tdataformat;\n+\t__u32\t\t\t\tbuffersize;\n+} __attribute__ ((packed));\n+\n+/**\n+ * struct v4l2_format - stream data format\n+ * @type:\tenum v4l2_buf_type; type of the data stream\n+ * @pix:\tdefinition of an image format\n+ * @pix_mp:\tdefinition of a multiplanar image format\n+ * @win:\tdefinition of an overlaid image\n+ * @vbi:\traw VBI capture or output parameters\n+ * @sliced:\tsliced VBI capture or output parameters\n+ * @raw_data:\tplaceholder for future extensions and custom formats\n+ */\n+struct v4l2_format {\n+\t__u32\t type;\n+\tunion {\n+\t\tstruct v4l2_pix_format\t\tpix;     /* V4L2_BUF_TYPE_VIDEO_CAPTURE */\n+\t\tstruct v4l2_pix_format_mplane\tpix_mp;  /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */\n+\t\tstruct v4l2_window\t\twin;     /* V4L2_BUF_TYPE_VIDEO_OVERLAY */\n+\t\tstruct v4l2_vbi_format\t\tvbi;     /* V4L2_BUF_TYPE_VBI_CAPTURE */\n+\t\tstruct v4l2_sliced_vbi_format\tsliced;  /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */\n+\t\tstruct v4l2_sdr_format\t\tsdr;     /* V4L2_BUF_TYPE_SDR_CAPTURE */\n+\t\tstruct v4l2_meta_format\t\tmeta;    /* V4L2_BUF_TYPE_META_CAPTURE */\n+\t\t__u8\traw_data[200];                   /* user-defined */\n+\t} fmt;\n+};\n+\n+/*\tStream type-dependent parameters\n+ */\n+struct v4l2_streamparm {\n+\t__u32\t type;\t\t\t/* enum v4l2_buf_type */\n+\tunion {\n+\t\tstruct v4l2_captureparm\tcapture;\n+\t\tstruct v4l2_outputparm\toutput;\n+\t\t__u8\traw_data[200];  /* user-defined */\n+\t} parm;\n+};\n+\n+/*\n+ *\tE V E N T S\n+ */\n+\n+#define V4L2_EVENT_ALL\t\t\t\t0\n+#define V4L2_EVENT_VSYNC\t\t\t1\n+#define V4L2_EVENT_EOS\t\t\t\t2\n+#define V4L2_EVENT_CTRL\t\t\t\t3\n+#define V4L2_EVENT_FRAME_SYNC\t\t\t4\n+#define V4L2_EVENT_SOURCE_CHANGE\t\t5\n+#define V4L2_EVENT_MOTION_DET\t\t\t6\n+#define V4L2_EVENT_PRIVATE_START\t\t0x08000000\n+\n+/* Payload for V4L2_EVENT_VSYNC */\n+struct v4l2_event_vsync {\n+\t/* Can be V4L2_FIELD_ANY, _NONE, _TOP or _BOTTOM */\n+\t__u8 field;\n+} __attribute__ ((packed));\n+\n+/* Payload for V4L2_EVENT_CTRL */\n+#define V4L2_EVENT_CTRL_CH_VALUE\t\t(1 << 0)\n+#define V4L2_EVENT_CTRL_CH_FLAGS\t\t(1 << 1)\n+#define V4L2_EVENT_CTRL_CH_RANGE\t\t(1 << 2)\n+\n+struct v4l2_event_ctrl {\n+\t__u32 changes;\n+\t__u32 type;\n+\tunion {\n+\t\t__s32 value;\n+\t\t__s64 value64;\n+\t};\n+\t__u32 flags;\n+\t__s32 minimum;\n+\t__s32 maximum;\n+\t__s32 step;\n+\t__s32 default_value;\n+};\n+\n+struct v4l2_event_frame_sync {\n+\t__u32 frame_sequence;\n+};\n+\n+#define V4L2_EVENT_SRC_CH_RESOLUTION\t\t(1 << 0)\n+\n+struct v4l2_event_src_change {\n+\t__u32 changes;\n+};\n+\n+#define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ\t(1 << 0)\n+\n+/**\n+ * struct v4l2_event_motion_det - motion detection event\n+ * @flags:             if V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ is set, then the\n+ *                     frame_sequence field is valid.\n+ * @frame_sequence:    the frame sequence number associated with this event.\n+ * @region_mask:       which regions detected motion.\n+ */\n+struct v4l2_event_motion_det {\n+\t__u32 flags;\n+\t__u32 frame_sequence;\n+\t__u32 region_mask;\n+};\n+\n+struct v4l2_event {\n+\t__u32\t\t\t\ttype;\n+\tunion {\n+\t\tstruct v4l2_event_vsync\t\tvsync;\n+\t\tstruct v4l2_event_ctrl\t\tctrl;\n+\t\tstruct v4l2_event_frame_sync\tframe_sync;\n+\t\tstruct v4l2_event_src_change\tsrc_change;\n+\t\tstruct v4l2_event_motion_det\tmotion_det;\n+\t\t__u8\t\t\t\tdata[64];\n+\t} u;\n+\t__u32\t\t\t\tpending;\n+\t__u32\t\t\t\tsequence;\n+\tstruct timespec\t\t\ttimestamp;\n+\t__u32\t\t\t\tid;\n+\t__u32\t\t\t\treserved[8];\n+};\n+\n+#define V4L2_EVENT_SUB_FL_SEND_INITIAL\t\t(1 << 0)\n+#define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK\t(1 << 1)\n+\n+struct v4l2_event_subscription {\n+\t__u32\t\t\t\ttype;\n+\t__u32\t\t\t\tid;\n+\t__u32\t\t\t\tflags;\n+\t__u32\t\t\t\treserved[5];\n+};\n+\n+/*\n+ *\tA D V A N C E D   D E B U G G I N G\n+ *\n+ *\tNOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS!\n+ *\tFOR DEBUGGING, TESTING AND INTERNAL USE ONLY!\n+ */\n+\n+/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */\n+\n+#define V4L2_CHIP_MATCH_BRIDGE      0  /* Match against chip ID on the bridge (0 for the bridge) */\n+#define V4L2_CHIP_MATCH_SUBDEV      4  /* Match against subdev index */\n+\n+/* The following four defines are no longer in use */\n+#define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE\n+#define V4L2_CHIP_MATCH_I2C_DRIVER  1  /* Match against I2C driver name */\n+#define V4L2_CHIP_MATCH_I2C_ADDR    2  /* Match against I2C 7-bit address */\n+#define V4L2_CHIP_MATCH_AC97        3  /* Match against ancillary AC97 chip */\n+\n+struct v4l2_dbg_match {\n+\t__u32 type; /* Match type */\n+\tunion {     /* Match this chip, meaning determined by type */\n+\t\t__u32 addr;\n+\t\tchar name[32];\n+\t};\n+} __attribute__ ((packed));\n+\n+struct v4l2_dbg_register {\n+\tstruct v4l2_dbg_match match;\n+\t__u32 size;\t/* register size in bytes */\n+\t__u64 reg;\n+\t__u64 val;\n+} __attribute__ ((packed));\n+\n+#define V4L2_CHIP_FL_READABLE (1 << 0)\n+#define V4L2_CHIP_FL_WRITABLE (1 << 1)\n+\n+/* VIDIOC_DBG_G_CHIP_INFO */\n+struct v4l2_dbg_chip_info {\n+\tstruct v4l2_dbg_match match;\n+\tchar name[32];\n+\t__u32 flags;\n+\t__u32 reserved[32];\n+} __attribute__ ((packed));\n+\n+/**\n+ * struct v4l2_create_buffers - VIDIOC_CREATE_BUFS argument\n+ * @index:\ton return, index of the first created buffer\n+ * @count:\tentry: number of requested buffers,\n+ *\t\treturn: number of created buffers\n+ * @memory:\tenum v4l2_memory; buffer memory type\n+ * @format:\tframe format, for which buffers are requested\n+ * @reserved:\tfuture extensions\n+ */\n+struct v4l2_create_buffers {\n+\t__u32\t\t\tindex;\n+\t__u32\t\t\tcount;\n+\t__u32\t\t\tmemory;\n+\tstruct v4l2_format\tformat;\n+\t__u32\t\t\treserved[8];\n+};\n+\n+/*\n+ *\tI O C T L   C O D E S   F O R   V I D E O   D E V I C E S\n+ *\n+ */\n+#define VIDIOC_QUERYCAP\t\t _IOR('V',  0, struct v4l2_capability)\n+#define VIDIOC_ENUM_FMT         _IOWR('V',  2, struct v4l2_fmtdesc)\n+#define VIDIOC_G_FMT\t\t_IOWR('V',  4, struct v4l2_format)\n+#define VIDIOC_S_FMT\t\t_IOWR('V',  5, struct v4l2_format)\n+#define VIDIOC_REQBUFS\t\t_IOWR('V',  8, struct v4l2_requestbuffers)\n+#define VIDIOC_QUERYBUF\t\t_IOWR('V',  9, struct v4l2_buffer)\n+#define VIDIOC_G_FBUF\t\t _IOR('V', 10, struct v4l2_framebuffer)\n+#define VIDIOC_S_FBUF\t\t _IOW('V', 11, struct v4l2_framebuffer)\n+#define VIDIOC_OVERLAY\t\t _IOW('V', 14, int)\n+#define VIDIOC_QBUF\t\t_IOWR('V', 15, struct v4l2_buffer)\n+#define VIDIOC_EXPBUF\t\t_IOWR('V', 16, struct v4l2_exportbuffer)\n+#define VIDIOC_DQBUF\t\t_IOWR('V', 17, struct v4l2_buffer)\n+#define VIDIOC_STREAMON\t\t _IOW('V', 18, int)\n+#define VIDIOC_STREAMOFF\t _IOW('V', 19, int)\n+#define VIDIOC_G_PARM\t\t_IOWR('V', 21, struct v4l2_streamparm)\n+#define VIDIOC_S_PARM\t\t_IOWR('V', 22, struct v4l2_streamparm)\n+#define VIDIOC_G_STD\t\t _IOR('V', 23, v4l2_std_id)\n+#define VIDIOC_S_STD\t\t _IOW('V', 24, v4l2_std_id)\n+#define VIDIOC_ENUMSTD\t\t_IOWR('V', 25, struct v4l2_standard)\n+#define VIDIOC_ENUMINPUT\t_IOWR('V', 26, struct v4l2_input)\n+#define VIDIOC_G_CTRL\t\t_IOWR('V', 27, struct v4l2_control)\n+#define VIDIOC_S_CTRL\t\t_IOWR('V', 28, struct v4l2_control)\n+#define VIDIOC_G_TUNER\t\t_IOWR('V', 29, struct v4l2_tuner)\n+#define VIDIOC_S_TUNER\t\t _IOW('V', 30, struct v4l2_tuner)\n+#define VIDIOC_G_AUDIO\t\t _IOR('V', 33, struct v4l2_audio)\n+#define VIDIOC_S_AUDIO\t\t _IOW('V', 34, struct v4l2_audio)\n+#define VIDIOC_QUERYCTRL\t_IOWR('V', 36, struct v4l2_queryctrl)\n+#define VIDIOC_QUERYMENU\t_IOWR('V', 37, struct v4l2_querymenu)\n+#define VIDIOC_G_INPUT\t\t _IOR('V', 38, int)\n+#define VIDIOC_S_INPUT\t\t_IOWR('V', 39, int)\n+#define VIDIOC_G_EDID\t\t_IOWR('V', 40, struct v4l2_edid)\n+#define VIDIOC_S_EDID\t\t_IOWR('V', 41, struct v4l2_edid)\n+#define VIDIOC_G_OUTPUT\t\t _IOR('V', 46, int)\n+#define VIDIOC_S_OUTPUT\t\t_IOWR('V', 47, int)\n+#define VIDIOC_ENUMOUTPUT\t_IOWR('V', 48, struct v4l2_output)\n+#define VIDIOC_G_AUDOUT\t\t _IOR('V', 49, struct v4l2_audioout)\n+#define VIDIOC_S_AUDOUT\t\t _IOW('V', 50, struct v4l2_audioout)\n+#define VIDIOC_G_MODULATOR\t_IOWR('V', 54, struct v4l2_modulator)\n+#define VIDIOC_S_MODULATOR\t _IOW('V', 55, struct v4l2_modulator)\n+#define VIDIOC_G_FREQUENCY\t_IOWR('V', 56, struct v4l2_frequency)\n+#define VIDIOC_S_FREQUENCY\t _IOW('V', 57, struct v4l2_frequency)\n+#define VIDIOC_CROPCAP\t\t_IOWR('V', 58, struct v4l2_cropcap)\n+#define VIDIOC_G_CROP\t\t_IOWR('V', 59, struct v4l2_crop)\n+#define VIDIOC_S_CROP\t\t _IOW('V', 60, struct v4l2_crop)\n+#define VIDIOC_G_JPEGCOMP\t _IOR('V', 61, struct v4l2_jpegcompression)\n+#define VIDIOC_S_JPEGCOMP\t _IOW('V', 62, struct v4l2_jpegcompression)\n+#define VIDIOC_QUERYSTD\t\t _IOR('V', 63, v4l2_std_id)\n+#define VIDIOC_TRY_FMT\t\t_IOWR('V', 64, struct v4l2_format)\n+#define VIDIOC_ENUMAUDIO\t_IOWR('V', 65, struct v4l2_audio)\n+#define VIDIOC_ENUMAUDOUT\t_IOWR('V', 66, struct v4l2_audioout)\n+#define VIDIOC_G_PRIORITY\t _IOR('V', 67, __u32) /* enum v4l2_priority */\n+#define VIDIOC_S_PRIORITY\t _IOW('V', 68, __u32) /* enum v4l2_priority */\n+#define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)\n+#define VIDIOC_LOG_STATUS         _IO('V', 70)\n+#define VIDIOC_G_EXT_CTRLS\t_IOWR('V', 71, struct v4l2_ext_controls)\n+#define VIDIOC_S_EXT_CTRLS\t_IOWR('V', 72, struct v4l2_ext_controls)\n+#define VIDIOC_TRY_EXT_CTRLS\t_IOWR('V', 73, struct v4l2_ext_controls)\n+#define VIDIOC_ENUM_FRAMESIZES\t_IOWR('V', 74, struct v4l2_frmsizeenum)\n+#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)\n+#define VIDIOC_G_ENC_INDEX       _IOR('V', 76, struct v4l2_enc_idx)\n+#define VIDIOC_ENCODER_CMD      _IOWR('V', 77, struct v4l2_encoder_cmd)\n+#define VIDIOC_TRY_ENCODER_CMD  _IOWR('V', 78, struct v4l2_encoder_cmd)\n+\n+/*\n+ * Experimental, meant for debugging, testing and internal use.\n+ * Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.\n+ * You must be root to use these ioctls. Never use these in applications!\n+ */\n+#define\tVIDIOC_DBG_S_REGISTER\t _IOW('V', 79, struct v4l2_dbg_register)\n+#define\tVIDIOC_DBG_G_REGISTER\t_IOWR('V', 80, struct v4l2_dbg_register)\n+\n+#define VIDIOC_S_HW_FREQ_SEEK\t _IOW('V', 82, struct v4l2_hw_freq_seek)\n+#define\tVIDIOC_S_DV_TIMINGS\t_IOWR('V', 87, struct v4l2_dv_timings)\n+#define\tVIDIOC_G_DV_TIMINGS\t_IOWR('V', 88, struct v4l2_dv_timings)\n+#define\tVIDIOC_DQEVENT\t\t _IOR('V', 89, struct v4l2_event)\n+#define\tVIDIOC_SUBSCRIBE_EVENT\t _IOW('V', 90, struct v4l2_event_subscription)\n+#define\tVIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)\n+#define VIDIOC_CREATE_BUFS\t_IOWR('V', 92, struct v4l2_create_buffers)\n+#define VIDIOC_PREPARE_BUF\t_IOWR('V', 93, struct v4l2_buffer)\n+#define VIDIOC_G_SELECTION\t_IOWR('V', 94, struct v4l2_selection)\n+#define VIDIOC_S_SELECTION\t_IOWR('V', 95, struct v4l2_selection)\n+#define VIDIOC_DECODER_CMD\t_IOWR('V', 96, struct v4l2_decoder_cmd)\n+#define VIDIOC_TRY_DECODER_CMD\t_IOWR('V', 97, struct v4l2_decoder_cmd)\n+#define VIDIOC_ENUM_DV_TIMINGS  _IOWR('V', 98, struct v4l2_enum_dv_timings)\n+#define VIDIOC_QUERY_DV_TIMINGS  _IOR('V', 99, struct v4l2_dv_timings)\n+#define VIDIOC_DV_TIMINGS_CAP   _IOWR('V', 100, struct v4l2_dv_timings_cap)\n+#define VIDIOC_ENUM_FREQ_BANDS\t_IOWR('V', 101, struct v4l2_frequency_band)\n+\n+/*\n+ * Experimental, meant for debugging, testing and internal use.\n+ * Never use this in applications!\n+ */\n+#define VIDIOC_DBG_G_CHIP_INFO  _IOWR('V', 102, struct v4l2_dbg_chip_info)\n+\n+#define VIDIOC_QUERY_EXT_CTRL\t_IOWR('V', 103, struct v4l2_query_ext_ctrl)\n+\n+/* Reminder: when adding new ioctls please add support for them to\n+   drivers/media/v4l2-core/v4l2-compat-ioctl32.c as well! */\n+\n+#define BASE_VIDIOC_PRIVATE\t192\t\t/* 192-255 are private */\n+\n+#endif /* __LINUX_VIDEODEV2_H */\n",
    "prefixes": [
        "libcamera-devel",
        "v3",
        "1/3"
    ]
}