libv4l: SunOS support. This also updates the Linux headers so may improve compatibility on other OS.diff -r1.22 -r1.23 pkgsrc/graphics/libv4l/Makefile
(jperkin)
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | # $NetBSD: Makefile,v 1.22 2021/11/01 20:35:16 wiz Exp $ | 1 | # $NetBSD: Makefile,v 1.23 2022/05/17 11:55:23 jperkin Exp $ | |
2 | 2 | |||
3 | LIBV4L_VERS= 1.22.1 | 3 | LIBV4L_VERS= 1.22.1 | |
4 | DISTNAME= v4l-utils-${LIBV4L_VERS} | 4 | DISTNAME= v4l-utils-${LIBV4L_VERS} | |
5 | CATEGORIES= graphics | 5 | CATEGORIES= graphics | |
6 | PKGNAME= libv4l-${LIBV4L_VERS} | 6 | PKGNAME= libv4l-${LIBV4L_VERS} | |
7 | MASTER_SITES= https://www.linuxtv.org/downloads/v4l-utils/ | 7 | MASTER_SITES= https://www.linuxtv.org/downloads/v4l-utils/ | |
8 | EXTRACT_SUFX= .tar.bz2 | 8 | EXTRACT_SUFX= .tar.bz2 | |
9 | 9 | |||
10 | MAINTAINER= pkgsrc-users@NetBSD.org | 10 | MAINTAINER= pkgsrc-users@NetBSD.org | |
11 | #HOMEPAGE= http://people.atrpms.net/~hdegoede/ | 11 | #HOMEPAGE= http://people.atrpms.net/~hdegoede/ | |
12 | COMMENT= Video4Linux userspace library | 12 | COMMENT= Video4Linux userspace library | |
13 | LICENSE= gnu-gpl-v2 | 13 | LICENSE= gnu-gpl-v2 | |
14 | 14 | |||
@@ -31,31 +31,36 @@ NEWHEADER!= ${GREP} V4L2_SEL_TGT_CROP /u | @@ -31,31 +31,36 @@ NEWHEADER!= ${GREP} V4L2_SEL_TGT_CROP /u | |||
31 | 31 | |||
32 | .if (${OPSYS} == "NetBSD" || ${OPSYS} == "DragonFly") && !exists(/usr/include/sys/videoio.h) | 32 | .if (${OPSYS} == "NetBSD" || ${OPSYS} == "DragonFly") && !exists(/usr/include/sys/videoio.h) | |
33 | PLIST.needs_videoio= yes | 33 | PLIST.needs_videoio= yes | |
34 | INSTALLATION_DIRS+= include/sys | 34 | INSTALLATION_DIRS+= include/sys | |
35 | 35 | |||
36 | pre-configure: | 36 | pre-configure: | |
37 | ${MKDIR} ${BUILDLINK_DIR}/include/sys | 37 | ${MKDIR} ${BUILDLINK_DIR}/include/sys | |
38 | cp ${FILESDIR}/videoio.h ${BUILDLINK_DIR}/include/sys | 38 | cp ${FILESDIR}/videoio.h ${BUILDLINK_DIR}/include/sys | |
39 | 39 | |||
40 | post-install: | 40 | post-install: | |
41 | ${INSTALL_DATA} ${FILESDIR}/videoio.h ${DESTDIR}${PREFIX}/include/sys | 41 | ${INSTALL_DATA} ${FILESDIR}/videoio.h ${DESTDIR}${PREFIX}/include/sys | |
42 | 42 | |||
43 | .elif (${OPSYS} == "NetBSD" || ${OPSYS} == "DragonFly") && ${NEWHEADER} == "no" | 43 | .elif (${OPSYS} == "NetBSD" || ${OPSYS} == "DragonFly") && ${NEWHEADER} == "no" | |
44 | ||||
45 | pre-configure: | 44 | pre-configure: | |
46 | ${MKDIR} ${BUILDLINK_DIR}/include/sys | 45 | ${MKDIR} ${BUILDLINK_DIR}/include/sys | |
47 | cp ${FILESDIR}/videoio.h ${BUILDLINK_DIR}/include/sys | 46 | cp ${FILESDIR}/videoio.h ${BUILDLINK_DIR}/include/sys | |
48 | 47 | |||
48 | .elif ${OPSYS} == "SunOS" | |||
49 | pre-configure: | |||
50 | ${MKDIR} ${BUILDLINK_DIR}/include/linux | |||
51 | cp ${FILESDIR}/videodev2.h ${BUILDLINK_DIR}/include/linux | |||
52 | cp ${FILESDIR}/v4l2-controls.h ${BUILDLINK_DIR}/include/linux | |||
53 | ||||
49 | .elif ${OPSYS} == "Linux" && !exists(/usr/include/linux/videodev.h) | 54 | .elif ${OPSYS} == "Linux" && !exists(/usr/include/linux/videodev.h) | |
50 | pre-configure: | 55 | pre-configure: | |
51 | ${MKDIR} ${BUILDLINK_DIR}/include/linux | 56 | ${MKDIR} ${BUILDLINK_DIR}/include/linux | |
52 | cp ${FILESDIR}/videodev.h ${BUILDLINK_DIR}/include/linux | 57 | cp ${FILESDIR}/videodev.h ${BUILDLINK_DIR}/include/linux | |
53 | ${LN} -sf ${BUILDLINK_DIR}/include/linux/videodev.h \ | 58 | ${LN} -sf ${BUILDLINK_DIR}/include/linux/videodev.h \ | |
54 | ${BUILDLINK_DIR}/include/ | 59 | ${BUILDLINK_DIR}/include/ | |
55 | cp ${FILESDIR}/videodev2.h ${BUILDLINK_DIR}/include/linux | 60 | cp ${FILESDIR}/videodev2.h ${BUILDLINK_DIR}/include/linux | |
56 | ${LN} -sf ${BUILDLINK_DIR}/include/linux/videodev2.h \ | 61 | ${LN} -sf ${BUILDLINK_DIR}/include/linux/videodev2.h \ | |
57 | ${BUILDLINK_DIR}/include/ | 62 | ${BUILDLINK_DIR}/include/ | |
58 | .endif | 63 | .endif | |
59 | 64 | |||
60 | PLIST_VARS= needs_videoio | 65 | PLIST_VARS= needs_videoio | |
61 | 66 |
@@ -1,18 +1,18 @@ | @@ -1,18 +1,18 @@ | |||
1 | $NetBSD: distinfo,v 1.23 2021/11/01 20:35:16 wiz Exp $ | 1 | $NetBSD: distinfo,v 1.24 2022/05/17 11:55:23 jperkin Exp $ | |
2 | 2 | |||
3 | BLAKE2s (v4l-utils-1.22.1.tar.bz2) = 3cf8ea5dc9b3ea40ab80a866134c209e479e8518d4bfc0ad4ead2f7f9db0265d | 3 | BLAKE2s (v4l-utils-1.22.1.tar.bz2) = 3cf8ea5dc9b3ea40ab80a866134c209e479e8518d4bfc0ad4ead2f7f9db0265d | |
4 | SHA512 (v4l-utils-1.22.1.tar.bz2) = 8a634d8995d13f453dfaf90ca5d0dfb26f2f4b10a0d200d76a949c46f77040d12fc0a5b35e05d7b1ba68bcfc85a445be5a5ab1d4a7d4eabfe3a254038ccc6170 | 4 | SHA512 (v4l-utils-1.22.1.tar.bz2) = 8a634d8995d13f453dfaf90ca5d0dfb26f2f4b10a0d200d76a949c46f77040d12fc0a5b35e05d7b1ba68bcfc85a445be5a5ab1d4a7d4eabfe3a254038ccc6170 | |
5 | Size (v4l-utils-1.22.1.tar.bz2) = 2086238 bytes | 5 | Size (v4l-utils-1.22.1.tar.bz2) = 2086238 bytes | |
6 | SHA1 (patch-configure) = 2e3cb8299ea079d4c8fde7577402e7e731abe17d | 6 | SHA1 (patch-configure) = 2e3cb8299ea079d4c8fde7577402e7e731abe17d | |
7 | SHA1 (patch-lib_include_libv4l1-videodev.h) = 84256cb64dd755b8a12edd9844bc362c35f10dd4 | 7 | SHA1 (patch-lib_include_libv4l1-videodev.h) = 84256cb64dd755b8a12edd9844bc362c35f10dd4 | |
8 | SHA1 (patch-lib_include_libv4l2rds.h) = ca375e9bac291c8cc295a3393e0497eb12a01cb9 | 8 | SHA1 (patch-lib_include_libv4l2rds.h) = ca375e9bac291c8cc295a3393e0497eb12a01cb9 | |
9 | SHA1 (patch-lib_include_libv4lconvert.h) = e5807fa26d4e73a001f829640902cf22c14b6dfe | 9 | SHA1 (patch-lib_include_libv4lconvert.h) = e5807fa26d4e73a001f829640902cf22c14b6dfe | |
10 | SHA1 (patch-lib_libv4l-mplane_libv4l-mplane.c) = df0d6f863ce3b7ff4b2ad87b8cd348785d0200c7 | 10 | SHA1 (patch-lib_libv4l-mplane_libv4l-mplane.c) = df0d6f863ce3b7ff4b2ad87b8cd348785d0200c7 | |
11 | SHA1 (patch-lib_libv4l1_libv4l1.c) = 9aa0fd6dccd372f81e409c6ac0768be94957ab31 | 11 | SHA1 (patch-lib_libv4l1_libv4l1.c) = f495eedb0efc9cb1e088984aa0fb06d65ffe3841 | |
12 | SHA1 (patch-lib_libv4l2_libv4l2.c) = f086f39fd25684f91be773637d1922416d224dc4 | 12 | SHA1 (patch-lib_libv4l2_libv4l2.c) = 14146c0b195d1ab3edbde39156478d4b4c146a73 | |
13 | SHA1 (patch-lib_libv4l2_log.c) = bcab0be4b49a38271bbc2b4a1d56f9289a471d40 | 13 | SHA1 (patch-lib_libv4l2_log.c) = bcab0be4b49a38271bbc2b4a1d56f9289a471d40 | |
14 | SHA1 (patch-lib_libv4l2_v4l2convert.c) = f5fefb20f83005b0f91010af6ec9b7f9f76fabe0 | 14 | SHA1 (patch-lib_libv4l2_v4l2convert.c) = f5fefb20f83005b0f91010af6ec9b7f9f76fabe0 | |
15 | SHA1 (patch-lib_libv4l2rds_libv4l2rds.c) = f6779f323a64bb12ea14829241363f2fc0f9ee2c | 15 | SHA1 (patch-lib_libv4l2rds_libv4l2rds.c) = 004cd1a91a6212d2458518166654d2269106eb04 | |
16 | SHA1 (patch-lib_libv4lconvert_control_libv4lcontrol.c) = e4a96570f22d837bbf7248231464a143c339e8ea | 16 | SHA1 (patch-lib_libv4lconvert_control_libv4lcontrol.c) = e4a96570f22d837bbf7248231464a143c339e8ea | |
17 | SHA1 (patch-lib_libv4lconvert_libv4lsyscall-priv.h) = 2795b366f05365bf7a7caa142ff4b93b38603787 | 17 | SHA1 (patch-lib_libv4lconvert_libv4lsyscall-priv.h) = c6dfcc4d84fb1553ebd0396e1b4a9e7e4f43417a | |
18 | SHA1 (patch-lib_libv4lconvert_processing_libv4lprocessing.h) = ecb02a055df546eb0f4bcea96f1a55e312495cdd | 18 | SHA1 (patch-lib_libv4lconvert_processing_libv4lprocessing.h) = ecb02a055df546eb0f4bcea96f1a55e312495cdd |
/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* Video for Linux Two controls header file
*
* Copyright (C) 1999-2012 the contributors
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* Alternatively you can redistribute this file under the terms of the
* BSD license as stated below:
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. The names of its contributors may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The contents of this header was split off from videodev2.h. All control
* definitions should be added to this header, which is included by
* videodev2.h.
*/
#ifndef __LINUX_V4L2_CONTROLS_H
#define __LINUX_V4L2_CONTROLS_H
#if defined(__linux)
#include <linux/const.h>
#include <linux/types.h>
#endif
/* Control classes */
#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
#define V4L2_CTRL_CLASS_CODEC 0x00990000 /* Stateful codec controls */
#define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */
#define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator controls */
#define V4L2_CTRL_CLASS_FLASH 0x009c0000 /* Camera flash controls */
#define V4L2_CTRL_CLASS_JPEG 0x009d0000 /* JPEG-compression controls */
#define V4L2_CTRL_CLASS_IMAGE_SOURCE 0x009e0000 /* Image source controls */
#define V4L2_CTRL_CLASS_IMAGE_PROC 0x009f0000 /* Image processing controls */
#define V4L2_CTRL_CLASS_DV 0x00a00000 /* Digital Video controls */
#define V4L2_CTRL_CLASS_FM_RX 0x00a10000 /* FM Receiver controls */
#define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */
#define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */
#define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000 /* Stateless codecs controls */
#define V4L2_CTRL_CLASS_COLORIMETRY 0x00a50000 /* Colorimetry controls */
/* User-class control IDs */
#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
#define V4L2_CID_USER_BASE V4L2_CID_BASE
#define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)
#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
#define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
#define V4L2_CID_HUE (V4L2_CID_BASE+3)
#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)
#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)
#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)
#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)
#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)
#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)
#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11) /* Deprecated */
#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)
#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)
#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)
#define V4L2_CID_GAMMA (V4L2_CID_BASE+16)
#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA) /* Deprecated */
#define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)
#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)
#define V4L2_CID_GAIN (V4L2_CID_BASE+19)
#define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
enum v4l2_power_line_frequency {
V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1,
V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2,
V4L2_CID_POWER_LINE_FREQUENCY_AUTO = 3,
};
#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25)
#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26)
#define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27)
#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28)
#define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
#define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30)
#define V4L2_CID_COLORFX (V4L2_CID_BASE+31)
enum v4l2_colorfx {
V4L2_COLORFX_NONE = 0,
V4L2_COLORFX_BW = 1,
V4L2_COLORFX_SEPIA = 2,
V4L2_COLORFX_NEGATIVE = 3,
V4L2_COLORFX_EMBOSS = 4,
V4L2_COLORFX_SKETCH = 5,
V4L2_COLORFX_SKY_BLUE = 6,
V4L2_COLORFX_GRASS_GREEN = 7,
V4L2_COLORFX_SKIN_WHITEN = 8,
V4L2_COLORFX_VIVID = 9,
V4L2_COLORFX_AQUA = 10,
V4L2_COLORFX_ART_FREEZE = 11,
V4L2_COLORFX_SILHOUETTE = 12,
V4L2_COLORFX_SOLARIZATION = 13,
V4L2_COLORFX_ANTIQUE = 14,
V4L2_COLORFX_SET_CBCR = 15,
V4L2_COLORFX_SET_RGB = 16,
};
#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32)
#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33)
#define V4L2_CID_ROTATE (V4L2_CID_BASE+34)
#define V4L2_CID_BG_COLOR (V4L2_CID_BASE+35)
#define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE+36)
#define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE+37)
#define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE+38)
#define V4L2_CID_MIN_BUFFERS_FOR_CAPTURE (V4L2_CID_BASE+39)
#define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT (V4L2_CID_BASE+40)
#define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE+41)
#define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE+42)
#define V4L2_CID_COLORFX_RGB (V4L2_CID_BASE+43)
/* last CID + 1 */
#define V4L2_CID_LASTP1 (V4L2_CID_BASE+44)
/* USER-class private control IDs */
/* The base for the meye driver controls. See linux/meye.h for the list
* of controls. We reserve 16 controls for this driver. */
#define V4L2_CID_USER_MEYE_BASE (V4L2_CID_USER_BASE + 0x1000)
/* The base for the bttv driver controls.
* We reserve 32 controls for this driver. */
#define V4L2_CID_USER_BTTV_BASE (V4L2_CID_USER_BASE + 0x1010)
/* The base for the s2255 driver controls.
* We reserve 16 controls for this driver. */
#define V4L2_CID_USER_S2255_BASE (V4L2_CID_USER_BASE + 0x1030)
/*
* The base for the si476x driver controls. See include/media/drv-intf/si476x.h
* for the list of controls. Total of 16 controls is reserved for this driver
*/
#define V4L2_CID_USER_SI476X_BASE (V4L2_CID_USER_BASE + 0x1040)
/* The base for the TI VPE driver controls. Total of 16 controls is reserved for
* this driver */
#define V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_USER_BASE + 0x1050)
/* The base for the saa7134 driver controls.
* We reserve 16 controls for this driver. */
#define V4L2_CID_USER_SAA7134_BASE (V4L2_CID_USER_BASE + 0x1060)
/* The base for the adv7180 driver controls.
* We reserve 16 controls for this driver. */
#define V4L2_CID_USER_ADV7180_BASE (V4L2_CID_USER_BASE + 0x1070)
/* The base for the tc358743 driver controls.
* We reserve 16 controls for this driver. */
#define V4L2_CID_USER_TC358743_BASE (V4L2_CID_USER_BASE + 0x1080)
/* The base for the max217x driver controls.
* We reserve 32 controls for this driver
*/
#define V4L2_CID_USER_MAX217X_BASE (V4L2_CID_USER_BASE + 0x1090)
/* The base for the imx driver controls.
* We reserve 16 controls for this driver. */
#define V4L2_CID_USER_IMX_BASE (V4L2_CID_USER_BASE + 0x10b0)
/*
* The base for the atmel isc driver controls.
* We reserve 32 controls for this driver.
*/
#define V4L2_CID_USER_ATMEL_ISC_BASE (V4L2_CID_USER_BASE + 0x10c0)
/*
* The base for the CODA driver controls.
* We reserve 16 controls for this driver.
*/
#define V4L2_CID_USER_CODA_BASE (V4L2_CID_USER_BASE + 0x10e0)
/*
* The base for MIPI CCS driver controls.
* We reserve 128 controls for this driver.
*/
#define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
/*
* The base for Allegro driver controls.
* We reserve 16 controls for this driver.
*/
#define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
/*
* The base for the isl7998x driver controls.
* We reserve 16 controls for this driver.
*/
#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
/* MPEG-class control IDs */
/* The MPEG controls are applicable to all codec controls
* and the 'MPEG' part of the define is historical */
#define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
#define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
/* MPEG streams, specific to multiplexed streams */
#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE+0)
enum v4l2_mpeg_stream_type {
V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */
V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */
V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2, /* MPEG-1 system stream */
V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3, /* MPEG-2 DVD-compatible stream */
V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */
V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */
};
#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_CODEC_BASE+1)
#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_CODEC_BASE+2)
#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_CODEC_BASE+3)
#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_CODEC_BASE+4)
#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_CODEC_BASE+5)
#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_CODEC_BASE+6)
#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_CODEC_BASE+7)
enum v4l2_mpeg_stream_vbi_fmt {
V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */
V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */
};
/* MPEG audio controls specific to multiplexed streams */
#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_CODEC_BASE+100)
enum v4l2_mpeg_audio_sampling_freq {
V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
};
#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_CODEC_BASE+101)
enum v4l2_mpeg_audio_encoding {
V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
};
#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_CODEC_BASE+102)
enum v4l2_mpeg_audio_l1_bitrate {
V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2,
V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
};
#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_CODEC_BASE+103)
enum v4l2_mpeg_audio_l2_bitrate {
V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2,
V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3,
V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4,
V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5,
V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
};
#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_CODEC_BASE+104)
enum v4l2_mpeg_audio_l3_bitrate {
V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2,
V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3,
V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4,
V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5,
V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6,
V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
};
#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_CODEC_BASE+105)
enum v4l2_mpeg_audio_mode {
V4L2_MPEG_AUDIO_MODE_STEREO = 0,
V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
V4L2_MPEG_AUDIO_MODE_DUAL = 2,
V4L2_MPEG_AUDIO_MODE_MONO = 3,
};
#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_CODEC_BASE+106)
enum v4l2_mpeg_audio_mode_extension {
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
};
#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_CODEC_BASE+107)
enum v4l2_mpeg_audio_emphasis {
V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
};
#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_CODEC_BASE+108)
enum v4l2_mpeg_audio_crc {
V4L2_MPEG_AUDIO_CRC_NONE = 0,
V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
};
#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_CODEC_BASE+109)
#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_CODEC_BASE+110)
#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_CODEC_BASE+111)
enum v4l2_mpeg_audio_ac3_bitrate {
V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2,
V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3,
V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4,
V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5,
V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6,
V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
};
#define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (V4L2_CID_CODEC_BASE+112)
enum v4l2_mpeg_audio_dec_playback {
V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO = 0,
V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO = 1,
V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT = 2,
V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT = 3,
V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO = 4,
V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,
};
#define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_CODEC_BASE+113)
/* MPEG video controls specific to multiplexed streams */
#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_CODEC_BASE+200)
enum v4l2_mpeg_video_encoding {
V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
};
#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_CODEC_BASE+201)
enum v4l2_mpeg_video_aspect {
V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
};
#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_CODEC_BASE+202)
#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_CODEC_BASE+203)
#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_CODEC_BASE+204)
#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_CODEC_BASE+205)
#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_CODEC_BASE+206)
enum v4l2_mpeg_video_bitrate_mode {
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
V4L2_MPEG_VIDEO_BITRATE_MODE_CQ = 2,
};
#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_CODEC_BASE+207)
#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_CODEC_BASE+208)
#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_CODEC_BASE+209)
#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_CODEC_BASE+210)
#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_CODEC_BASE+211)
#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_CODEC_BASE+212)
#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_CODEC_BASE+213)
#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_CODEC_BASE+214)
#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_CODEC_BASE+215)
#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_CODEC_BASE+216)
enum v4l2_mpeg_video_header_mode {
V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,
V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,
};
#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_CODEC_BASE+217)
#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_CODEC_BASE+218)
#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_CODEC_BASE+219)
#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_CODEC_BASE+220)
#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_CODEC_BASE+221)
enum v4l2_mpeg_video_multi_slice_mode {
V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB = 1,
V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES = 2,
#ifndef __KERNEL__
/* Kept for backwards compatibility reasons. Stupid typo... */
V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1,
V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
#endif
};
#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_CODEC_BASE+222)
#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_CODEC_BASE+223)
#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_CODEC_BASE+224)
#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_CODEC_BASE+225)
#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_CODEC_BASE+226)
#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_CODEC_BASE+227)
#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_CODEC_BASE+228)
#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_CODEC_BASE+229)
#define V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID (V4L2_CID_CODEC_BASE+230)
#define V4L2_CID_MPEG_VIDEO_AU_DELIMITER (V4L2_CID_CODEC_BASE+231)
#define V4L2_CID_MPEG_VIDEO_LTR_COUNT (V4L2_CID_CODEC_BASE+232)
#define V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX (V4L2_CID_CODEC_BASE+233)
#define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE+234)
#define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE+235)
#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE+236)
/* CIDs for the MPEG-2 Part 2 (H.262) codec */
#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE+270)
enum v4l2_mpeg_video_mpeg2_level {
V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
V4L2_MPEG_VIDEO_MPEG2_LEVEL_MAIN = 1,
V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH_1440 = 2,
V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH = 3,
};
#define V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE (V4L2_CID_CODEC_BASE+271)
enum v4l2_mpeg_video_mpeg2_profile {
V4L2_MPEG_VIDEO_MPEG2_PROFILE_SIMPLE = 0,
V4L2_MPEG_VIDEO_MPEG2_PROFILE_MAIN = 1,
V4L2_MPEG_VIDEO_MPEG2_PROFILE_SNR_SCALABLE = 2,
V4L2_MPEG_VIDEO_MPEG2_PROFILE_SPATIALLY_SCALABLE = 3,
V4L2_MPEG_VIDEO_MPEG2_PROFILE_HIGH = 4,
V4L2_MPEG_VIDEO_MPEG2_PROFILE_MULTIVIEW = 5,
};
/* CIDs for the FWHT codec as used by the vicodec driver. */
#define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_CODEC_BASE + 290)
#define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_CODEC_BASE + 291)
#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_CODEC_BASE+300)
#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_CODEC_BASE+301)
#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_CODEC_BASE+302)
#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_CODEC_BASE+303)
#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_CODEC_BASE+304)
#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_CODEC_BASE+350)
#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_CODEC_BASE+351)
#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_CODEC_BASE+352)
#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_CODEC_BASE+353)
#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_CODEC_BASE+354)
#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_CODEC_BASE+355)
#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_CODEC_BASE+356)
#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_CODEC_BASE+357)
enum v4l2_mpeg_video_h264_entropy_mode {
V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
};
#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_CODEC_BASE+358)
#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_CODEC_BASE+359)
enum v4l2_mpeg_video_h264_level {
V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,
V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,
V4L2_MPEG_VIDEO_H264_LEVEL_1_1 = 2,
V4L2_MPEG_VIDEO_H264_LEVEL_1_2 = 3,
V4L2_MPEG_VIDEO_H264_LEVEL_1_3 = 4,
V4L2_MPEG_VIDEO_H264_LEVEL_2_0 = 5,
V4L2_MPEG_VIDEO_H264_LEVEL_2_1 = 6,
V4L2_MPEG_VIDEO_H264_LEVEL_2_2 = 7,
V4L2_MPEG_VIDEO_H264_LEVEL_3_0 = 8,
V4L2_MPEG_VIDEO_H264_LEVEL_3_1 = 9,
V4L2_MPEG_VIDEO_H264_LEVEL_3_2 = 10,
V4L2_MPEG_VIDEO_H264_LEVEL_4_0 = 11,
V4L2_MPEG_VIDEO_H264_LEVEL_4_1 = 12,
V4L2_MPEG_VIDEO_H264_LEVEL_4_2 = 13,
V4L2_MPEG_VIDEO_H264_LEVEL_5_0 = 14,
V4L2_MPEG_VIDEO_H264_LEVEL_5_1 = 15,
V4L2_MPEG_VIDEO_H264_LEVEL_5_2 = 16,
V4L2_MPEG_VIDEO_H264_LEVEL_6_0 = 17,
V4L2_MPEG_VIDEO_H264_LEVEL_6_1 = 18,
V4L2_MPEG_VIDEO_H264_LEVEL_6_2 = 19,
};
#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_CODEC_BASE+360)
#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_CODEC_BASE+361)
#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE+362)
enum v4l2_mpeg_video_h264_loop_filter_mode {
V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,
V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,
V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
};
#define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_CODEC_BASE+363)
enum v4l2_mpeg_video_h264_profile {
V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,
V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,
V4L2_MPEG_VIDEO_H264_PROFILE_MAIN = 2,
V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED = 3,
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH = 4,
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10 = 5,
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422 = 6,
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE = 7,
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA = 8,
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA = 9,
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA = 10,
V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA = 11,
V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE = 12,
V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH = 13,
V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA = 14,
V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH = 15,
V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,
V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH = 17,
};
#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_CODEC_BASE+364)
#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_CODEC_BASE+365)
#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_CODEC_BASE+366)
#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_CODEC_BASE+367)
enum v4l2_mpeg_video_h264_vui_sar_idc {
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11 = 2,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11 = 3,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11 = 4,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33 = 5,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11 = 6,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11 = 7,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11 = 8,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33 = 9,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11 = 10,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11 = 11,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33 = 12,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99 = 13,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3 = 14,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2 = 15,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,
V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,
};
#define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_CODEC_BASE+368)
#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_CODEC_BASE+369)
#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_CODEC_BASE+370)
enum v4l2_mpeg_video_h264_sei_fp_arrangement_type {
V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD = 0,
V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN = 1,
V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW = 2,
V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE = 3,
V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM = 4,
V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL = 5,
};
#define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_CODEC_BASE+371)
#define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_CODEC_BASE+372)
enum v4l2_mpeg_video_h264_fmo_map_type {
V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES = 0,
V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES = 1,
V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER = 2,
V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT = 3,
V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN = 4,
V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN = 5,
V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT = 6,
};
#define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_CODEC_BASE+373)
#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_CODEC_BASE+374)
enum v4l2_mpeg_video_h264_fmo_change_dir {
V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT = 0,
V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT = 1,
};
#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_CODEC_BASE+375)
#define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_CODEC_BASE+376)
#define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_CODEC_BASE+377)
#define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_CODEC_BASE+378)
#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_CODEC_BASE+379)
#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_CODEC_BASE+380)
enum v4l2_mpeg_video_h264_hierarchical_coding_type {
V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B = 0,
V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P = 1,
};
#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_CODEC_BASE+381)
#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_CODEC_BASE+382)
#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_CODEC_BASE+383)
#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_CODEC_BASE+384)
#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_CODEC_BASE+385)
#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_CODEC_BASE+386)
#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_CODEC_BASE+387)
#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_CODEC_BASE+388)
#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP (V4L2_CID_CODEC_BASE+389)
#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP (V4L2_CID_CODEC_BASE+390)
#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR (V4L2_CID_CODEC_BASE+391)
#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR (V4L2_CID_CODEC_BASE+392)
#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR (V4L2_CID_CODEC_BASE+393)
#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR (V4L2_CID_CODEC_BASE+394)
#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR (V4L2_CID_CODEC_BASE+395)
#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR (V4L2_CID_CODEC_BASE+396)
#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L6_BR (V4L2_CID_CODEC_BASE+397)
#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_CODEC_BASE+400)
#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_CODEC_BASE+401)
#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_CODEC_BASE+402)
#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_CODEC_BASE+403)
#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_CODEC_BASE+404)
#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_CODEC_BASE+405)
enum v4l2_mpeg_video_mpeg4_level {
V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,
V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,
V4L2_MPEG_VIDEO_MPEG4_LEVEL_1 = 2,
V4L2_MPEG_VIDEO_MPEG4_LEVEL_2 = 3,
V4L2_MPEG_VIDEO_MPEG4_LEVEL_3 = 4,
V4L2_MPEG_VIDEO_MPEG4_LEVEL_3B = 5,
V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,
V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,
};
#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_CODEC_BASE+406)
enum v4l2_mpeg_video_mpeg4_profile {
V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,
V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,
V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE = 2,
V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,
V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,
};
#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_CODEC_BASE+407)
/* Control IDs for VP8 streams
* Although VP8 is not part of MPEG we add these controls to the MPEG class
* as that class is already handling other video compression standards
*/
#define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (V4L2_CID_CODEC_BASE+500)
enum v4l2_vp8_num_partitions {
V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION = 0,
V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS = 1,
V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS = 2,
V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS = 3,
};
#define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (V4L2_CID_CODEC_BASE+501)
#define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (V4L2_CID_CODEC_BASE+502)
enum v4l2_vp8_num_ref_frames {
V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME = 0,
V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME = 1,
V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME = 2,
};
#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (V4L2_CID_CODEC_BASE+503)
#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (V4L2_CID_CODEC_BASE+504)
#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_CODEC_BASE+505)
#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (V4L2_CID_CODEC_BASE+506)
enum v4l2_vp8_golden_frame_sel {
V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV = 0,
V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD = 1,
};
#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_CODEC_BASE+507)
#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_CODEC_BASE+508)
#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_CODEC_BASE+509)
#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_CODEC_BASE+510)
#define V4L2_CID_MPEG_VIDEO_VP8_PROFILE (V4L2_CID_CODEC_BASE+511)
enum v4l2_mpeg_video_vp8_profile {
V4L2_MPEG_VIDEO_VP8_PROFILE_0 = 0,
V4L2_MPEG_VIDEO_VP8_PROFILE_1 = 1,
V4L2_MPEG_VIDEO_VP8_PROFILE_2 = 2,
V4L2_MPEG_VIDEO_VP8_PROFILE_3 = 3,
};
/* Deprecated alias for compatibility reasons. */
#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE V4L2_CID_MPEG_VIDEO_VP8_PROFILE
#define V4L2_CID_MPEG_VIDEO_VP9_PROFILE (V4L2_CID_CODEC_BASE+512)
enum v4l2_mpeg_video_vp9_profile {
V4L2_MPEG_VIDEO_VP9_PROFILE_0 = 0,
V4L2_MPEG_VIDEO_VP9_PROFILE_1 = 1,
V4L2_MPEG_VIDEO_VP9_PROFILE_2 = 2,
V4L2_MPEG_VIDEO_VP9_PROFILE_3 = 3,
};
#define V4L2_CID_MPEG_VIDEO_VP9_LEVEL (V4L2_CID_CODEC_BASE+513)
enum v4l2_mpeg_video_vp9_level {
V4L2_MPEG_VIDEO_VP9_LEVEL_1_0 = 0,
V4L2_MPEG_VIDEO_VP9_LEVEL_1_1 = 1,
V4L2_MPEG_VIDEO_VP9_LEVEL_2_0 = 2,
V4L2_MPEG_VIDEO_VP9_LEVEL_2_1 = 3,
V4L2_MPEG_VIDEO_VP9_LEVEL_3_0 = 4,
V4L2_MPEG_VIDEO_VP9_LEVEL_3_1 = 5,
V4L2_MPEG_VIDEO_VP9_LEVEL_4_0 = 6,
V4L2_MPEG_VIDEO_VP9_LEVEL_4_1 = 7,
V4L2_MPEG_VIDEO_VP9_LEVEL_5_0 = 8,
V4L2_MPEG_VIDEO_VP9_LEVEL_5_1 = 9,
V4L2_MPEG_VIDEO_VP9_LEVEL_5_2 = 10,
V4L2_MPEG_VIDEO_VP9_LEVEL_6_0 = 11,
V4L2_MPEG_VIDEO_VP9_LEVEL_6_1 = 12,
V4L2_MPEG_VIDEO_VP9_LEVEL_6_2 = 13,
};
/* CIDs for HEVC encoding. */
#define V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_CODEC_BASE + 600)
#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_CODEC_BASE + 601)
#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (V4L2_CID_CODEC_BASE + 602)
#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (V4L2_CID_CODEC_BASE + 603)
#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (V4L2_CID_CODEC_BASE + 604)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (V4L2_CID_CODEC_BASE + 605)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE (V4L2_CID_CODEC_BASE + 606)
enum v4l2_mpeg_video_hevc_hier_coding_type {
V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B = 0,
V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P = 1,
};
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (V4L2_CID_CODEC_BASE + 607)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (V4L2_CID_CODEC_BASE + 608)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (V4L2_CID_CODEC_BASE + 609)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (V4L2_CID_CODEC_BASE + 610)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (V4L2_CID_CODEC_BASE + 611)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (V4L2_CID_CODEC_BASE + 612)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (V4L2_CID_CODEC_BASE + 613)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (V4L2_CID_CODEC_BASE + 614)
#define V4L2_CID_MPEG_VIDEO_HEVC_PROFILE (V4L2_CID_CODEC_BASE + 615)
enum v4l2_mpeg_video_hevc_profile {
V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN = 0,
V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE = 1,
V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10 = 2,
};
#define V4L2_CID_MPEG_VIDEO_HEVC_LEVEL (V4L2_CID_CODEC_BASE + 616)
enum v4l2_mpeg_video_hevc_level {
V4L2_MPEG_VIDEO_HEVC_LEVEL_1 = 0,
V4L2_MPEG_VIDEO_HEVC_LEVEL_2 = 1,
V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1 = 2,
V4L2_MPEG_VIDEO_HEVC_LEVEL_3 = 3,
V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1 = 4,
V4L2_MPEG_VIDEO_HEVC_LEVEL_4 = 5,
V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1 = 6,
V4L2_MPEG_VIDEO_HEVC_LEVEL_5 = 7,
V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1 = 8,
V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2 = 9,
V4L2_MPEG_VIDEO_HEVC_LEVEL_6 = 10,
V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1 = 11,
V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2 = 12,
};
#define V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (V4L2_CID_CODEC_BASE + 617)
#define V4L2_CID_MPEG_VIDEO_HEVC_TIER (V4L2_CID_CODEC_BASE + 618)
enum v4l2_mpeg_video_hevc_tier {
V4L2_MPEG_VIDEO_HEVC_TIER_MAIN = 0,
V4L2_MPEG_VIDEO_HEVC_TIER_HIGH = 1,
};
#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_CODEC_BASE + 619)
#define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE + 620)
enum v4l2_cid_mpeg_video_hevc_loop_filter_mode {
V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED = 0,
V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED = 1,
V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
};
#define V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (V4L2_CID_CODEC_BASE + 621)
#define V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (V4L2_CID_CODEC_BASE + 622)
#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE (V4L2_CID_CODEC_BASE + 623)
enum v4l2_cid_mpeg_video_hevc_refresh_type {
V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE = 0,
V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA = 1,
V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR = 2,
};
#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 624)
#define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_CODEC_BASE + 625)
#define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_CODEC_BASE + 626)
#define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_CODEC_BASE + 627)
#define V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (V4L2_CID_CODEC_BASE + 628)
#define V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (V4L2_CID_CODEC_BASE + 629)
#define V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (V4L2_CID_CODEC_BASE + 630)
#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (V4L2_CID_CODEC_BASE + 631)
#define V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT (V4L2_CID_CODEC_BASE + 632)
#define V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (V4L2_CID_CODEC_BASE + 633)
#define V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (V4L2_CID_CODEC_BASE + 634)
#define V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD (V4L2_CID_CODEC_BASE + 635)
enum v4l2_cid_mpeg_video_hevc_size_of_length_field {
V4L2_MPEG_VIDEO_HEVC_SIZE_0 = 0,
V4L2_MPEG_VIDEO_HEVC_SIZE_1 = 1,
V4L2_MPEG_VIDEO_HEVC_SIZE_2 = 2,
V4L2_MPEG_VIDEO_HEVC_SIZE_4 = 3,
};
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (V4L2_CID_CODEC_BASE + 636)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (V4L2_CID_CODEC_BASE + 637)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (V4L2_CID_CODEC_BASE + 638)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (V4L2_CID_CODEC_BASE + 639)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (V4L2_CID_CODEC_BASE + 640)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (V4L2_CID_CODEC_BASE + 641)
#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_CODEC_BASE + 642)
#define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_CODEC_BASE + 643)
#define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_CODEC_BASE + 644)
#define V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY (V4L2_CID_CODEC_BASE + 645)
#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_CODEC_BASE + 646)
enum v4l2_mpeg_video_frame_skip_mode {
V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
};
#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 647)
#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 648)
#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 649)
#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 650)
#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 651)
#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 652)
#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY (V4L2_CID_CODEC_BASE + 653)
#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE (V4L2_CID_CODEC_BASE + 654)
/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
#define V4L2_CID_CODEC_CX2341X_BASE (V4L2_CTRL_CLASS_CODEC | 0x1000)
#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE+0)
enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
};
#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_CODEC_CX2341X_BASE+1)
#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE+2)
enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2,
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
};
#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE+3)
enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
};
#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE+4)
enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
};
#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_CODEC_CX2341X_BASE+5)
#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE+6)
enum v4l2_mpeg_cx2341x_video_median_filter_type {
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2,
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
};
#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_CODEC_CX2341X_BASE+7)
#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_CODEC_CX2341X_BASE+8)
#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_CODEC_CX2341X_BASE+9)
#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_CODEC_CX2341X_BASE+10)
#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_CODEC_CX2341X_BASE+11)
/* MPEG-class control IDs specific to the Samsung MFC 5.1 driver as defined by V4L2 */
#define V4L2_CID_CODEC_MFC51_BASE (V4L2_CTRL_CLASS_CODEC | 0x1100)
#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_CODEC_MFC51_BASE+0)
#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_CODEC_MFC51_BASE+1)
#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_CODEC_MFC51_BASE+2)
enum v4l2_mpeg_mfc51_video_frame_skip_mode {
V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
};
#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_CODEC_MFC51_BASE+3)
enum v4l2_mpeg_mfc51_video_force_frame_type {
V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,
V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,
V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,
};
#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_CODEC_MFC51_BASE+4)
#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_CODEC_MFC51_BASE+5)
#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_CODEC_MFC51_BASE+6)
#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_CODEC_MFC51_BASE+7)
#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_CODEC_MFC51_BASE+50)
#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_CODEC_MFC51_BASE+51)
#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_CODEC_MFC51_BASE+52)
#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_CODEC_MFC51_BASE+53)
#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_CODEC_MFC51_BASE+54)
/* Camera class control IDs */
#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
#define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1)
enum v4l2_exposure_auto_type {
V4L2_EXPOSURE_AUTO = 0,
V4L2_EXPOSURE_MANUAL = 1,
V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
V4L2_EXPOSURE_APERTURE_PRIORITY = 3
};
#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2)
#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3)
#define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4)
#define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5)
#define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6)
#define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7)
#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8)
#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9)
#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)
#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)
#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12)
#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)
#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)
#define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE+15)
#define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16)
#define V4L2_CID_IRIS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+17)
#define V4L2_CID_IRIS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+18)
#define V4L2_CID_AUTO_EXPOSURE_BIAS (V4L2_CID_CAMERA_CLASS_BASE+19)
#define V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE (V4L2_CID_CAMERA_CLASS_BASE+20)
enum v4l2_auto_n_preset_white_balance {
V4L2_WHITE_BALANCE_MANUAL = 0,
V4L2_WHITE_BALANCE_AUTO = 1,
V4L2_WHITE_BALANCE_INCANDESCENT = 2,
V4L2_WHITE_BALANCE_FLUORESCENT = 3,
V4L2_WHITE_BALANCE_FLUORESCENT_H = 4,
V4L2_WHITE_BALANCE_HORIZON = 5,
V4L2_WHITE_BALANCE_DAYLIGHT = 6,
V4L2_WHITE_BALANCE_FLASH = 7,
V4L2_WHITE_BALANCE_CLOUDY = 8,
V4L2_WHITE_BALANCE_SHADE = 9,
};
#define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE+21)
#define V4L2_CID_IMAGE_STABILIZATION (V4L2_CID_CAMERA_CLASS_BASE+22)
#define V4L2_CID_ISO_SENSITIVITY (V4L2_CID_CAMERA_CLASS_BASE+23)
#define V4L2_CID_ISO_SENSITIVITY_AUTO (V4L2_CID_CAMERA_CLASS_BASE+24)
enum v4l2_iso_sensitivity_auto_type {
V4L2_ISO_SENSITIVITY_MANUAL = 0,
V4L2_ISO_SENSITIVITY_AUTO = 1,
};
#define V4L2_CID_EXPOSURE_METERING (V4L2_CID_CAMERA_CLASS_BASE+25)
enum v4l2_exposure_metering {
V4L2_EXPOSURE_METERING_AVERAGE = 0,
V4L2_EXPOSURE_METERING_CENTER_WEIGHTED = 1,
V4L2_EXPOSURE_METERING_SPOT = 2,
V4L2_EXPOSURE_METERING_MATRIX = 3,
};
#define V4L2_CID_SCENE_MODE (V4L2_CID_CAMERA_CLASS_BASE+26)
enum v4l2_scene_mode {
V4L2_SCENE_MODE_NONE = 0,
V4L2_SCENE_MODE_BACKLIGHT = 1,
V4L2_SCENE_MODE_BEACH_SNOW = 2,
V4L2_SCENE_MODE_CANDLE_LIGHT = 3,
V4L2_SCENE_MODE_DAWN_DUSK = 4,
V4L2_SCENE_MODE_FALL_COLORS = 5,
V4L2_SCENE_MODE_FIREWORKS = 6,
V4L2_SCENE_MODE_LANDSCAPE = 7,
V4L2_SCENE_MODE_NIGHT = 8,
V4L2_SCENE_MODE_PARTY_INDOOR = 9,
V4L2_SCENE_MODE_PORTRAIT = 10,
V4L2_SCENE_MODE_SPORTS = 11,
V4L2_SCENE_MODE_SUNSET = 12,
V4L2_SCENE_MODE_TEXT = 13,
};
#define V4L2_CID_3A_LOCK (V4L2_CID_CAMERA_CLASS_BASE+27)
#define V4L2_LOCK_EXPOSURE (1 << 0)
#define V4L2_LOCK_WHITE_BALANCE (1 << 1)
#define V4L2_LOCK_FOCUS (1 << 2)
#define V4L2_CID_AUTO_FOCUS_START (V4L2_CID_CAMERA_CLASS_BASE+28)
#define V4L2_CID_AUTO_FOCUS_STOP (V4L2_CID_CAMERA_CLASS_BASE+29)
#define V4L2_CID_AUTO_FOCUS_STATUS (V4L2_CID_CAMERA_CLASS_BASE+30)
#define V4L2_AUTO_FOCUS_STATUS_IDLE (0 << 0)
#define V4L2_AUTO_FOCUS_STATUS_BUSY (1 << 0)
#define V4L2_AUTO_FOCUS_STATUS_REACHED (1 << 1)
#define V4L2_AUTO_FOCUS_STATUS_FAILED (1 << 2)
#define V4L2_CID_AUTO_FOCUS_RANGE (V4L2_CID_CAMERA_CLASS_BASE+31)
enum v4l2_auto_focus_range {
V4L2_AUTO_FOCUS_RANGE_AUTO = 0,
V4L2_AUTO_FOCUS_RANGE_NORMAL = 1,
V4L2_AUTO_FOCUS_RANGE_MACRO = 2,
V4L2_AUTO_FOCUS_RANGE_INFINITY = 3,
};
#define V4L2_CID_PAN_SPEED (V4L2_CID_CAMERA_CLASS_BASE+32)
#define V4L2_CID_TILT_SPEED (V4L2_CID_CAMERA_CLASS_BASE+33)
#define V4L2_CID_CAMERA_ORIENTATION (V4L2_CID_CAMERA_CLASS_BASE+34)
#define V4L2_CAMERA_ORIENTATION_FRONT 0
#define V4L2_CAMERA_ORIENTATION_BACK 1
#define V4L2_CAMERA_ORIENTATION_EXTERNAL 2
#define V4L2_CID_CAMERA_SENSOR_ROTATION (V4L2_CID_CAMERA_CLASS_BASE+35)
/* FM Modulator class control IDs */
#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
#define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
#define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1)
#define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2)
#define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3)
#define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5)
#define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6)
#define V4L2_CID_RDS_TX_MONO_STEREO (V4L2_CID_FM_TX_CLASS_BASE + 7)
#define V4L2_CID_RDS_TX_ARTIFICIAL_HEAD (V4L2_CID_FM_TX_CLASS_BASE + 8)
#define V4L2_CID_RDS_TX_COMPRESSED (V4L2_CID_FM_TX_CLASS_BASE + 9)
#define V4L2_CID_RDS_TX_DYNAMIC_PTY (V4L2_CID_FM_TX_CLASS_BASE + 10)
#define V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT (V4L2_CID_FM_TX_CLASS_BASE + 11)
#define V4L2_CID_RDS_TX_TRAFFIC_PROGRAM (V4L2_CID_FM_TX_CLASS_BASE + 12)
#define V4L2_CID_RDS_TX_MUSIC_SPEECH (V4L2_CID_FM_TX_CLASS_BASE + 13)
#define V4L2_CID_RDS_TX_ALT_FREQS_ENABLE (V4L2_CID_FM_TX_CLASS_BASE + 14)
#define V4L2_CID_RDS_TX_ALT_FREQS (V4L2_CID_FM_TX_CLASS_BASE + 15)
#define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64)
#define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65)
#define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66)
#define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80)
#define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81)
#define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82)
#define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83)
#define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84)
#define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96)
#define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97)
#define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98)
#define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112)
enum v4l2_preemphasis {
V4L2_PREEMPHASIS_DISABLED = 0,
V4L2_PREEMPHASIS_50_uS = 1,
V4L2_PREEMPHASIS_75_uS = 2,
};
#define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113)
#define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114)
/* Flash and privacy (indicator) light controls */
#define V4L2_CID_FLASH_CLASS_BASE (V4L2_CTRL_CLASS_FLASH | 0x900)
#define V4L2_CID_FLASH_CLASS (V4L2_CTRL_CLASS_FLASH | 1)
#define V4L2_CID_FLASH_LED_MODE (V4L2_CID_FLASH_CLASS_BASE + 1)
enum v4l2_flash_led_mode {
V4L2_FLASH_LED_MODE_NONE,
V4L2_FLASH_LED_MODE_FLASH,
V4L2_FLASH_LED_MODE_TORCH,
};
#define V4L2_CID_FLASH_STROBE_SOURCE (V4L2_CID_FLASH_CLASS_BASE + 2)
enum v4l2_flash_strobe_source {
V4L2_FLASH_STROBE_SOURCE_SOFTWARE,
V4L2_FLASH_STROBE_SOURCE_EXTERNAL,
};
#define V4L2_CID_FLASH_STROBE (V4L2_CID_FLASH_CLASS_BASE + 3)
#define V4L2_CID_FLASH_STROBE_STOP (V4L2_CID_FLASH_CLASS_BASE + 4)
#define V4L2_CID_FLASH_STROBE_STATUS (V4L2_CID_FLASH_CLASS_BASE + 5)
#define V4L2_CID_FLASH_TIMEOUT (V4L2_CID_FLASH_CLASS_BASE + 6)
#define V4L2_CID_FLASH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 7)
#define V4L2_CID_FLASH_TORCH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 8)
#define V4L2_CID_FLASH_INDICATOR_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 9)
#define V4L2_CID_FLASH_FAULT (V4L2_CID_FLASH_CLASS_BASE + 10)
#define V4L2_FLASH_FAULT_OVER_VOLTAGE (1 << 0)
#define V4L2_FLASH_FAULT_TIMEOUT (1 << 1)
#define V4L2_FLASH_FAULT_OVER_TEMPERATURE (1 << 2)
#define V4L2_FLASH_FAULT_SHORT_CIRCUIT (1 << 3)
#define V4L2_FLASH_FAULT_OVER_CURRENT (1 << 4)
#define V4L2_FLASH_FAULT_INDICATOR (1 << 5)
#define V4L2_FLASH_FAULT_UNDER_VOLTAGE (1 << 6)
#define V4L2_FLASH_FAULT_INPUT_VOLTAGE (1 << 7)
#define V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE (1 << 8)
#define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11)
#define V4L2_CID_FLASH_READY (V4L2_CID_FLASH_CLASS_BASE + 12)
/* JPEG-class control IDs */
#define V4L2_CID_JPEG_CLASS_BASE (V4L2_CTRL_CLASS_JPEG | 0x900)
#define V4L2_CID_JPEG_CLASS (V4L2_CTRL_CLASS_JPEG | 1)
#define V4L2_CID_JPEG_CHROMA_SUBSAMPLING (V4L2_CID_JPEG_CLASS_BASE + 1)
enum v4l2_jpeg_chroma_subsampling {
V4L2_JPEG_CHROMA_SUBSAMPLING_444 = 0,
V4L2_JPEG_CHROMA_SUBSAMPLING_422 = 1,
V4L2_JPEG_CHROMA_SUBSAMPLING_420 = 2,
V4L2_JPEG_CHROMA_SUBSAMPLING_411 = 3,
V4L2_JPEG_CHROMA_SUBSAMPLING_410 = 4,
V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY = 5,
};
#define V4L2_CID_JPEG_RESTART_INTERVAL (V4L2_CID_JPEG_CLASS_BASE + 2)
#define V4L2_CID_JPEG_COMPRESSION_QUALITY (V4L2_CID_JPEG_CLASS_BASE + 3)
#define V4L2_CID_JPEG_ACTIVE_MARKER (V4L2_CID_JPEG_CLASS_BASE + 4)
#define V4L2_JPEG_ACTIVE_MARKER_APP0 (1 << 0)
#define V4L2_JPEG_ACTIVE_MARKER_APP1 (1 << 1)
#define V4L2_JPEG_ACTIVE_MARKER_COM (1 << 16)
#define V4L2_JPEG_ACTIVE_MARKER_DQT (1 << 17)
#define V4L2_JPEG_ACTIVE_MARKER_DHT (1 << 18)
/* Image source controls */
#define V4L2_CID_IMAGE_SOURCE_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)
#define V4L2_CID_IMAGE_SOURCE_CLASS (V4L2_CTRL_CLASS_IMAGE_SOURCE | 1)
#define V4L2_CID_VBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 1)
#define V4L2_CID_HBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 2)
#define V4L2_CID_ANALOGUE_GAIN (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 3)
#define V4L2_CID_TEST_PATTERN_RED (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 4)
#define V4L2_CID_TEST_PATTERN_GREENR (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5)
#define V4L2_CID_TEST_PATTERN_BLUE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
#define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
#define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
#define V4L2_CID_NOTIFY_GAINS (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9)
/* Image processing controls */
#define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)
#define V4L2_CID_IMAGE_PROC_CLASS (V4L2_CTRL_CLASS_IMAGE_PROC | 1)
#define V4L2_CID_LINK_FREQ (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)
#define V4L2_CID_PIXEL_RATE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2)
#define V4L2_CID_TEST_PATTERN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 3)
#define V4L2_CID_DEINTERLACING_MODE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 4)
#define V4L2_CID_DIGITAL_GAIN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 5)
/* DV-class control IDs defined by V4L2 */
#define V4L2_CID_DV_CLASS_BASE (V4L2_CTRL_CLASS_DV | 0x900)
#define V4L2_CID_DV_CLASS (V4L2_CTRL_CLASS_DV | 1)
#define V4L2_CID_DV_TX_HOTPLUG (V4L2_CID_DV_CLASS_BASE + 1)
#define V4L2_CID_DV_TX_RXSENSE (V4L2_CID_DV_CLASS_BASE + 2)
#define V4L2_CID_DV_TX_EDID_PRESENT (V4L2_CID_DV_CLASS_BASE + 3)
#define V4L2_CID_DV_TX_MODE (V4L2_CID_DV_CLASS_BASE + 4)
enum v4l2_dv_tx_mode {
V4L2_DV_TX_MODE_DVI_D = 0,
V4L2_DV_TX_MODE_HDMI = 1,
};
#define V4L2_CID_DV_TX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 5)
enum v4l2_dv_rgb_range {
V4L2_DV_RGB_RANGE_AUTO = 0,
V4L2_DV_RGB_RANGE_LIMITED = 1,
V4L2_DV_RGB_RANGE_FULL = 2,
};
#define V4L2_CID_DV_TX_IT_CONTENT_TYPE (V4L2_CID_DV_CLASS_BASE + 6)
enum v4l2_dv_it_content_type {
V4L2_DV_IT_CONTENT_TYPE_GRAPHICS = 0,
V4L2_DV_IT_CONTENT_TYPE_PHOTO = 1,
V4L2_DV_IT_CONTENT_TYPE_CINEMA = 2,
V4L2_DV_IT_CONTENT_TYPE_GAME = 3,
V4L2_DV_IT_CONTENT_TYPE_NO_ITC = 4,
};
#define V4L2_CID_DV_RX_POWER_PRESENT (V4L2_CID_DV_CLASS_BASE + 100)
#define V4L2_CID_DV_RX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 101)
#define V4L2_CID_DV_RX_IT_CONTENT_TYPE (V4L2_CID_DV_CLASS_BASE + 102)
#define V4L2_CID_FM_RX_CLASS_BASE (V4L2_CTRL_CLASS_FM_RX | 0x900)
#define V4L2_CID_FM_RX_CLASS (V4L2_CTRL_CLASS_FM_RX | 1)
#define V4L2_CID_TUNE_DEEMPHASIS (V4L2_CID_FM_RX_CLASS_BASE + 1)
enum v4l2_deemphasis {
V4L2_DEEMPHASIS_DISABLED = V4L2_PREEMPHASIS_DISABLED,
V4L2_DEEMPHASIS_50_uS = V4L2_PREEMPHASIS_50_uS,
V4L2_DEEMPHASIS_75_uS = V4L2_PREEMPHASIS_75_uS,
};
#define V4L2_CID_RDS_RECEPTION (V4L2_CID_FM_RX_CLASS_BASE + 2)
#define V4L2_CID_RDS_RX_PTY (V4L2_CID_FM_RX_CLASS_BASE + 3)
#define V4L2_CID_RDS_RX_PS_NAME (V4L2_CID_FM_RX_CLASS_BASE + 4)
#define V4L2_CID_RDS_RX_RADIO_TEXT (V4L2_CID_FM_RX_CLASS_BASE + 5)
#define V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT (V4L2_CID_FM_RX_CLASS_BASE + 6)
#define V4L2_CID_RDS_RX_TRAFFIC_PROGRAM (V4L2_CID_FM_RX_CLASS_BASE + 7)
#define V4L2_CID_RDS_RX_MUSIC_SPEECH (V4L2_CID_FM_RX_CLASS_BASE + 8)
#define V4L2_CID_RF_TUNER_CLASS_BASE (V4L2_CTRL_CLASS_RF_TUNER | 0x900)
#define V4L2_CID_RF_TUNER_CLASS (V4L2_CTRL_CLASS_RF_TUNER | 1)
#define V4L2_CID_RF_TUNER_BANDWIDTH_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 11)
#define V4L2_CID_RF_TUNER_BANDWIDTH (V4L2_CID_RF_TUNER_CLASS_BASE + 12)
#define V4L2_CID_RF_TUNER_RF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 32)
#define V4L2_CID_RF_TUNER_LNA_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 41)
#define V4L2_CID_RF_TUNER_LNA_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 42)
#define V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 51)
#define V4L2_CID_RF_TUNER_MIXER_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 52)
#define V4L2_CID_RF_TUNER_IF_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 61)
#define V4L2_CID_RF_TUNER_IF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 62)
#define V4L2_CID_RF_TUNER_PLL_LOCK (V4L2_CID_RF_TUNER_CLASS_BASE + 91)
/* Detection-class control IDs defined by V4L2 */
#define V4L2_CID_DETECT_CLASS_BASE (V4L2_CTRL_CLASS_DETECT | 0x900)
#define V4L2_CID_DETECT_CLASS (V4L2_CTRL_CLASS_DETECT | 1)
#define V4L2_CID_DETECT_MD_MODE (V4L2_CID_DETECT_CLASS_BASE + 1)
enum v4l2_detect_md_mode {
V4L2_DETECT_MD_MODE_DISABLED = 0,
V4L2_DETECT_MD_MODE_GLOBAL = 1,
V4L2_DETECT_MD_MODE_THRESHOLD_GRID = 2,
V4L2_DETECT_MD_MODE_REGION_GRID = 3,
};
#define V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD (V4L2_CID_DETECT_CLASS_BASE + 2)
#define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3)
#define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4)
/* Stateless CODECs controls */
#define V4L2_CID_CODEC_STATELESS_BASE (V4L2_CTRL_CLASS_CODEC_STATELESS | 0x900)
#define V4L2_CID_CODEC_STATELESS_CLASS (V4L2_CTRL_CLASS_CODEC_STATELESS | 1)
#define V4L2_CID_STATELESS_H264_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 0)
/**
* enum v4l2_stateless_h264_decode_mode - Decoding mode
*
* @V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED: indicates that decoding
* is performed one slice at a time. In this mode,
* V4L2_CID_STATELESS_H264_SLICE_PARAMS must contain the parsed slice
* parameters and the OUTPUT buffer must contain a single slice.
* V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF feature is used
* in order to support multislice frames.
* @V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED: indicates that
* decoding is performed per frame. The OUTPUT buffer must contain
* all slices and also both fields. This mode is typically supported
* by device drivers that are able to parse the slice(s) header(s)
* in hardware. When this mode is selected,
* V4L2_CID_STATELESS_H264_SLICE_PARAMS is not used.
*/
enum v4l2_stateless_h264_decode_mode {
V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED,
V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
};
#define V4L2_CID_STATELESS_H264_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 1)
/**
* enum v4l2_stateless_h264_start_code - Start code
*
* @V4L2_STATELESS_H264_START_CODE_NONE: slices are passed
* to the driver without any start code.
* @V4L2_STATELESS_H264_START_CODE_ANNEX_B: slices are passed
* to the driver with an Annex B start code prefix
* (legal start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001).
* This mode is typically supported by device drivers that parse
* the start code in hardware.
*/
enum v4l2_stateless_h264_start_code {
V4L2_STATELESS_H264_START_CODE_NONE,
V4L2_STATELESS_H264_START_CODE_ANNEX_B,
};
#define V4L2_H264_SPS_CONSTRAINT_SET0_FLAG 0x01
#define V4L2_H264_SPS_CONSTRAINT_SET1_FLAG 0x02
#define V4L2_H264_SPS_CONSTRAINT_SET2_FLAG 0x04
#define V4L2_H264_SPS_CONSTRAINT_SET3_FLAG 0x08
#define V4L2_H264_SPS_CONSTRAINT_SET4_FLAG 0x10
#define V4L2_H264_SPS_CONSTRAINT_SET5_FLAG 0x20
#define V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE 0x01
#define V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS 0x02
#define V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO 0x04
#define V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED 0x08
#define V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY 0x10
#define V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD 0x20
#define V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE 0x40
#define V4L2_H264_SPS_HAS_CHROMA_FORMAT(sps) \
((sps)->profile_idc == 100 || (sps)->profile_idc == 110 || \
(sps)->profile_idc == 122 || (sps)->profile_idc == 244 || \
(sps)->profile_idc == 44 || (sps)->profile_idc == 83 || \
(sps)->profile_idc == 86 || (sps)->profile_idc == 118 || \
(sps)->profile_idc == 128 || (sps)->profile_idc == 138 || \
(sps)->profile_idc == 139 || (sps)->profile_idc == 134 || \
(sps)->profile_idc == 135)
#define V4L2_CID_STATELESS_H264_SPS (V4L2_CID_CODEC_STATELESS_BASE + 2)
/**
* struct v4l2_ctrl_h264_sps - H264 sequence parameter set
*
* All the members on this sequence parameter set structure match the
* sequence parameter set syntax as specified by the H264 specification.
*
* @profile_idc: see H264 specification.
* @constraint_set_flags: see H264 specification.
* @level_idc: see H264 specification.
* @seq_parameter_set_id: see H264 specification.
* @chroma_format_idc: see H264 specification.
* @bit_depth_luma_minus8: see H264 specification.
* @bit_depth_chroma_minus8: see H264 specification.
* @log2_max_frame_num_minus4: see H264 specification.
* @pic_order_cnt_type: see H264 specification.
* @log2_max_pic_order_cnt_lsb_minus4: see H264 specification.
* @max_num_ref_frames: see H264 specification.
* @num_ref_frames_in_pic_order_cnt_cycle: see H264 specification.
* @offset_for_ref_frame: see H264 specification.
* @offset_for_non_ref_pic: see H264 specification.
* @offset_for_top_to_bottom_field: see H264 specification.
* @pic_width_in_mbs_minus1: see H264 specification.
* @pic_height_in_map_units_minus1: see H264 specification.
* @flags: see V4L2_H264_SPS_FLAG_{}.
*/
struct v4l2_ctrl_h264_sps {
__u8 profile_idc;
__u8 constraint_set_flags;
__u8 level_idc;
__u8 seq_parameter_set_id;
__u8 chroma_format_idc;
__u8 bit_depth_luma_minus8;
__u8 bit_depth_chroma_minus8;
__u8 log2_max_frame_num_minus4;
__u8 pic_order_cnt_type;
__u8 log2_max_pic_order_cnt_lsb_minus4;
__u8 max_num_ref_frames;
__u8 num_ref_frames_in_pic_order_cnt_cycle;
__s32 offset_for_ref_frame[255];
__s32 offset_for_non_ref_pic;
__s32 offset_for_top_to_bottom_field;
__u16 pic_width_in_mbs_minus1;
__u16 pic_height_in_map_units_minus1;
__u32 flags;
};
#define V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE 0x0001
#define V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT 0x0002
#define V4L2_H264_PPS_FLAG_WEIGHTED_PRED 0x0004
#define V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT 0x0008
#define V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED 0x0010
#define V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT 0x0020
#define V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE 0x0040
#define V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT 0x0080
#define V4L2_CID_STATELESS_H264_PPS (V4L2_CID_CODEC_STATELESS_BASE + 3)
/**
* struct v4l2_ctrl_h264_pps - H264 picture parameter set
*
* Except where noted, all the members on this picture parameter set
* structure match the picture parameter set syntax as specified
* by the H264 specification.
*
* In particular, V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT flag
* has a specific meaning. This flag should be set if a non-flat
* scaling matrix applies to the picture. In this case, applications
* are expected to use V4L2_CID_STATELESS_H264_SCALING_MATRIX,
* to pass the values of the non-flat matrices.
*
* @pic_parameter_set_id: see H264 specification.
* @seq_parameter_set_id: see H264 specification.
* @num_slice_groups_minus1: see H264 specification.
* @num_ref_idx_l0_default_active_minus1: see H264 specification.
* @num_ref_idx_l1_default_active_minus1: see H264 specification.
* @weighted_bipred_idc: see H264 specification.
* @pic_init_qp_minus26: see H264 specification.
* @pic_init_qs_minus26: see H264 specification.
* @chroma_qp_index_offset: see H264 specification.
* @second_chroma_qp_index_offset: see H264 specification.
* @flags: see V4L2_H264_PPS_FLAG_{}.
*/
struct v4l2_ctrl_h264_pps {
__u8 pic_parameter_set_id;
__u8 seq_parameter_set_id;
__u8 num_slice_groups_minus1;
__u8 num_ref_idx_l0_default_active_minus1;
__u8 num_ref_idx_l1_default_active_minus1;
__u8 weighted_bipred_idc;
__s8 pic_init_qp_minus26;
__s8 pic_init_qs_minus26;
__s8 chroma_qp_index_offset;
__s8 second_chroma_qp_index_offset;
__u16 flags;
};
#define V4L2_CID_STATELESS_H264_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 4)
/**
* struct v4l2_ctrl_h264_scaling_matrix - H264 scaling matrices
*
* @scaling_list_4x4: scaling matrix after applying the inverse
* scanning process. Expected list order is Intra Y, Intra Cb,
* Intra Cr, Inter Y, Inter Cb, Inter Cr. The values on each
* scaling list are expected in raster scan order.
* @scaling_list_8x8: scaling matrix after applying the inverse
* scanning process. Expected list order is Intra Y, Inter Y,
* Intra Cb, Inter Cb, Intra Cr, Inter Cr. The values on each
* scaling list are expected in raster scan order.
*
* Note that the list order is different for the 4x4 and 8x8
* matrices as per the H264 specification, see table 7-2 "Assignment
* of mnemonic names to scaling list indices and specification of
* fall-back rule".
*/
struct v4l2_ctrl_h264_scaling_matrix {
__u8 scaling_list_4x4[6][16];
__u8 scaling_list_8x8[6][64];
};
struct v4l2_h264_weight_factors {
__s16 luma_weight[32];
__s16 luma_offset[32];
__s16 chroma_weight[32][2];
__s16 chroma_offset[32][2];
};
#define V4L2_H264_CTRL_PRED_WEIGHTS_REQUIRED(pps, slice) \
((((pps)->flags & V4L2_H264_PPS_FLAG_WEIGHTED_PRED) && \
((slice)->slice_type == V4L2_H264_SLICE_TYPE_P || \
(slice)->slice_type == V4L2_H264_SLICE_TYPE_SP)) || \
((pps)->weighted_bipred_idc == 1 && \
(slice)->slice_type == V4L2_H264_SLICE_TYPE_B))
#define V4L2_CID_STATELESS_H264_PRED_WEIGHTS (V4L2_CID_CODEC_STATELESS_BASE + 5)
/**
* struct v4l2_ctrl_h264_pred_weights - Prediction weight table
*
* Prediction weight table, which matches the syntax specified
* by the H264 specification.
*
* @luma_log2_weight_denom: see H264 specification.
* @chroma_log2_weight_denom: see H264 specification.
* @weight_factors: luma and chroma weight factors.
*/
struct v4l2_ctrl_h264_pred_weights {
__u16 luma_log2_weight_denom;
__u16 chroma_log2_weight_denom;
struct v4l2_h264_weight_factors weight_factors[2];
};
#define V4L2_H264_SLICE_TYPE_P 0
#define V4L2_H264_SLICE_TYPE_B 1
#define V4L2_H264_SLICE_TYPE_I 2
#define V4L2_H264_SLICE_TYPE_SP 3
#define V4L2_H264_SLICE_TYPE_SI 4
#define V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED 0x01
#define V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH 0x02
#define V4L2_H264_TOP_FIELD_REF 0x1
#define V4L2_H264_BOTTOM_FIELD_REF 0x2
#define V4L2_H264_FRAME_REF 0x3
/**
* struct v4l2_h264_reference - H264 picture reference
*
* @fields: indicates how the picture is referenced.
* Valid values are V4L2_H264_{}_REF.
* @index: index into v4l2_ctrl_h264_decode_params.dpb[].
*/
struct v4l2_h264_reference {
__u8 fields;
__u8 index;
};
/*
* Maximum DPB size, as specified by section 'A.3.1 Level limits
* common to the Baseline, Main, and Extended profiles'.
*/
#define V4L2_H264_NUM_DPB_ENTRIES 16
#define V4L2_H264_REF_LIST_LEN (2 * V4L2_H264_NUM_DPB_ENTRIES)
#define V4L2_CID_STATELESS_H264_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 6)
/**
* struct v4l2_ctrl_h264_slice_params - H264 slice parameters
*
* This structure holds the H264 syntax elements that are specified
* as non-invariant for the slices in a given frame.
*
* Slice invariant syntax elements are contained in struct
* v4l2_ctrl_h264_decode_params. This is done to reduce the API surface
* on frame-based decoders, where slice header parsing is done by the
* hardware.
*
* Slice invariant syntax elements are specified in specification section
* "7.4.3 Slice header semantics".
*
* Except where noted, the members on this struct match the slice header syntax.
*
* @header_bit_size: offset in bits to slice_data() from the beginning of this slice.
* @first_mb_in_slice: see H264 specification.
* @slice_type: see H264 specification.
* @colour_plane_id: see H264 specification.
* @redundant_pic_cnt: see H264 specification.
* @cabac_init_idc: see H264 specification.
* @slice_qp_delta: see H264 specification.
* @slice_qs_delta: see H264 specification.
* @disable_deblocking_filter_idc: see H264 specification.
* @slice_alpha_c0_offset_div2: see H264 specification.
* @slice_beta_offset_div2: see H264 specification.
* @num_ref_idx_l0_active_minus1: see H264 specification.
* @num_ref_idx_l1_active_minus1: see H264 specification.
* @reserved: padding field. Should be zeroed by applications.
* @ref_pic_list0: reference picture list 0 after applying the per-slice modifications.
* @ref_pic_list1: reference picture list 1 after applying the per-slice modifications.
* @flags: see V4L2_H264_SLICE_FLAG_{}.
*/
struct v4l2_ctrl_h264_slice_params {
__u32 header_bit_size;
__u32 first_mb_in_slice;
__u8 slice_type;
__u8 colour_plane_id;
__u8 redundant_pic_cnt;
__u8 cabac_init_idc;
__s8 slice_qp_delta;
__s8 slice_qs_delta;
__u8 disable_deblocking_filter_idc;
__s8 slice_alpha_c0_offset_div2;
__s8 slice_beta_offset_div2;
__u8 num_ref_idx_l0_active_minus1;
__u8 num_ref_idx_l1_active_minus1;
__u8 reserved;
struct v4l2_h264_reference ref_pic_list0[V4L2_H264_REF_LIST_LEN];
struct v4l2_h264_reference ref_pic_list1[V4L2_H264_REF_LIST_LEN];
__u32 flags;
};
#define V4L2_H264_DPB_ENTRY_FLAG_VALID 0x01
#define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x02
#define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x04
#define V4L2_H264_DPB_ENTRY_FLAG_FIELD 0x08
/**
* struct v4l2_h264_dpb_entry - H264 decoded picture buffer entry
*
* @reference_ts: timestamp of the V4L2 capture buffer to use as reference.
* The timestamp refers to the timestamp field in struct v4l2_buffer.
* Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
* @pic_num: matches PicNum variable assigned during the reference
* picture lists construction process.
* @frame_num: frame identifier which matches frame_num syntax element.
* @fields: indicates how the DPB entry is referenced. Valid values are
* V4L2_H264_{}_REF.
* @reserved: padding field. Should be zeroed by applications.
* @top_field_order_cnt: matches TopFieldOrderCnt picture value.
* @bottom_field_order_cnt: matches BottomFieldOrderCnt picture value.
* Note that picture field is indicated by v4l2_buffer.field.
* @flags: see V4L2_H264_DPB_ENTRY_FLAG_{}.
*/
struct v4l2_h264_dpb_entry {
__u64 reference_ts;
__u32 pic_num;
__u16 frame_num;
__u8 fields;
__u8 reserved[5];
__s32 top_field_order_cnt;
__s32 bottom_field_order_cnt;
__u32 flags;
};
#define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
#define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
#define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
#define V4L2_H264_DECODE_PARAM_FLAG_PFRAME 0x08
#define V4L2_H264_DECODE_PARAM_FLAG_BFRAME 0x10
#define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
/**
* struct v4l2_ctrl_h264_decode_params - H264 decoding parameters
*
* @dpb: decoded picture buffer.
* @nal_ref_idc: slice header syntax element.
* @frame_num: slice header syntax element.
* @top_field_order_cnt: matches TopFieldOrderCnt picture value.
* @bottom_field_order_cnt: matches BottomFieldOrderCnt picture value.
* Note that picture field is indicated by v4l2_buffer.field.
* @idr_pic_id: slice header syntax element.
* @pic_order_cnt_lsb: slice header syntax element.
* @delta_pic_order_cnt_bottom: slice header syntax element.
* @delta_pic_order_cnt0: slice header syntax element.
* @delta_pic_order_cnt1: slice header syntax element.
* @dec_ref_pic_marking_bit_size: size in bits of dec_ref_pic_marking()
* syntax element.
* @pic_order_cnt_bit_size: size in bits of pic order count syntax.
* @slice_group_change_cycle: slice header syntax element.
* @reserved: padding field. Should be zeroed by applications.
* @flags: see V4L2_H264_DECODE_PARAM_FLAG_{}.
*/
struct v4l2_ctrl_h264_decode_params {
struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
__u16 nal_ref_idc;
__u16 frame_num;
__s32 top_field_order_cnt;
__s32 bottom_field_order_cnt;
__u16 idr_pic_id;
__u16 pic_order_cnt_lsb;
__s32 delta_pic_order_cnt_bottom;
__s32 delta_pic_order_cnt0;
__s32 delta_pic_order_cnt1;
__u32 dec_ref_pic_marking_bit_size;
__u32 pic_order_cnt_bit_size;
__u32 slice_group_change_cycle;
__u32 reserved;
__u32 flags;
};
/* Stateless FWHT control, used by the vicodec driver */
/* Current FWHT version */
#define V4L2_FWHT_VERSION 3
/* Set if this is an interlaced format */
#define V4L2_FWHT_FL_IS_INTERLACED _BITUL(0)
/* Set if this is a bottom-first (NTSC) interlaced format */
#define V4L2_FWHT_FL_IS_BOTTOM_FIRST _BITUL(1)
/* Set if each 'frame' contains just one field */
#define V4L2_FWHT_FL_IS_ALTERNATE _BITUL(2)
/*
* If V4L2_FWHT_FL_IS_ALTERNATE was set, then this is set if this
* 'frame' is the bottom field, else it is the top field.
*/
#define V4L2_FWHT_FL_IS_BOTTOM_FIELD _BITUL(3)
/* Set if the Y' plane is uncompressed */
#define V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED _BITUL(4)
/* Set if the Cb plane is uncompressed */
#define V4L2_FWHT_FL_CB_IS_UNCOMPRESSED _BITUL(5)
/* Set if the Cr plane is uncompressed */
#define V4L2_FWHT_FL_CR_IS_UNCOMPRESSED _BITUL(6)
/* Set if the chroma plane is full height, if cleared it is half height */
#define V4L2_FWHT_FL_CHROMA_FULL_HEIGHT _BITUL(7)
/* Set if the chroma plane is full width, if cleared it is half width */
#define V4L2_FWHT_FL_CHROMA_FULL_WIDTH _BITUL(8)
/* Set if the alpha plane is uncompressed */
#define V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED _BITUL(9)
/* Set if this is an I Frame */
#define V4L2_FWHT_FL_I_FRAME _BITUL(10)
/* A 4-values flag - the number of components - 1 */
#define V4L2_FWHT_FL_COMPONENTS_NUM_MSK GENMASK(18, 16)
#define V4L2_FWHT_FL_COMPONENTS_NUM_OFFSET 16
/* A 4-values flag - the pixel encoding type */
#define V4L2_FWHT_FL_PIXENC_MSK GENMASK(20, 19)
#define V4L2_FWHT_FL_PIXENC_OFFSET 19
#define V4L2_FWHT_FL_PIXENC_YUV (1 << V4L2_FWHT_FL_PIXENC_OFFSET)
#define V4L2_FWHT_FL_PIXENC_RGB (2 << V4L2_FWHT_FL_PIXENC_OFFSET)
#define V4L2_FWHT_FL_PIXENC_HSV (3 << V4L2_FWHT_FL_PIXENC_OFFSET)
#define V4L2_CID_STATELESS_FWHT_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 100)
/**
* struct v4l2_ctrl_fwht_params - FWHT parameters
*
* @backward_ref_ts: timestamp of the V4L2 capture buffer to use as reference.
* The timestamp refers to the timestamp field in struct v4l2_buffer.
* Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
* @version: must be V4L2_FWHT_VERSION.
* @width: width of frame.
* @height: height of frame.
* @flags: FWHT flags (see V4L2_FWHT_FL_*).
* @colorspace: the colorspace (enum v4l2_colorspace).
* @xfer_func: the transfer function (enum v4l2_xfer_func).
* @ycbcr_enc: the Y'CbCr encoding (enum v4l2_ycbcr_encoding).
* @quantization: the quantization (enum v4l2_quantization).
*/
struct v4l2_ctrl_fwht_params {
__u64 backward_ref_ts;
__u32 version;
__u32 width;
__u32 height;
__u32 flags;
__u32 colorspace;
__u32 xfer_func;
__u32 ycbcr_enc;
__u32 quantization;
};
/* Stateless VP8 control */
#define V4L2_VP8_SEGMENT_FLAG_ENABLED 0x01
#define V4L2_VP8_SEGMENT_FLAG_UPDATE_MAP 0x02
#define V4L2_VP8_SEGMENT_FLAG_UPDATE_FEATURE_DATA 0x04
#define V4L2_VP8_SEGMENT_FLAG_DELTA_VALUE_MODE 0x08
/**
* struct v4l2_vp8_segment - VP8 segment-based adjustments parameters
*
* @quant_update: update values for the segment quantizer.
* @lf_update: update values for the loop filter level.
* @segment_probs: branch probabilities of the segment_id decoding tree.
* @padding: padding field. Should be zeroed by applications.
* @flags: see V4L2_VP8_SEGMENT_FLAG_{}.
*
* This structure contains segment-based adjustments related parameters.
* See the 'update_segmentation()' part of the frame header syntax,
* and section '9.3. Segment-Based Adjustments' of the VP8 specification
* for more details.
*/
struct v4l2_vp8_segment {
__s8 quant_update[4];
__s8 lf_update[4];
__u8 segment_probs[3];
__u8 padding;
__u32 flags;
};
#define V4L2_VP8_LF_ADJ_ENABLE 0x01
#define V4L2_VP8_LF_DELTA_UPDATE 0x02
#define V4L2_VP8_LF_FILTER_TYPE_SIMPLE 0x04
/**
* struct v4l2_vp8_loop_filter - VP8 loop filter parameters
*
* @ref_frm_delta: Reference frame signed delta values.
* @mb_mode_delta: MB prediction mode signed delta values.
* @sharpness_level: matches sharpness_level syntax element.
* @level: matches loop_filter_level syntax element.
* @padding: padding field. Should be zeroed by applications.
* @flags: see V4L2_VP8_LF_FLAG_{}.
*
* This structure contains loop filter related parameters.
* See the 'mb_lf_adjustments()' part of the frame header syntax,
* and section '9.4. Loop Filter Type and Levels' of the VP8 specification
* for more details.
*/
struct v4l2_vp8_loop_filter {
__s8 ref_frm_delta[4];
__s8 mb_mode_delta[4];
__u8 sharpness_level;
__u8 level;
__u16 padding;
__u32 flags;
};
/**
* struct v4l2_vp8_quantization - VP8 quantizattion indices
*
* @y_ac_qi: luma AC coefficient table index.
* @y_dc_delta: luma DC delta vaue.
* @y2_dc_delta: y2 block DC delta value.
* @y2_ac_delta: y2 block AC delta value.
* @uv_dc_delta: chroma DC delta value.
* @uv_ac_delta: chroma AC delta value.
* @padding: padding field. Should be zeroed by applications.
*
* This structure contains the quantization indices present
* in 'quant_indices()' part of the frame header syntax.
* See section '9.6. Dequantization Indices' of the VP8 specification
* for more details.
*/
struct v4l2_vp8_quantization {
__u8 y_ac_qi;
__s8 y_dc_delta;
__s8 y2_dc_delta;
__s8 y2_ac_delta;
__s8 uv_dc_delta;
__s8 uv_ac_delta;
__u16 padding;
};
#define V4L2_VP8_COEFF_PROB_CNT 11
#define V4L2_VP8_MV_PROB_CNT 19
/**
* struct v4l2_vp8_entropy - VP8 update probabilities
*
* @coeff_probs: coefficient probability update values.
* @y_mode_probs: luma intra-prediction probabilities.
* @uv_mode_probs: chroma intra-prediction probabilities.
* @mv_probs: mv decoding probability.
* @padding: padding field. Should be zeroed by applications.
*
* This structure contains the update probabilities present in
* 'token_prob_update()' and 'mv_prob_update()' part of the frame header.
* See section '17.2. Probability Updates' of the VP8 specification
* for more details.
*/
struct v4l2_vp8_entropy {
__u8 coeff_probs[4][8][3][V4L2_VP8_COEFF_PROB_CNT];
__u8 y_mode_probs[4];
__u8 uv_mode_probs[3];
__u8 mv_probs[2][V4L2_VP8_MV_PROB_CNT];
__u8 padding[3];
};
/**
* struct v4l2_vp8_entropy_coder_state - VP8 boolean coder state
*
* @range: coder state value for "Range"
* @value: coder state value for "Value"
* @bit_count: number of bits left in range "Value".
* @padding: padding field. Should be zeroed by applications.
*
* This structure contains the state for the boolean coder, as
* explained in section '7. Boolean Entropy Decoder' of the VP8 specification.
*/
struct v4l2_vp8_entropy_coder_state {
__u8 range;
__u8 value;
__u8 bit_count;
__u8 padding;
};
#define V4L2_VP8_FRAME_FLAG_KEY_FRAME 0x01
#define V4L2_VP8_FRAME_FLAG_EXPERIMENTAL 0x02
#define V4L2_VP8_FRAME_FLAG_SHOW_FRAME 0x04
#define V4L2_VP8_FRAME_FLAG_MB_NO_SKIP_COEFF 0x08
#define V4L2_VP8_FRAME_FLAG_SIGN_BIAS_GOLDEN 0x10
#define V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT 0x20
#define V4L2_VP8_FRAME_IS_KEY_FRAME(hdr) \
(!!((hdr)->flags & V4L2_VP8_FRAME_FLAG_KEY_FRAME))
#define V4L2_CID_STATELESS_VP8_FRAME (V4L2_CID_CODEC_STATELESS_BASE + 200)
/**
* struct v4l2_ctrl_vp8_frame - VP8 frame parameters
*
* @segment: segmentation parameters. See &v4l2_vp8_segment for more details
* @lf: loop filter parameters. See &v4l2_vp8_loop_filter for more details
* @quant: quantization parameters. See &v4l2_vp8_quantization for more details
* @entropy: update probabilities. See &v4l2_vp8_entropy for more details
* @coder_state: boolean coder state. See &v4l2_vp8_entropy_coder_state for more details
* @width: frame width.
* @height: frame height.
* @horizontal_scale: horizontal scaling factor.
* @vertical_scale: vertical scaling factor.
* @version: bitstream version.
* @prob_skip_false: frame header syntax element.
* @prob_intra: frame header syntax element.
* @prob_last: frame header syntax element.
* @prob_gf: frame header syntax element.
* @num_dct_parts: number of DCT coefficients partitions.
* @first_part_size: size of the first partition, i.e. the control partition.
* @first_part_header_bits: size in bits of the first partition header portion.
* @dct_part_sizes: DCT coefficients sizes.
* @last_frame_ts: "last" reference buffer timestamp.
* The timestamp refers to the timestamp field in struct v4l2_buffer.
* Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
* @golden_frame_ts: "golden" reference buffer timestamp.
* @alt_frame_ts: "alt" reference buffer timestamp.
* @flags: see V4L2_VP8_FRAME_FLAG_{}.
*/
struct v4l2_ctrl_vp8_frame {
struct v4l2_vp8_segment segment;
struct v4l2_vp8_loop_filter lf;
struct v4l2_vp8_quantization quant;
struct v4l2_vp8_entropy entropy;
struct v4l2_vp8_entropy_coder_state coder_state;
__u16 width;
__u16 height;
__u8 horizontal_scale;
__u8 vertical_scale;
__u8 version;
__u8 prob_skip_false;
__u8 prob_intra;
__u8 prob_last;
__u8 prob_gf;
__u8 num_dct_parts;
__u32 first_part_size;
__u32 first_part_header_bits;
__u32 dct_part_sizes[8];
__u64 last_frame_ts;
__u64 golden_frame_ts;
__u64 alt_frame_ts;
__u64 flags;
};
/* Stateless MPEG-2 controls */
#define V4L2_MPEG2_SEQ_FLAG_PROGRESSIVE 0x01
#define V4L2_CID_STATELESS_MPEG2_SEQUENCE (V4L2_CID_CODEC_STATELESS_BASE+220)
/**
* struct v4l2_ctrl_mpeg2_sequence - MPEG-2 sequence header
*
* All the members on this structure match the sequence header and sequence
* extension syntaxes as specified by the MPEG-2 specification.
*
* Fields horizontal_size, vertical_size and vbv_buffer_size are a
* combination of respective _value and extension syntax elements,
* as described in section 6.3.3 "Sequence header".
*
* @horizontal_size: combination of elements horizontal_size_value and
* horizontal_size_extension.
* @vertical_size: combination of elements vertical_size_value and
* vertical_size_extension.
* @vbv_buffer_size: combination of elements vbv_buffer_size_value and
* vbv_buffer_size_extension.
* @profile_and_level_indication: see MPEG-2 specification.
* @chroma_format: see MPEG-2 specification.
* @flags: see V4L2_MPEG2_SEQ_FLAG_{}.
*/
struct v4l2_ctrl_mpeg2_sequence {
__u16 horizontal_size;
__u16 vertical_size;
__u32 vbv_buffer_size;
__u16 profile_and_level_indication;
__u8 chroma_format;
__u8 flags;
};
#define V4L2_MPEG2_PIC_CODING_TYPE_I 1
#define V4L2_MPEG2_PIC_CODING_TYPE_P 2
#define V4L2_MPEG2_PIC_CODING_TYPE_B 3
#define V4L2_MPEG2_PIC_CODING_TYPE_D 4
#define V4L2_MPEG2_PIC_TOP_FIELD 0x1
#define V4L2_MPEG2_PIC_BOTTOM_FIELD 0x2
#define V4L2_MPEG2_PIC_FRAME 0x3
#define V4L2_MPEG2_PIC_FLAG_TOP_FIELD_FIRST 0x0001
#define V4L2_MPEG2_PIC_FLAG_FRAME_PRED_DCT 0x0002
#define V4L2_MPEG2_PIC_FLAG_CONCEALMENT_MV 0x0004
#define V4L2_MPEG2_PIC_FLAG_Q_SCALE_TYPE 0x0008
#define V4L2_MPEG2_PIC_FLAG_INTRA_VLC 0x0010
#define V4L2_MPEG2_PIC_FLAG_ALT_SCAN 0x0020
#define V4L2_MPEG2_PIC_FLAG_REPEAT_FIRST 0x0040
#define V4L2_MPEG2_PIC_FLAG_PROGRESSIVE 0x0080
#define V4L2_CID_STATELESS_MPEG2_PICTURE (V4L2_CID_CODEC_STATELESS_BASE+221)
/**
* struct v4l2_ctrl_mpeg2_picture - MPEG-2 picture header
*
* All the members on this structure match the picture header and picture
* coding extension syntaxes as specified by the MPEG-2 specification.
*
* @backward_ref_ts: timestamp of the V4L2 capture buffer to use as
* reference for backward prediction.
* @forward_ref_ts: timestamp of the V4L2 capture buffer to use as
* reference for forward prediction. These timestamp refers to the
* timestamp field in struct v4l2_buffer. Use v4l2_timeval_to_ns()
* to convert the struct timeval to a __u64.
* @flags: see V4L2_MPEG2_PIC_FLAG_{}.
* @f_code: see MPEG-2 specification.
* @picture_coding_type: see MPEG-2 specification.
* @picture_structure: see V4L2_MPEG2_PIC_{}_FIELD.
* @intra_dc_precision: see MPEG-2 specification.
* @reserved: padding field. Should be zeroed by applications.
*/
struct v4l2_ctrl_mpeg2_picture {
__u64 backward_ref_ts;
__u64 forward_ref_ts;
__u32 flags;
__u8 f_code[2][2];
__u8 picture_coding_type;
__u8 picture_structure;
__u8 intra_dc_precision;
__u8 reserved[5];
};
#define V4L2_CID_STATELESS_MPEG2_QUANTISATION (V4L2_CID_CODEC_STATELESS_BASE+222)
/**
* struct v4l2_ctrl_mpeg2_quantisation - MPEG-2 quantisation
*
* Quantisation matrices as specified by section 6.3.7
* "Quant matrix extension".
*
* @intra_quantiser_matrix: The quantisation matrix coefficients
* for intra-coded frames, in zigzag scanning order. It is relevant
* for both luma and chroma components, although it can be superseded
* by the chroma-specific matrix for non-4:2:0 YUV formats.
* @non_intra_quantiser_matrix: The quantisation matrix coefficients
* for non-intra-coded frames, in zigzag scanning order. It is relevant
* for both luma and chroma components, although it can be superseded
* by the chroma-specific matrix for non-4:2:0 YUV formats.
* @chroma_intra_quantiser_matrix: The quantisation matrix coefficients
* for the chominance component of intra-coded frames, in zigzag scanning
* order. Only relevant for 4:2:2 and 4:4:4 YUV formats.
* @chroma_non_intra_quantiser_matrix: The quantisation matrix coefficients
* for the chrominance component of non-intra-coded frames, in zigzag scanning
* order. Only relevant for 4:2:2 and 4:4:4 YUV formats.
*/
struct v4l2_ctrl_mpeg2_quantisation {
__u8 intra_quantiser_matrix[64];
__u8 non_intra_quantiser_matrix[64];
__u8 chroma_intra_quantiser_matrix[64];
__u8 chroma_non_intra_quantiser_matrix[64];
};
#define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
#define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
#define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
struct v4l2_ctrl_hdr10_cll_info {
__u16 max_content_light_level;
__u16 max_pic_average_light_level;
};
#define V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY (V4L2_CID_COLORIMETRY_CLASS_BASE + 1)
#define V4L2_HDR10_MASTERING_PRIMARIES_X_LOW 5
#define V4L2_HDR10_MASTERING_PRIMARIES_X_HIGH 37000
#define V4L2_HDR10_MASTERING_PRIMARIES_Y_LOW 5
#define V4L2_HDR10_MASTERING_PRIMARIES_Y_HIGH 42000
#define V4L2_HDR10_MASTERING_WHITE_POINT_X_LOW 5
#define V4L2_HDR10_MASTERING_WHITE_POINT_X_HIGH 37000
#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_LOW 5
#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_HIGH 42000
#define V4L2_HDR10_MASTERING_MAX_LUMA_LOW 50000
#define V4L2_HDR10_MASTERING_MAX_LUMA_HIGH 100000000
#define V4L2_HDR10_MASTERING_MIN_LUMA_LOW 1
#define V4L2_HDR10_MASTERING_MIN_LUMA_HIGH 50000
struct v4l2_ctrl_hdr10_mastering_display {
__u16 display_primaries_x[3];
__u16 display_primaries_y[3];
__u16 white_point_x;
__u16 white_point_y;
__u32 max_display_mastering_luminance;
__u32 min_display_mastering_luminance;
};
/* Stateless VP9 controls */
#define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED 0x1
#define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE 0x2
/**
* struct v4l2_vp9_loop_filter - VP9 loop filter parameters
*
* @ref_deltas: contains the adjustment needed for the filter level based on the
* chosen reference frame. If this syntax element is not present in the bitstream,
* users should pass its last value.
* @mode_deltas: contains the adjustment needed for the filter level based on the
* chosen mode. If this syntax element is not present in the bitstream, users should
* pass its last value.
* @level: indicates the loop filter strength.
* @sharpness: indicates the sharpness level.
* @flags: combination of V4L2_VP9_LOOP_FILTER_FLAG_{} flags.
* @reserved: padding field. Should be zeroed by applications.
*
* This structure contains all loop filter related parameters. See sections
* '7.2.8 Loop filter semantics' of the VP9 specification for more details.
*/
struct v4l2_vp9_loop_filter {
__s8 ref_deltas[4];
__s8 mode_deltas[2];
__u8 level;
__u8 sharpness;
__u8 flags;
__u8 reserved[7];
};
/**
* struct v4l2_vp9_quantization - VP9 quantization parameters
*
* @base_q_idx: indicates the base frame qindex.
* @delta_q_y_dc: indicates the Y DC quantizer relative to base_q_idx.
* @delta_q_uv_dc: indicates the UV DC quantizer relative to base_q_idx.
* @delta_q_uv_ac: indicates the UV AC quantizer relative to base_q_idx.
* @reserved: padding field. Should be zeroed by applications.
*
* Encodes the quantization parameters. See section '7.2.9 Quantization params
* syntax' of the VP9 specification for more details.
*/
struct v4l2_vp9_quantization {
__u8 base_q_idx;
__s8 delta_q_y_dc;
__s8 delta_q_uv_dc;
__s8 delta_q_uv_ac;
__u8 reserved[4];
};
#define V4L2_VP9_SEGMENTATION_FLAG_ENABLED 0x01
#define V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP 0x02
#define V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE 0x04
#define V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA 0x08
#define V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE 0x10
#define V4L2_VP9_SEG_LVL_ALT_Q 0
#define V4L2_VP9_SEG_LVL_ALT_L 1
#define V4L2_VP9_SEG_LVL_REF_FRAME 2
#define V4L2_VP9_SEG_LVL_SKIP 3
#define V4L2_VP9_SEG_LVL_MAX 4
#define V4L2_VP9_SEGMENT_FEATURE_ENABLED(id) (1 << (id))
#define V4L2_VP9_SEGMENT_FEATURE_ENABLED_MASK 0xf
/**
* struct v4l2_vp9_segmentation - VP9 segmentation parameters
*
* @feature_data: data attached to each feature. Data entry is only valid if
* the feature is enabled. The array shall be indexed with segment number as
* the first dimension (0..7) and one of V4L2_VP9_SEG_{} as the second dimension.
* @feature_enabled: bitmask defining which features are enabled in each segment.
* The value for each segment is a combination of V4L2_VP9_SEGMENT_FEATURE_ENABLED(id)
* values where id is one of V4L2_VP9_SEG_LVL_{}.
* @tree_probs: specifies the probability values to be used when decoding a
* Segment-ID. See '5.15. Segmentation map' section of the VP9 specification
* for more details.
* @pred_probs: specifies the probability values to be used when decoding a
* Predicted-Segment-ID. See '6.4.14. Get segment id syntax' section of :ref:`vp9`
* for more details.
* @flags: combination of V4L2_VP9_SEGMENTATION_FLAG_{} flags.
* @reserved: padding field. Should be zeroed by applications.
*
* Encodes the quantization parameters. See section '7.2.10 Segmentation params syntax' of
* the VP9 specification for more details.
*/
struct v4l2_vp9_segmentation {
__s16 feature_data[8][4];
__u8 feature_enabled[8];
__u8 tree_probs[7];
__u8 pred_probs[3];
__u8 flags;
__u8 reserved[5];
};
#define V4L2_VP9_FRAME_FLAG_KEY_FRAME 0x001
#define V4L2_VP9_FRAME_FLAG_SHOW_FRAME 0x002
#define V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT 0x004
#define V4L2_VP9_FRAME_FLAG_INTRA_ONLY 0x008
#define V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV 0x010
#define V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX 0x020
#define V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE 0x040
#define V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING 0x080
#define V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING 0x100
#define V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING 0x200
#define V4L2_VP9_SIGN_BIAS_LAST 0x1
#define V4L2_VP9_SIGN_BIAS_GOLDEN 0x2
#define V4L2_VP9_SIGN_BIAS_ALT 0x4
#define V4L2_VP9_RESET_FRAME_CTX_NONE 0
#define V4L2_VP9_RESET_FRAME_CTX_SPEC 1
#define V4L2_VP9_RESET_FRAME_CTX_ALL 2
#define V4L2_VP9_INTERP_FILTER_EIGHTTAP 0
#define V4L2_VP9_INTERP_FILTER_EIGHTTAP_SMOOTH 1
#define V4L2_VP9_INTERP_FILTER_EIGHTTAP_SHARP 2
#define V4L2_VP9_INTERP_FILTER_BILINEAR 3
#define V4L2_VP9_INTERP_FILTER_SWITCHABLE 4
#define V4L2_VP9_REFERENCE_MODE_SINGLE_REFERENCE 0
#define V4L2_VP9_REFERENCE_MODE_COMPOUND_REFERENCE 1
#define V4L2_VP9_REFERENCE_MODE_SELECT 2
#define V4L2_VP9_PROFILE_MAX 3
#define V4L2_CID_STATELESS_VP9_FRAME (V4L2_CID_CODEC_STATELESS_BASE + 300)
/**
* struct v4l2_ctrl_vp9_frame - VP9 frame decoding control
*
* @lf: loop filter parameters. See &v4l2_vp9_loop_filter for more details.
* @quant: quantization parameters. See &v4l2_vp9_quantization for more details.
* @seg: segmentation parameters. See &v4l2_vp9_segmentation for more details.
* @flags: combination of V4L2_VP9_FRAME_FLAG_{} flags.
* @compressed_header_size: compressed header size in bytes.
* @uncompressed_header_size: uncompressed header size in bytes.
* @frame_width_minus_1: add 1 to it and you'll get the frame width expressed in pixels.
* @frame_height_minus_1: add 1 to it and you'll get the frame height expressed in pixels.
* @render_width_minus_1: add 1 to it and you'll get the expected render width expressed in
* pixels. This is not used during the decoding process but might be used by HW scalers
* to prepare a frame that's ready for scanout.
* @render_height_minus_1: add 1 to it and you'll get the expected render height expressed in
* pixels. This is not used during the decoding process but might be used by HW scalers
* to prepare a frame that's ready for scanout.
* @last_frame_ts: "last" reference buffer timestamp.
* The timestamp refers to the timestamp field in struct v4l2_buffer.
* Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
* @golden_frame_ts: "golden" reference buffer timestamp.
* The timestamp refers to the timestamp field in struct v4l2_buffer.
* Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
* @alt_frame_ts: "alt" reference buffer timestamp.
* The timestamp refers to the timestamp field in struct v4l2_buffer.
* Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
* @ref_frame_sign_bias: a bitfield specifying whether the sign bias is set for a given
* reference frame. Either of V4L2_VP9_SIGN_BIAS_{}.
* @reset_frame_context: specifies whether the frame context should be reset to default values.
* Either of V4L2_VP9_RESET_FRAME_CTX_{}.
* @frame_context_idx: frame context that should be used/updated.
* @profile: VP9 profile. Can be 0, 1, 2 or 3.
* @bit_depth: bits per components. Can be 8, 10 or 12. Note that not all profiles support
* 10 and/or 12 bits depths.
* @interpolation_filter: specifies the filter selection used for performing inter prediction.
* Set to one of V4L2_VP9_INTERP_FILTER_{}.
* @tile_cols_log2: specifies the base 2 logarithm of the width of each tile (where the width
* is measured in units of 8x8 blocks). Shall be less than or equal to 6.
* @tile_rows_log2: specifies the base 2 logarithm of the height of each tile (where the height
* is measured in units of 8x8 blocks).
* @reference_mode: specifies the type of inter prediction to be used.
* Set to one of V4L2_VP9_REFERENCE_MODE_{}.
* @reserved: padding field. Should be zeroed by applications.
*/
struct v4l2_ctrl_vp9_frame {
struct v4l2_vp9_loop_filter lf;
struct v4l2_vp9_quantization quant;
struct v4l2_vp9_segmentation seg;
__u32 flags;
__u16 compressed_header_size;
__u16 uncompressed_header_size;
__u16 frame_width_minus_1;
__u16 frame_height_minus_1;
__u16 render_width_minus_1;
__u16 render_height_minus_1;
__u64 last_frame_ts;
__u64 golden_frame_ts;
__u64 alt_frame_ts;
__u8 ref_frame_sign_bias;
__u8 reset_frame_context;
__u8 frame_context_idx;
__u8 profile;
__u8 bit_depth;
__u8 interpolation_filter;
__u8 tile_cols_log2;
__u8 tile_rows_log2;
__u8 reference_mode;
__u8 reserved[7];
};
#define V4L2_VP9_NUM_FRAME_CTX 4
/**
* struct v4l2_vp9_mv_probs - VP9 Motion vector probability updates
* @joint: motion vector joint probability updates.
* @sign: motion vector sign probability updates.
* @classes: motion vector class probability updates.
* @class0_bit: motion vector class0 bit probability updates.
* @bits: motion vector bits probability updates.
* @class0_fr: motion vector class0 fractional bit probability updates.
* @fr: motion vector fractional bit probability updates.
* @class0_hp: motion vector class0 high precision fractional bit probability updates.
* @hp: motion vector high precision fractional bit probability updates.
*
* This structure contains new values of motion vector probabilities.
* A value of zero in an array element means there is no update of the relevant probability.
* See `struct v4l2_vp9_prob_updates` for details.
*/
struct v4l2_vp9_mv_probs {
__u8 joint[3];
__u8 sign[2];
__u8 classes[2][10];
__u8 class0_bit[2];
__u8 bits[2][10];
__u8 class0_fr[2][2][3];
__u8 fr[2][3];
__u8 class0_hp[2];
__u8 hp[2];
};
#define V4L2_CID_STATELESS_VP9_COMPRESSED_HDR (V4L2_CID_CODEC_STATELESS_BASE + 301)
#define V4L2_VP9_TX_MODE_ONLY_4X4 0
#define V4L2_VP9_TX_MODE_ALLOW_8X8 1
#define V4L2_VP9_TX_MODE_ALLOW_16X16 2
#define V4L2_VP9_TX_MODE_ALLOW_32X32 3
#define V4L2_VP9_TX_MODE_SELECT 4
/**
* struct v4l2_ctrl_vp9_compressed_hdr - VP9 probability updates control
* @tx_mode: specifies the TX mode. Set to one of V4L2_VP9_TX_MODE_{}.
* @tx8: TX 8x8 probability updates.
* @tx16: TX 16x16 probability updates.
* @tx32: TX 32x32 probability updates.
* @coef: coefficient probability updates.
* @skip: skip probability updates.
* @inter_mode: inter mode probability updates.
* @interp_filter: interpolation filter probability updates.
* @is_inter: is inter-block probability updates.
* @comp_mode: compound prediction mode probability updates.
* @single_ref: single ref probability updates.
* @comp_ref: compound ref probability updates.
* @y_mode: Y prediction mode probability updates.
* @uv_mode: UV prediction mode probability updates.
* @partition: partition probability updates.
* @mv: motion vector probability updates.
*
* This structure holds the probabilities update as parsed in the compressed
* header (Spec 6.3). These values represent the value of probability update after
* being translated with inv_map_table[] (see 6.3.5). A value of zero in an array element
* means that there is no update of the relevant probability.
*
* This control is optional and needs to be used when dealing with the hardware which is
* not capable of parsing the compressed header itself. Only drivers which need it will
* implement it.
*/
struct v4l2_ctrl_vp9_compressed_hdr {
__u8 tx_mode;
__u8 tx8[2][1];
__u8 tx16[2][2];
__u8 tx32[2][3];
__u8 coef[4][2][2][6][6][3];
__u8 skip[3];
__u8 inter_mode[7][3];
__u8 interp_filter[4][2];
__u8 is_inter[4];
__u8 comp_mode[5];
__u8 single_ref[5][2];
__u8 comp_ref[5];
__u8 y_mode[4][9];
__u8 uv_mode[10][9];
__u8 partition[16][3];
struct v4l2_vp9_mv_probs mv;
};
/* MPEG-compression definitions kept for backwards compatibility */
#ifndef __KERNEL__
#define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC
#define V4L2_CID_MPEG_CLASS V4L2_CID_CODEC_CLASS
#define V4L2_CID_MPEG_BASE V4L2_CID_CODEC_BASE
#define V4L2_CID_MPEG_CX2341X_BASE V4L2_CID_CODEC_CX2341X_BASE
#define V4L2_CID_MPEG_MFC51_BASE V4L2_CID_CODEC_MFC51_BASE
#endif
#endif
@@ -47,66 +47,69 @@ | @@ -47,66 +47,69 @@ | |||
47 | * All kernel-specific stuff were moved to media/v4l2-dev.h, so | 47 | * All kernel-specific stuff were moved to media/v4l2-dev.h, so | |
48 | * no #if __KERNEL tests are allowed here | 48 | * no #if __KERNEL tests are allowed here | |
49 | * | 49 | * | |
50 | * See https://linuxtv.org for more info | 50 | * See https://linuxtv.org for more info | |
51 | * | 51 | * | |
52 | * Author: Bill Dirks <bill@thedirks.org> | 52 | * Author: Bill Dirks <bill@thedirks.org> | |
53 | * Justin Schoeman | 53 | * Justin Schoeman | |
54 | * Hans Verkuil <hverkuil@xs4all.nl> | 54 | * Hans Verkuil <hverkuil@xs4all.nl> | |
55 | * et al. | 55 | * et al. | |
56 | */ | 56 | */ | |
57 | #ifndef _UAPI__LINUX_VIDEODEV2_H | 57 | #ifndef _UAPI__LINUX_VIDEODEV2_H | |
58 | #define _UAPI__LINUX_VIDEODEV2_H | 58 | #define _UAPI__LINUX_VIDEODEV2_H | |
59 | 59 | |||
60 | #ifdef __NetBSD__ | 60 | #if !defined(__linux__) | |
61 | typedef uint8_t __u8; | |||
62 | typedef int8_t __s8; | |||
63 | typedef uint16_t __u16; | |||
64 | typedef int16_t __s16; | |||
65 | typedef uint32_t __u32; | |||
66 | typedef int32_t __s32; | |||
67 | typedef uint64_t __u64; | |||
68 | typedef int64_t __s64; | |||
69 | typedef uint32_t __le32; | |||
61 | #include <sys/types.h> | 70 | #include <sys/types.h> | |
62 | #include <sys/ioccom.h> | 71 | #include <sys/ioccom.h> | |
63 | #include <sys/time.h> | 72 | #include <sys/time.h> | |
73 | #if defined(__sun) | |||
74 | #include <linux/v4l2-controls.h> | |||
75 | #endif | |||
76 | #define __user | |||
64 | #else | 77 | #else | |
65 | #ifndef __KERNEL__ | 78 | #ifndef __KERNEL__ | |
66 | #include <sys/time.h> | 79 | #include <sys/time.h> | |
67 | #endif | 80 | #endif | |
68 | #include <linux/compiler.h> | 81 | #include <linux/compiler.h> | |
69 | #include <linux/ioctl.h> | 82 | #include <linux/ioctl.h> | |
70 | #include <linux/types.h> | 83 | #include <linux/types.h> | |
71 | #include <linux/v4l2-common.h> | 84 | #include <linux/v4l2-common.h> | |
72 | #include <linux/v4l2-controls.h> | 85 | #include <linux/v4l2-controls.h> | |
73 | #endif | 86 | #endif | |
74 | 87 | |||
75 | typedef uint8_t __u8; | |||
76 | typedef int8_t __s8; | |||
77 | typedef uint16_t __u16; | |||
78 | typedef int16_t __s16; | |||
79 | typedef uint32_t __u32; | |||
80 | typedef int32_t __s32; | |||
81 | typedef uint64_t __u64; | |||
82 | typedef int64_t __s64; | |||
83 | typedef uint32_t __le32; | |||
84 | ||||
85 | /* | 88 | /* | |
86 | * Common stuff for both V4L1 and V4L2 | 89 | * Common stuff for both V4L1 and V4L2 | |
87 | * Moved from videodev.h | 90 | * Moved from videodev.h | |
88 | */ | 91 | */ | |
89 | #define VIDEO_MAX_FRAME 32 | 92 | #define VIDEO_MAX_FRAME 32 | |
90 | #define VIDEO_MAX_PLANES 8 | 93 | #define VIDEO_MAX_PLANES 8 | |
91 | 94 | |||
92 | /* | 95 | /* | |
93 | * M I S C E L L A N E O U S | 96 | * M I S C E L L A N E O U S | |
94 | */ | 97 | */ | |
95 | 98 | |||
96 | /* Four-character-code (FOURCC) */ | 99 | /* Four-character-code (FOURCC) */ | |
97 | #define v4l2_fourcc(a, b, c, d)\ | 100 | #define v4l2_fourcc(a, b, c, d)\ | |
98 | ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24)) | 101 | ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24)) | |
99 | #define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1 << 31)) | 102 | #define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1U << 31)) | |
100 | 103 | |||
101 | /* | 104 | /* | |
102 | * E N U M S | 105 | * E N U M S | |
103 | */ | 106 | */ | |
104 | enum v4l2_field { | 107 | enum v4l2_field { | |
105 | V4L2_FIELD_ANY = 0, /* driver can choose from none, | 108 | V4L2_FIELD_ANY = 0, /* driver can choose from none, | |
106 | top, bottom, interlaced | 109 | top, bottom, interlaced | |
107 | depending on whatever it thinks | 110 | depending on whatever it thinks | |
108 | is approximate ... */ | 111 | is approximate ... */ | |
109 | V4L2_FIELD_NONE = 1, /* this device has no fields ... */ | 112 | V4L2_FIELD_NONE = 1, /* this device has no fields ... */ | |
110 | V4L2_FIELD_TOP = 2, /* top field only */ | 113 | V4L2_FIELD_TOP = 2, /* top field only */ | |
111 | V4L2_FIELD_BOTTOM = 3, /* bottom field only */ | 114 | V4L2_FIELD_BOTTOM = 3, /* bottom field only */ | |
112 | V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */ | 115 | V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */ | |
@@ -136,57 +139,68 @@ enum v4l2_field { | @@ -136,57 +139,68 @@ enum v4l2_field { | |||
136 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | 139 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | |
137 | (field) == V4L2_FIELD_SEQ_TB ||\ | 140 | (field) == V4L2_FIELD_SEQ_TB ||\ | |
138 | (field) == V4L2_FIELD_SEQ_BT) | 141 | (field) == V4L2_FIELD_SEQ_BT) | |
139 | #define V4L2_FIELD_HAS_BOTH(field) \ | 142 | #define V4L2_FIELD_HAS_BOTH(field) \ | |
140 | ((field) == V4L2_FIELD_INTERLACED ||\ | 143 | ((field) == V4L2_FIELD_INTERLACED ||\ | |
141 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | 144 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | |
142 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | 145 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | |
143 | (field) == V4L2_FIELD_SEQ_TB ||\ | 146 | (field) == V4L2_FIELD_SEQ_TB ||\ | |
144 | (field) == V4L2_FIELD_SEQ_BT) | 147 | (field) == V4L2_FIELD_SEQ_BT) | |
145 | #define V4L2_FIELD_HAS_T_OR_B(field) \ | 148 | #define V4L2_FIELD_HAS_T_OR_B(field) \ | |
146 | ((field) == V4L2_FIELD_BOTTOM ||\ | 149 | ((field) == V4L2_FIELD_BOTTOM ||\ | |
147 | (field) == V4L2_FIELD_TOP ||\ | 150 | (field) == V4L2_FIELD_TOP ||\ | |
148 | (field) == V4L2_FIELD_ALTERNATE) | 151 | (field) == V4L2_FIELD_ALTERNATE) | |
152 | #define V4L2_FIELD_IS_INTERLACED(field) \ | |||
153 | ((field) == V4L2_FIELD_INTERLACED ||\ | |||
154 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | |||
155 | (field) == V4L2_FIELD_INTERLACED_BT) | |||
156 | #define V4L2_FIELD_IS_SEQUENTIAL(field) \ | |||
157 | ((field) == V4L2_FIELD_SEQ_TB ||\ | |||
158 | (field) == V4L2_FIELD_SEQ_BT) | |||
149 | 159 | |||
150 | enum v4l2_buf_type { | 160 | enum v4l2_buf_type { | |
151 | V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, | 161 | V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, | |
152 | V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, | 162 | V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, | |
153 | V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, | 163 | V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, | |
154 | V4L2_BUF_TYPE_VBI_CAPTURE = 4, | 164 | V4L2_BUF_TYPE_VBI_CAPTURE = 4, | |
155 | V4L2_BUF_TYPE_VBI_OUTPUT = 5, | 165 | V4L2_BUF_TYPE_VBI_OUTPUT = 5, | |
156 | V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, | 166 | V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, | |
157 | V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, | 167 | V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, | |
158 | V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8, | 168 | V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8, | |
159 | V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9, | 169 | V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9, | |
160 | V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10, | 170 | V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10, | |
161 | V4L2_BUF_TYPE_SDR_CAPTURE = 11, | 171 | V4L2_BUF_TYPE_SDR_CAPTURE = 11, | |
162 | V4L2_BUF_TYPE_SDR_OUTPUT = 12, | 172 | V4L2_BUF_TYPE_SDR_OUTPUT = 12, | |
163 | V4L2_BUF_TYPE_META_CAPTURE = 13, | 173 | V4L2_BUF_TYPE_META_CAPTURE = 13, | |
174 | V4L2_BUF_TYPE_META_OUTPUT = 14, | |||
164 | /* Deprecated, do not use */ | 175 | /* Deprecated, do not use */ | |
165 | V4L2_BUF_TYPE_PRIVATE = 0x80, | 176 | V4L2_BUF_TYPE_PRIVATE = 0x80, | |
166 | }; | 177 | }; | |
167 | 178 | |||
168 | #define V4L2_TYPE_IS_MULTIPLANAR(type) \ | 179 | #define V4L2_TYPE_IS_MULTIPLANAR(type) \ | |
169 | ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE \ | 180 | ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE \ | |
170 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) | 181 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) | |
171 | 182 | |||
172 | #define V4L2_TYPE_IS_OUTPUT(type) \ | 183 | #define V4L2_TYPE_IS_OUTPUT(type) \ | |
173 | ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT \ | 184 | ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT \ | |
174 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE \ | 185 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE \ | |
175 | || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY \ | 186 | || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY \ | |
176 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY \ | 187 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY \ | |
177 | || (type) == V4L2_BUF_TYPE_VBI_OUTPUT \ | 188 | || (type) == V4L2_BUF_TYPE_VBI_OUTPUT \ | |
178 | || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT \ | 189 | || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT \ | |
179 | || (type) == V4L2_BUF_TYPE_SDR_OUTPUT) | 190 | || (type) == V4L2_BUF_TYPE_SDR_OUTPUT \ | |
191 | || (type) == V4L2_BUF_TYPE_META_OUTPUT) | |||
192 | ||||
193 | #define V4L2_TYPE_IS_CAPTURE(type) (!V4L2_TYPE_IS_OUTPUT(type)) | |||
180 | 194 | |||
181 | enum v4l2_tuner_type { | 195 | enum v4l2_tuner_type { | |
182 | V4L2_TUNER_RADIO = 1, | 196 | V4L2_TUNER_RADIO = 1, | |
183 | V4L2_TUNER_ANALOG_TV = 2, | 197 | V4L2_TUNER_ANALOG_TV = 2, | |
184 | V4L2_TUNER_DIGITAL_TV = 3, | 198 | V4L2_TUNER_DIGITAL_TV = 3, | |
185 | V4L2_TUNER_SDR = 4, | 199 | V4L2_TUNER_SDR = 4, | |
186 | V4L2_TUNER_RF = 5, | 200 | V4L2_TUNER_RF = 5, | |
187 | }; | 201 | }; | |
188 | 202 | |||
189 | /* Deprecated, do not use */ | 203 | /* Deprecated, do not use */ | |
190 | #define V4L2_TUNER_ADC V4L2_TUNER_SDR | 204 | #define V4L2_TUNER_ADC V4L2_TUNER_SDR | |
191 | 205 | |||
192 | enum v4l2_memory { | 206 | enum v4l2_memory { | |
@@ -216,43 +230,41 @@ enum v4l2_colorspace { | @@ -216,43 +230,41 @@ enum v4l2_colorspace { | |||
216 | /* | 230 | /* | |
217 | * Deprecated, do not use. No driver will ever return this. This was | 231 | * Deprecated, do not use. No driver will ever return this. This was | |
218 | * based on a misunderstanding of the bt878 datasheet. | 232 | * based on a misunderstanding of the bt878 datasheet. | |
219 | */ | 233 | */ | |
220 | V4L2_COLORSPACE_BT878 = 4, | 234 | V4L2_COLORSPACE_BT878 = 4, | |
221 | 235 | |||
222 | /* | 236 | /* | |
223 | * NTSC 1953 colorspace. This only makes sense when dealing with | 237 | * NTSC 1953 colorspace. This only makes sense when dealing with | |
224 | * really, really old NTSC recordings. Superseded by SMPTE 170M. | 238 | * really, really old NTSC recordings. Superseded by SMPTE 170M. | |
225 | */ | 239 | */ | |
226 | V4L2_COLORSPACE_470_SYSTEM_M = 5, | 240 | V4L2_COLORSPACE_470_SYSTEM_M = 5, | |
227 | 241 | |||
228 | /* | 242 | /* | |
229 | * EBU Tech 3213 PAL/SECAM colorspace. This only makes sense when | 243 | * EBU Tech 3213 PAL/SECAM colorspace. | |
230 | * dealing with really old PAL/SECAM recordings. Superseded by | |||
231 | * SMPTE 170M. | |||
232 | */ | 244 | */ | |
233 | V4L2_COLORSPACE_470_SYSTEM_BG = 6, | 245 | V4L2_COLORSPACE_470_SYSTEM_BG = 6, | |
234 | 246 | |||
235 | /* | 247 | /* | |
236 | * Effectively shorthand for V4L2_COLORSPACE_SRGB, V4L2_YCBCR_ENC_601 | 248 | * Effectively shorthand for V4L2_COLORSPACE_SRGB, V4L2_YCBCR_ENC_601 | |
237 | * and V4L2_QUANTIZATION_FULL_RANGE. To be used for (Motion-)JPEG. | 249 | * and V4L2_QUANTIZATION_FULL_RANGE. To be used for (Motion-)JPEG. | |
238 | */ | 250 | */ | |
239 | V4L2_COLORSPACE_JPEG = 7, | 251 | V4L2_COLORSPACE_JPEG = 7, | |
240 | 252 | |||
241 | /* For RGB colorspaces such as produces by most webcams. */ | 253 | /* For RGB colorspaces such as produces by most webcams. */ | |
242 | V4L2_COLORSPACE_SRGB = 8, | 254 | V4L2_COLORSPACE_SRGB = 8, | |
243 | 255 | |||
244 | /* AdobeRGB colorspace */ | 256 | /* opRGB colorspace */ | |
245 | V4L2_COLORSPACE_ADOBERGB = 9, | 257 | V4L2_COLORSPACE_OPRGB = 9, | |
246 | 258 | |||
247 | /* BT.2020 colorspace, used for UHDTV. */ | 259 | /* BT.2020 colorspace, used for UHDTV. */ | |
248 | V4L2_COLORSPACE_BT2020 = 10, | 260 | V4L2_COLORSPACE_BT2020 = 10, | |
249 | 261 | |||
250 | /* Raw colorspace: for RAW unprocessed images */ | 262 | /* Raw colorspace: for RAW unprocessed images */ | |
251 | V4L2_COLORSPACE_RAW = 11, | 263 | V4L2_COLORSPACE_RAW = 11, | |
252 | 264 | |||
253 | /* DCI-P3 colorspace, used by cinema projectors */ | 265 | /* DCI-P3 colorspace, used by cinema projectors */ | |
254 | V4L2_COLORSPACE_DCI_P3 = 12, | 266 | V4L2_COLORSPACE_DCI_P3 = 12, | |
255 | }; | 267 | }; | |
256 | 268 | |||
257 | /* | 269 | /* | |
258 | * Determine how COLORSPACE_DEFAULT should map to a proper colorspace. | 270 | * Determine how COLORSPACE_DEFAULT should map to a proper colorspace. | |
@@ -264,64 +276,64 @@ enum v4l2_colorspace { | @@ -264,64 +276,64 @@ enum v4l2_colorspace { | |||
264 | ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB)) | 276 | ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB)) | |
265 | 277 | |||
266 | enum v4l2_xfer_func { | 278 | enum v4l2_xfer_func { | |
267 | /* | 279 | /* | |
268 | * Mapping of V4L2_XFER_FUNC_DEFAULT to actual transfer functions | 280 | * Mapping of V4L2_XFER_FUNC_DEFAULT to actual transfer functions | |
269 | * for the various colorspaces: | 281 | * for the various colorspaces: | |
270 | * | 282 | * | |
271 | * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M, | 283 | * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M, | |
272 | * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_REC709 and | 284 | * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_REC709 and | |
273 | * V4L2_COLORSPACE_BT2020: V4L2_XFER_FUNC_709 | 285 | * V4L2_COLORSPACE_BT2020: V4L2_XFER_FUNC_709 | |
274 | * | 286 | * | |
275 | * V4L2_COLORSPACE_SRGB, V4L2_COLORSPACE_JPEG: V4L2_XFER_FUNC_SRGB | 287 | * V4L2_COLORSPACE_SRGB, V4L2_COLORSPACE_JPEG: V4L2_XFER_FUNC_SRGB | |
276 | * | 288 | * | |
277 | * V4L2_COLORSPACE_ADOBERGB: V4L2_XFER_FUNC_ADOBERGB | 289 | * V4L2_COLORSPACE_OPRGB: V4L2_XFER_FUNC_OPRGB | |
278 | * | 290 | * | |
279 | * V4L2_COLORSPACE_SMPTE240M: V4L2_XFER_FUNC_SMPTE240M | 291 | * V4L2_COLORSPACE_SMPTE240M: V4L2_XFER_FUNC_SMPTE240M | |
280 | * | 292 | * | |
281 | * V4L2_COLORSPACE_RAW: V4L2_XFER_FUNC_NONE | 293 | * V4L2_COLORSPACE_RAW: V4L2_XFER_FUNC_NONE | |
282 | * | 294 | * | |
283 | * V4L2_COLORSPACE_DCI_P3: V4L2_XFER_FUNC_DCI_P3 | 295 | * V4L2_COLORSPACE_DCI_P3: V4L2_XFER_FUNC_DCI_P3 | |
284 | */ | 296 | */ | |
285 | V4L2_XFER_FUNC_DEFAULT = 0, | 297 | V4L2_XFER_FUNC_DEFAULT = 0, | |
286 | V4L2_XFER_FUNC_709 = 1, | 298 | V4L2_XFER_FUNC_709 = 1, | |
287 | V4L2_XFER_FUNC_SRGB = 2, | 299 | V4L2_XFER_FUNC_SRGB = 2, | |
288 | V4L2_XFER_FUNC_ADOBERGB = 3, | 300 | V4L2_XFER_FUNC_OPRGB = 3, | |
289 | V4L2_XFER_FUNC_SMPTE240M = 4, | 301 | V4L2_XFER_FUNC_SMPTE240M = 4, | |
290 | V4L2_XFER_FUNC_NONE = 5, | 302 | V4L2_XFER_FUNC_NONE = 5, | |
291 | V4L2_XFER_FUNC_DCI_P3 = 6, | 303 | V4L2_XFER_FUNC_DCI_P3 = 6, | |
292 | V4L2_XFER_FUNC_SMPTE2084 = 7, | 304 | V4L2_XFER_FUNC_SMPTE2084 = 7, | |
293 | }; | 305 | }; | |
294 | 306 | |||
295 | /* | 307 | /* | |
296 | * Determine how XFER_FUNC_DEFAULT should map to a proper transfer function. | 308 | * Determine how XFER_FUNC_DEFAULT should map to a proper transfer function. | |
297 | * This depends on the colorspace. | 309 | * This depends on the colorspace. | |
298 | */ | 310 | */ | |
299 | #define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \ | 311 | #define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \ | |
300 | ((colsp) == V4L2_COLORSPACE_ADOBERGB ? V4L2_XFER_FUNC_ADOBERGB : \ | 312 | ((colsp) == V4L2_COLORSPACE_OPRGB ? V4L2_XFER_FUNC_OPRGB : \ | |
301 | ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \ | 313 | ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \ | |
302 | ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : \ | 314 | ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : \ | |
303 | ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \ | 315 | ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \ | |
304 | ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? \ | 316 | ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? \ | |
305 | V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709))))) | 317 | V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709))))) | |
306 | 318 | |||
307 | enum v4l2_ycbcr_encoding { | 319 | enum v4l2_ycbcr_encoding { | |
308 | /* | 320 | /* | |
309 | * Mapping of V4L2_YCBCR_ENC_DEFAULT to actual encodings for the | 321 | * Mapping of V4L2_YCBCR_ENC_DEFAULT to actual encodings for the | |
310 | * various colorspaces: | 322 | * various colorspaces: | |
311 | * | 323 | * | |
312 | * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M, | 324 | * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M, | |
313 | * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_SRGB, | 325 | * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_SRGB, | |
314 | * V4L2_COLORSPACE_ADOBERGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601 | 326 | * V4L2_COLORSPACE_OPRGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601 | |
315 | * | 327 | * | |
316 | * V4L2_COLORSPACE_REC709 and V4L2_COLORSPACE_DCI_P3: V4L2_YCBCR_ENC_709 | 328 | * V4L2_COLORSPACE_REC709 and V4L2_COLORSPACE_DCI_P3: V4L2_YCBCR_ENC_709 | |
317 | * | 329 | * | |
318 | * V4L2_COLORSPACE_BT2020: V4L2_YCBCR_ENC_BT2020 | 330 | * V4L2_COLORSPACE_BT2020: V4L2_YCBCR_ENC_BT2020 | |
319 | * | 331 | * | |
320 | * V4L2_COLORSPACE_SMPTE240M: V4L2_YCBCR_ENC_SMPTE240M | 332 | * V4L2_COLORSPACE_SMPTE240M: V4L2_YCBCR_ENC_SMPTE240M | |
321 | */ | 333 | */ | |
322 | V4L2_YCBCR_ENC_DEFAULT = 0, | 334 | V4L2_YCBCR_ENC_DEFAULT = 0, | |
323 | 335 | |||
324 | /* ITU-R 601 -- SDTV */ | 336 | /* ITU-R 601 -- SDTV */ | |
325 | V4L2_YCBCR_ENC_601 = 1, | 337 | V4L2_YCBCR_ENC_601 = 1, | |
326 | 338 | |||
327 | /* Rec. 709 -- HDTV */ | 339 | /* Rec. 709 -- HDTV */ | |
@@ -368,66 +380,81 @@ enum v4l2_hsv_encoding { | @@ -368,66 +380,81 @@ enum v4l2_hsv_encoding { | |||
368 | /* | 380 | /* | |
369 | * Determine how YCBCR_ENC_DEFAULT should map to a proper Y'CbCr encoding. | 381 | * Determine how YCBCR_ENC_DEFAULT should map to a proper Y'CbCr encoding. | |
370 | * This depends on the colorspace. | 382 | * This depends on the colorspace. | |
371 | */ | 383 | */ | |
372 | #define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) \ | 384 | #define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) \ | |
373 | (((colsp) == V4L2_COLORSPACE_REC709 || \ | 385 | (((colsp) == V4L2_COLORSPACE_REC709 || \ | |
374 | (colsp) == V4L2_COLORSPACE_DCI_P3) ? V4L2_YCBCR_ENC_709 : \ | 386 | (colsp) == V4L2_COLORSPACE_DCI_P3) ? V4L2_YCBCR_ENC_709 : \ | |
375 | ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : \ | 387 | ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : \ | |
376 | ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : \ | 388 | ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : \ | |
377 | V4L2_YCBCR_ENC_601))) | 389 | V4L2_YCBCR_ENC_601))) | |
378 | 390 | |||
379 | enum v4l2_quantization { | 391 | enum v4l2_quantization { | |
380 | /* | 392 | /* | |
381 | * The default for R'G'B' quantization is always full range, except | 393 | * The default for R'G'B' quantization is always full range. | |
382 | * for the BT2020 colorspace. For Y'CbCr the quantization is always | 394 | * For Y'CbCr the quantization is always limited range, except | |
383 | * limited range, except for COLORSPACE_JPEG: this is full range. | 395 | * for COLORSPACE_JPEG: this is full range. | |
384 | */ | 396 | */ | |
385 | V4L2_QUANTIZATION_DEFAULT = 0, | 397 | V4L2_QUANTIZATION_DEFAULT = 0, | |
386 | V4L2_QUANTIZATION_FULL_RANGE = 1, | 398 | V4L2_QUANTIZATION_FULL_RANGE = 1, | |
387 | V4L2_QUANTIZATION_LIM_RANGE = 2, | 399 | V4L2_QUANTIZATION_LIM_RANGE = 2, | |
388 | }; | 400 | }; | |
389 | 401 | |||
390 | /* | 402 | /* | |
391 | * Determine how QUANTIZATION_DEFAULT should map to a proper quantization. | 403 | * Determine how QUANTIZATION_DEFAULT should map to a proper quantization. | |
392 | * This depends on whether the image is RGB or not, the colorspace and the | 404 | * This depends on whether the image is RGB or not, the colorspace. | |
393 | * Y'CbCr encoding. | 405 | * The Y'CbCr encoding is not used anymore, but is still there for backwards | |
406 | * compatibility. | |||
394 | */ | 407 | */ | |
395 | #define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv, colsp, ycbcr_enc) \ | 408 | #define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv, colsp, ycbcr_enc) \ | |
396 | (((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? \ | 409 | (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \ | |
397 | V4L2_QUANTIZATION_LIM_RANGE : \ | 410 | V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE) | |
398 | (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \ | 411 | ||
399 | V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)) | 412 | /* | |
413 | * Deprecated names for opRGB colorspace (IEC 61966-2-5) | |||
414 | * | |||
415 | * WARNING: Please don't use these deprecated defines in your code, as | |||
416 | * there is a chance we have to remove them in the future. | |||
417 | */ | |||
418 | #ifndef __KERNEL__ | |||
419 | #define V4L2_COLORSPACE_ADOBERGB V4L2_COLORSPACE_OPRGB | |||
420 | #define V4L2_XFER_FUNC_ADOBERGB V4L2_XFER_FUNC_OPRGB | |||
421 | #endif | |||
400 | 422 | |||
401 | enum v4l2_priority { | 423 | enum v4l2_priority { | |
402 | V4L2_PRIORITY_UNSET = 0, /* not initialized */ | 424 | V4L2_PRIORITY_UNSET = 0, /* not initialized */ | |
403 | V4L2_PRIORITY_BACKGROUND = 1, | 425 | V4L2_PRIORITY_BACKGROUND = 1, | |
404 | V4L2_PRIORITY_INTERACTIVE = 2, | 426 | V4L2_PRIORITY_INTERACTIVE = 2, | |
405 | V4L2_PRIORITY_RECORD = 3, | 427 | V4L2_PRIORITY_RECORD = 3, | |
406 | V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE, | 428 | V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE, | |
407 | }; | 429 | }; | |
408 | 430 | |||
409 | struct v4l2_rect { | 431 | struct v4l2_rect { | |
410 | __s32 left; | 432 | __s32 left; | |
411 | __s32 top; | 433 | __s32 top; | |
412 | __u32 width; | 434 | __u32 width; | |
413 | __u32 height; | 435 | __u32 height; | |
414 | }; | 436 | }; | |
415 | 437 | |||
416 | struct v4l2_fract { | 438 | struct v4l2_fract { | |
417 | __u32 numerator; | 439 | __u32 numerator; | |
418 | __u32 denominator; | 440 | __u32 denominator; | |
419 | }; | 441 | }; | |
420 | 442 | |||
443 | struct v4l2_area { | |||
444 | __u32 width; | |||
445 | __u32 height; | |||
446 | }; | |||
447 | ||||
421 | /** | 448 | /** | |
422 | * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP | 449 | * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP | |
423 | * | 450 | * | |
424 | * @driver: name of the driver module (e.g. "bttv") | 451 | * @driver: name of the driver module (e.g. "bttv") | |
425 | * @card: name of the card (e.g. "Hauppauge WinTV") | 452 | * @card: name of the card (e.g. "Hauppauge WinTV") | |
426 | * @bus_info: name of the bus (e.g. "PCI:" + pci_name(pci_dev) ) | 453 | * @bus_info: name of the bus (e.g. "PCI:" + pci_name(pci_dev) ) | |
427 | * @version: KERNEL_VERSION | 454 | * @version: KERNEL_VERSION | |
428 | * @capabilities: capabilities of the physical device as a whole | 455 | * @capabilities: capabilities of the physical device as a whole | |
429 | * @device_caps: capabilities accessed via this particular device (node) | 456 | * @device_caps: capabilities accessed via this particular device (node) | |
430 | * @reserved: reserved fields for future extensions | 457 | * @reserved: reserved fields for future extensions | |
431 | */ | 458 | */ | |
432 | struct v4l2_capability { | 459 | struct v4l2_capability { | |
433 | __u8 driver[16]; | 460 | __u8 driver[16]; | |
@@ -464,29 +491,32 @@ struct v4l2_capability { | @@ -464,29 +491,32 @@ struct v4l2_capability { | |||
464 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ | 491 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ | |
465 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ | 492 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ | |
466 | #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ | 493 | #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ | |
467 | #define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */ | 494 | #define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */ | |
468 | 495 | |||
469 | #define V4L2_CAP_SDR_CAPTURE 0x00100000 /* Is a SDR capture device */ | 496 | #define V4L2_CAP_SDR_CAPTURE 0x00100000 /* Is a SDR capture device */ | |
470 | #define V4L2_CAP_EXT_PIX_FORMAT 0x00200000 /* Supports the extended pixel format */ | 497 | #define V4L2_CAP_EXT_PIX_FORMAT 0x00200000 /* Supports the extended pixel format */ | |
471 | #define V4L2_CAP_SDR_OUTPUT 0x00400000 /* Is a SDR output device */ | 498 | #define V4L2_CAP_SDR_OUTPUT 0x00400000 /* Is a SDR output device */ | |
472 | #define V4L2_CAP_META_CAPTURE 0x00800000 /* Is a metadata capture device */ | 499 | #define V4L2_CAP_META_CAPTURE 0x00800000 /* Is a metadata capture device */ | |
473 | 500 | |||
474 | #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ | 501 | #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ | |
475 | #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ | 502 | #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ | |
476 | #define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */ | 503 | #define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */ | |
504 | #define V4L2_CAP_META_OUTPUT 0x08000000 /* Is a metadata output device */ | |||
477 | 505 | |||
478 | #define V4L2_CAP_TOUCH 0x10000000 /* Is a touch device */ | 506 | #define V4L2_CAP_TOUCH 0x10000000 /* Is a touch device */ | |
479 | 507 | |||
508 | #define V4L2_CAP_IO_MC 0x20000000 /* Is input/output controlled by the media controller */ | |||
509 | ||||
480 | #define V4L2_CAP_DEVICE_CAPS 0x80000000 /* sets device capabilities field */ | 510 | #define V4L2_CAP_DEVICE_CAPS 0x80000000 /* sets device capabilities field */ | |
481 | 511 | |||
482 | /* | 512 | /* | |
483 | * V I D E O I M A G E F O R M A T | 513 | * V I D E O I M A G E F O R M A T | |
484 | */ | 514 | */ | |
485 | struct v4l2_pix_format { | 515 | struct v4l2_pix_format { | |
486 | __u32 width; | 516 | __u32 width; | |
487 | __u32 height; | 517 | __u32 height; | |
488 | __u32 pixelformat; | 518 | __u32 pixelformat; | |
489 | __u32 field; /* enum v4l2_field */ | 519 | __u32 field; /* enum v4l2_field */ | |
490 | __u32 bytesperline; /* for padding, zero if unused */ | 520 | __u32 bytesperline; /* for padding, zero if unused */ | |
491 | __u32 sizeimage; | 521 | __u32 sizeimage; | |
492 | __u32 colorspace; /* enum v4l2_colorspace */ | 522 | __u32 colorspace; /* enum v4l2_colorspace */ | |
@@ -494,114 +524,146 @@ struct v4l2_pix_format { | @@ -494,114 +524,146 @@ struct v4l2_pix_format { | |||
494 | __u32 flags; /* format flags (V4L2_PIX_FMT_FLAG_*) */ | 524 | __u32 flags; /* format flags (V4L2_PIX_FMT_FLAG_*) */ | |
495 | union { | 525 | union { | |
496 | /* enum v4l2_ycbcr_encoding */ | 526 | /* enum v4l2_ycbcr_encoding */ | |
497 | __u32 ycbcr_enc; | 527 | __u32 ycbcr_enc; | |
498 | /* enum v4l2_hsv_encoding */ | 528 | /* enum v4l2_hsv_encoding */ | |
499 | __u32 hsv_enc; | 529 | __u32 hsv_enc; | |
500 | }; | 530 | }; | |
501 | __u32 quantization; /* enum v4l2_quantization */ | 531 | __u32 quantization; /* enum v4l2_quantization */ | |
502 | __u32 xfer_func; /* enum v4l2_xfer_func */ | 532 | __u32 xfer_func; /* enum v4l2_xfer_func */ | |
503 | }; | 533 | }; | |
504 | 534 | |||
505 | /* Pixel format FOURCC depth Description */ | 535 | /* Pixel format FOURCC depth Description */ | |
506 | 536 | |||
507 | /* RGB formats */ | 537 | /* RGB formats (1 or 2 bytes per pixel) */ | |
508 | #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ | 538 | #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ | |
509 | #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ | 539 | #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ | |
510 | #define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */ | 540 | #define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */ | |
511 | #define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */ | 541 | #define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */ | |
542 | #define V4L2_PIX_FMT_RGBA444 v4l2_fourcc('R', 'A', '1', '2') /* 16 rrrrgggg bbbbaaaa */ | |||
543 | #define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16 rrrrgggg bbbbxxxx */ | |||
544 | #define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16 aaaabbbb ggggrrrr */ | |||
545 | #define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16 xxxxbbbb ggggrrrr */ | |||
546 | #define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16 bbbbgggg rrrraaaa */ | |||
547 | #define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16 bbbbgggg rrrrxxxx */ | |||
512 | #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ | 548 | #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ | |
513 | #define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */ | 549 | #define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */ | |
514 | #define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */ | 550 | #define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */ | |
551 | #define V4L2_PIX_FMT_RGBA555 v4l2_fourcc('R', 'A', '1', '5') /* 16 RGBA-5-5-5-1 */ | |||
552 | #define V4L2_PIX_FMT_RGBX555 v4l2_fourcc('R', 'X', '1', '5') /* 16 RGBX-5-5-5-1 */ | |||
553 | #define V4L2_PIX_FMT_ABGR555 v4l2_fourcc('A', 'B', '1', '5') /* 16 ABGR-1-5-5-5 */ | |||
554 | #define V4L2_PIX_FMT_XBGR555 v4l2_fourcc('X', 'B', '1', '5') /* 16 XBGR-1-5-5-5 */ | |||
555 | #define V4L2_PIX_FMT_BGRA555 v4l2_fourcc('B', 'A', '1', '5') /* 16 BGRA-5-5-5-1 */ | |||
556 | #define V4L2_PIX_FMT_BGRX555 v4l2_fourcc('B', 'X', '1', '5') /* 16 BGRX-5-5-5-1 */ | |||
515 | #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ | 557 | #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ | |
516 | #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ | 558 | #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ | |
517 | #define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */ | 559 | #define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */ | |
518 | #define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */ | 560 | #define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */ | |
519 | #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ | 561 | #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ | |
562 | ||||
563 | /* RGB formats (3 or 4 bytes per pixel) */ | |||
520 | #define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */ | 564 | #define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */ | |
521 | #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ | 565 | #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ | |
522 | #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ | 566 | #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ | |
523 | #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ | 567 | #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ | |
524 | #define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */ | 568 | #define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */ | |
525 | #define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */ | 569 | #define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */ | |
570 | #define V4L2_PIX_FMT_BGRA32 v4l2_fourcc('R', 'A', '2', '4') /* 32 ABGR-8-8-8-8 */ | |||
571 | #define V4L2_PIX_FMT_BGRX32 v4l2_fourcc('R', 'X', '2', '4') /* 32 XBGR-8-8-8-8 */ | |||
526 | #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ | 572 | #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ | |
573 | #define V4L2_PIX_FMT_RGBA32 v4l2_fourcc('A', 'B', '2', '4') /* 32 RGBA-8-8-8-8 */ | |||
574 | #define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4') /* 32 RGBX-8-8-8-8 */ | |||
527 | #define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */ | 575 | #define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */ | |
528 | #define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */ | 576 | #define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */ | |
529 | 577 | |||
530 | /* Grey formats */ | 578 | /* Grey formats */ | |
531 | #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ | 579 | #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ | |
532 | #define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */ | 580 | #define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */ | |
533 | #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ | 581 | #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ | |
534 | #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ | 582 | #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ | |
535 | #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ | 583 | #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ | |
584 | #define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ') /* 14 Greyscale */ | |||
536 | #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ | 585 | #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ | |
537 | #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */ | 586 | #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */ | |
538 | 587 | |||
539 | /* Grey bit-packed formats */ | 588 | /* Grey bit-packed formats */ | |
540 | #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ | 589 | #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ | |
590 | #define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P') /* 10 Greyscale, MIPI RAW10 packed */ | |||
541 | 591 | |||
542 | /* Palette formats */ | 592 | /* Palette formats */ | |
543 | #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ | 593 | #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ | |
544 | 594 | |||
545 | /* Chrominance formats */ | 595 | /* Chrominance formats */ | |
546 | #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ') /* 8 UV 4:4 */ | 596 | #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ') /* 8 UV 4:4 */ | |
547 | 597 | |||
548 | /* Luminance+Chrominance formats */ | 598 | /* Luminance+Chrominance formats */ | |
549 | #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ | 599 | #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ | |
550 | #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ | 600 | #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ | |
551 | #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ | 601 | #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ | |
552 | #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */ | 602 | #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */ | |
553 | #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */ | 603 | #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */ | |
554 | #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P') /* 12 YUV 4:1:1 */ | 604 | #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P') /* 12 YUV 4:1:1 */ | |
555 | #define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4') /* 16 xxxxyyyy uuuuvvvv */ | 605 | #define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4') /* 16 xxxxyyyy uuuuvvvv */ | |
556 | #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ | 606 | #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ | |
557 | #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ | 607 | #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ | |
608 | #define V4L2_PIX_FMT_YUV24 v4l2_fourcc('Y', 'U', 'V', '3') /* 24 YUV-8-8-8 */ | |||
558 | #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ | 609 | #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ | |
559 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ | 610 | #define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V') /* 32 AYUV-8-8-8-8 */ | |
560 | #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ | 611 | #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */ | |
612 | #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */ | |||
613 | #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X') /* 32 VUYX-8-8-8-8 */ | |||
561 | #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ | 614 | #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ | |
562 | 615 | |||
563 | /* two planes -- one Y, one Cr + Cb interleaved */ | 616 | /* two planes -- one Y, one Cr + Cb interleaved */ | |
564 | #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ | 617 | #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ | |
565 | #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */ | 618 | #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */ | |
566 | #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ | 619 | #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ | |
567 | #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ | 620 | #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ | |
568 | #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */ | 621 | #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */ | |
569 | #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */ | 622 | #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */ | |
570 | 623 | |||
571 | /* two non contiguous planes - one Y, one Cr + Cb interleaved */ | 624 | /* two non contiguous planes - one Y, one Cr + Cb interleaved */ | |
572 | #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ | 625 | #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ | |
573 | #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */ | 626 | #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */ | |
574 | #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */ | 627 | #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */ | |
575 | #define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */ | 628 | #define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */ | |
576 | #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */ | |||
577 | #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 macroblocks */ | |||
578 | 629 | |||
579 | /* three planes - Y Cb, Cr */ | 630 | /* three planes - Y Cb, Cr */ | |
580 | #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ | 631 | #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ | |
581 | #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */ | 632 | #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */ | |
582 | #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 12 YVU411 planar */ | 633 | #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 12 YVU411 planar */ | |
583 | #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ | 634 | #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ | |
584 | #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ | 635 | #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ | |
585 | #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ | 636 | #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ | |
586 | 637 | |||
587 | /* three non contiguous planes - Y, Cb, Cr */ | 638 | /* three non contiguous planes - Y, Cb, Cr */ | |
588 | #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */ | 639 | #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */ | |
589 | #define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12 YVU420 planar */ | 640 | #define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12 YVU420 planar */ | |
590 | #define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6') /* 16 YUV422 planar */ | 641 | #define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6') /* 16 YUV422 planar */ | |
591 | #define V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1') /* 16 YVU422 planar */ | 642 | #define V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1') /* 16 YVU422 planar */ | |
592 | #define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24 YUV444 planar */ | 643 | #define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24 YUV444 planar */ | |
593 | #define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24 YVU444 planar */ | 644 | #define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24 YVU444 planar */ | |
594 | 645 | |||
646 | /* Tiled YUV formats */ | |||
647 | #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 4x4 tiles */ | |||
648 | #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */ | |||
649 | #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 32x32 tiles */ | |||
650 | ||||
651 | /* Tiled YUV formats, non contiguous planes */ | |||
652 | #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 tiles */ | |||
653 | #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */ | |||
654 | #define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */ | |||
655 | #define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */ | |||
656 | ||||
595 | /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */ | 657 | /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */ | |
596 | #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ | 658 | #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ | |
597 | #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ | 659 | #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ | |
598 | #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ | 660 | #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ | |
599 | #define V4L2_PIX_FMT_SRGGB8 v4l2_fourcc('R', 'G', 'G', 'B') /* 8 RGRG.. GBGB.. */ | 661 | #define V4L2_PIX_FMT_SRGGB8 v4l2_fourcc('R', 'G', 'G', 'B') /* 8 RGRG.. GBGB.. */ | |
600 | #define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0') /* 10 BGBG.. GRGR.. */ | 662 | #define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0') /* 10 BGBG.. GRGR.. */ | |
601 | #define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10 GBGB.. RGRG.. */ | 663 | #define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10 GBGB.. RGRG.. */ | |
602 | #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10 GRGR.. BGBG.. */ | 664 | #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10 GRGR.. BGBG.. */ | |
603 | #define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10 RGRG.. GBGB.. */ | 665 | #define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10 RGRG.. GBGB.. */ | |
604 | /* 10bit raw bayer packed, 5 bytes for every 4 pixels */ | 666 | /* 10bit raw bayer packed, 5 bytes for every 4 pixels */ | |
605 | #define V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A') | 667 | #define V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A') | |
606 | #define V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A') | 668 | #define V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A') | |
607 | #define V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A') | 669 | #define V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A') | |
@@ -615,53 +677,68 @@ struct v4l2_pix_format { | @@ -615,53 +677,68 @@ struct v4l2_pix_format { | |||
615 | #define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8') | 677 | #define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8') | |
616 | #define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8') | 678 | #define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8') | |
617 | #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0') | 679 | #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0') | |
618 | #define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8') | 680 | #define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8') | |
619 | #define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12 BGBG.. GRGR.. */ | 681 | #define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12 BGBG.. GRGR.. */ | |
620 | #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */ | 682 | #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */ | |
621 | #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */ | 683 | #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */ | |
622 | #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */ | 684 | #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */ | |
623 | /* 12bit raw bayer packed, 6 bytes for every 4 pixels */ | 685 | /* 12bit raw bayer packed, 6 bytes for every 4 pixels */ | |
624 | #define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C') | 686 | #define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C') | |
625 | #define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C') | 687 | #define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C') | |
626 | #define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C') | 688 | #define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C') | |
627 | #define V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C') | 689 | #define V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C') | |
690 | #define V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4') /* 14 BGBG.. GRGR.. */ | |||
691 | #define V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4') /* 14 GBGB.. RGRG.. */ | |||
692 | #define V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('G', 'R', '1', '4') /* 14 GRGR.. BGBG.. */ | |||
693 | #define V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4') /* 14 RGRG.. GBGB.. */ | |||
694 | /* 14bit raw bayer packed, 7 bytes for every 4 pixels */ | |||
695 | #define V4L2_PIX_FMT_SBGGR14P v4l2_fourcc('p', 'B', 'E', 'E') | |||
696 | #define V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E') | |||
697 | #define V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E') | |||
698 | #define V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E') | |||
628 | #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ | 699 | #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ | |
629 | #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16 GBGB.. RGRG.. */ | 700 | #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16 GBGB.. RGRG.. */ | |
630 | #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16 GRGR.. BGBG.. */ | 701 | #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16 GRGR.. BGBG.. */ | |
631 | #define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16 RGRG.. GBGB.. */ | 702 | #define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16 RGRG.. GBGB.. */ | |
632 | 703 | |||
633 | /* HSV formats */ | 704 | /* HSV formats */ | |
634 | #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3') | 705 | #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3') | |
635 | #define V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4') | 706 | #define V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4') | |
636 | 707 | |||
637 | /* compressed formats */ | 708 | /* compressed formats */ | |
638 | #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG */ | 709 | #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG */ | |
639 | #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG */ | 710 | #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG */ | |
640 | #define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd') /* 1394 */ | 711 | #define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd') /* 1394 */ | |
641 | #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */ | 712 | #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */ | |
642 | #define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */ | 713 | #define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */ | |
643 | #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */ | 714 | #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */ | |
644 | #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */ | 715 | #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */ | |
645 | #define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3') /* H263 */ | 716 | #define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3') /* H263 */ | |
646 | #define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES */ | 717 | #define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES */ | |
647 | #define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES */ | 718 | #define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES */ | |
719 | #define V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S') /* MPEG-2 parsed slice data */ | |||
648 | #define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */ | 720 | #define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */ | |
649 | #define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid */ | 721 | #define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid */ | |
650 | #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */ | 722 | #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */ | |
651 | #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */ | 723 | #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */ | |
652 | #define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */ | 724 | #define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */ | |
725 | #define V4L2_PIX_FMT_VP8_FRAME v4l2_fourcc('V', 'P', '8', 'F') /* VP8 parsed frame */ | |||
653 | #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */ | 726 | #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */ | |
727 | #define V4L2_PIX_FMT_VP9_FRAME v4l2_fourcc('V', 'P', '9', 'F') /* VP9 parsed frame */ | |||
654 | #define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */ | 728 | #define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */ | |
729 | #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */ | |||
730 | #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */ | |||
731 | #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */ | |||
655 | 732 | |||
656 | /* Vendor-specific formats */ | 733 | /* Vendor-specific formats */ | |
657 | #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ | 734 | #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ | |
658 | #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ | 735 | #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ | |
659 | #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ | 736 | #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ | |
660 | #define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */ | 737 | #define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */ | |
661 | #define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */ | 738 | #define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */ | |
662 | #define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */ | 739 | #define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */ | |
663 | #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */ | 740 | #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */ | |
664 | #define V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */ | 741 | #define V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */ | |
665 | #define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */ | 742 | #define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */ | |
666 | #define V4L2_PIX_FMT_SPCA508 v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */ | 743 | #define V4L2_PIX_FMT_SPCA508 v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */ | |
667 | #define V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */ | 744 | #define V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */ | |
@@ -674,27 +751,30 @@ struct v4l2_pix_format { | @@ -674,27 +751,30 @@ struct v4l2_pix_format { | |||
674 | #define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ | 751 | #define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ | |
675 | #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ | 752 | #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ | |
676 | #define V4L2_PIX_FMT_STV0680 v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */ | 753 | #define V4L2_PIX_FMT_STV0680 v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */ | |
677 | #define V4L2_PIX_FMT_TM6000 v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */ | 754 | #define V4L2_PIX_FMT_TM6000 v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */ | |
678 | #define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */ | 755 | #define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */ | |
679 | #define V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */ | 756 | #define V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */ | |
680 | #define V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */ | 757 | #define V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */ | |
681 | #define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */ | 758 | #define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */ | |
682 | #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ | 759 | #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ | |
683 | #define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */ | 760 | #define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */ | |
684 | #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */ | 761 | #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */ | |
685 | #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ | 762 | #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ | |
686 | #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ | 763 | #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ | |
764 | #define V4L2_PIX_FMT_MM21 v4l2_fourcc('M', 'M', '2', '1') /* Mediatek 8-bit block mode, two non-contiguous planes */ | |||
687 | #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */ | 765 | #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */ | |
766 | #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */ | |||
767 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */ | |||
688 | 768 | |||
689 | /* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */ | 769 | /* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */ | |
690 | #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */ | 770 | #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */ | |
691 | #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 packed 10-bit GBRG bayer */ | 771 | #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 packed 10-bit GBRG bayer */ | |
692 | #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */ | 772 | #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */ | |
693 | #define V4L2_PIX_FMT_IPU3_SRGGB10 v4l2_fourcc('i', 'p', '3', 'r') /* IPU3 packed 10-bit RGGB bayer */ | 773 | #define V4L2_PIX_FMT_IPU3_SRGGB10 v4l2_fourcc('i', 'p', '3', 'r') /* IPU3 packed 10-bit RGGB bayer */ | |
694 | 774 | |||
695 | /* SDR formats - used only for Software Defined Radio devices */ | 775 | /* SDR formats - used only for Software Defined Radio devices */ | |
696 | #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ | 776 | #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ | |
697 | #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */ | 777 | #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */ | |
698 | #define V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8') /* complex s8 */ | 778 | #define V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8') /* complex s8 */ | |
699 | #define V4L2_SDR_FMT_CS14LE v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */ | 779 | #define V4L2_SDR_FMT_CS14LE v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */ | |
700 | #define V4L2_SDR_FMT_RU12LE v4l2_fourcc('R', 'U', '1', '2') /* real u12le */ | 780 | #define V4L2_SDR_FMT_RU12LE v4l2_fourcc('R', 'U', '1', '2') /* real u12le */ | |
@@ -702,47 +782,63 @@ struct v4l2_pix_format { | @@ -702,47 +782,63 @@ struct v4l2_pix_format { | |||
702 | #define V4L2_SDR_FMT_PCU18BE v4l2_fourcc('P', 'C', '1', '8') /* planar complex u18be */ | 782 | #define V4L2_SDR_FMT_PCU18BE v4l2_fourcc('P', 'C', '1', '8') /* planar complex u18be */ | |
703 | #define V4L2_SDR_FMT_PCU20BE v4l2_fourcc('P', 'C', '2', '0') /* planar complex u20be */ | 783 | #define V4L2_SDR_FMT_PCU20BE v4l2_fourcc('P', 'C', '2', '0') /* planar complex u20be */ | |
704 | 784 | |||
705 | /* Touch formats - used for Touch devices */ | 785 | /* Touch formats - used for Touch devices */ | |
706 | #define V4L2_TCH_FMT_DELTA_TD16 v4l2_fourcc('T', 'D', '1', '6') /* 16-bit signed deltas */ | 786 | #define V4L2_TCH_FMT_DELTA_TD16 v4l2_fourcc('T', 'D', '1', '6') /* 16-bit signed deltas */ | |
707 | #define V4L2_TCH_FMT_DELTA_TD08 v4l2_fourcc('T', 'D', '0', '8') /* 8-bit signed deltas */ | 787 | #define V4L2_TCH_FMT_DELTA_TD08 v4l2_fourcc('T', 'D', '0', '8') /* 8-bit signed deltas */ | |
708 | #define V4L2_TCH_FMT_TU16 v4l2_fourcc('T', 'U', '1', '6') /* 16-bit unsigned touch data */ | 788 | #define V4L2_TCH_FMT_TU16 v4l2_fourcc('T', 'U', '1', '6') /* 16-bit unsigned touch data */ | |
709 | #define V4L2_TCH_FMT_TU08 v4l2_fourcc('T', 'U', '0', '8') /* 8-bit unsigned touch data */ | 789 | #define V4L2_TCH_FMT_TU08 v4l2_fourcc('T', 'U', '0', '8') /* 8-bit unsigned touch data */ | |
710 | 790 | |||
711 | /* Meta-data formats */ | 791 | /* Meta-data formats */ | |
712 | #define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 1-D Histogram */ | 792 | #define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 1-D Histogram */ | |
713 | #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */ | 793 | #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */ | |
714 | #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */ | 794 | #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */ | |
795 | #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */ | |||
796 | #define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */ | |||
797 | ||||
798 | /* Vendor specific - used for RK_ISP1 camera sub-system */ | |||
799 | #define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */ | |||
800 | #define V4L2_META_FMT_RK_ISP1_STAT_3A v4l2_fourcc('R', 'K', '1', 'S') /* Rockchip ISP1 3A Statistics */ | |||
715 | 801 | |||
716 | /* priv field value to indicates that subsequent fields are valid. */ | 802 | /* priv field value to indicates that subsequent fields are valid. */ | |
717 | #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe | 803 | #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe | |
718 | 804 | |||
719 | /* Flags */ | 805 | /* Flags */ | |
720 | #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001 | 806 | #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001 | |
807 | #define V4L2_PIX_FMT_FLAG_SET_CSC 0x00000002 | |||
721 | 808 | |||
722 | /* | 809 | /* | |
723 | * F O R M A T E N U M E R A T I O N | 810 | * F O R M A T E N U M E R A T I O N | |
724 | */ | 811 | */ | |
725 | struct v4l2_fmtdesc { | 812 | struct v4l2_fmtdesc { | |
726 | __u32 index; /* Format number */ | 813 | __u32 index; /* Format number */ | |
727 | __u32 type; /* enum v4l2_buf_type */ | 814 | __u32 type; /* enum v4l2_buf_type */ | |
728 | __u32 flags; | 815 | __u32 flags; | |
729 | __u8 description[32]; /* Description string */ | 816 | __u8 description[32]; /* Description string */ | |
730 | __u32 pixelformat; /* Format fourcc */ | 817 | __u32 pixelformat; /* Format fourcc */ | |
731 | __u32 reserved[4]; | 818 | __u32 mbus_code; /* Media bus code */ | |
819 | __u32 reserved[3]; | |||
732 | }; | 820 | }; | |
733 | 821 | |||
734 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 | 822 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 | |
735 | #define V4L2_FMT_FLAG_EMULATED 0x0002 | 823 | #define V4L2_FMT_FLAG_EMULATED 0x0002 | |
824 | #define V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM 0x0004 | |||
825 | #define V4L2_FMT_FLAG_DYN_RESOLUTION 0x0008 | |||
826 | #define V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL 0x0010 | |||
827 | #define V4L2_FMT_FLAG_CSC_COLORSPACE 0x0020 | |||
828 | #define V4L2_FMT_FLAG_CSC_XFER_FUNC 0x0040 | |||
829 | #define V4L2_FMT_FLAG_CSC_YCBCR_ENC 0x0080 | |||
830 | #define V4L2_FMT_FLAG_CSC_HSV_ENC V4L2_FMT_FLAG_CSC_YCBCR_ENC | |||
831 | #define V4L2_FMT_FLAG_CSC_QUANTIZATION 0x0100 | |||
736 | 832 | |||
737 | /* Frame Size and frame rate enumeration */ | 833 | /* Frame Size and frame rate enumeration */ | |
738 | /* | 834 | /* | |
739 | * F R A M E S I Z E E N U M E R A T I O N | 835 | * F R A M E S I Z E E N U M E R A T I O N | |
740 | */ | 836 | */ | |
741 | enum v4l2_frmsizetypes { | 837 | enum v4l2_frmsizetypes { | |
742 | V4L2_FRMSIZE_TYPE_DISCRETE = 1, | 838 | V4L2_FRMSIZE_TYPE_DISCRETE = 1, | |
743 | V4L2_FRMSIZE_TYPE_CONTINUOUS = 2, | 839 | V4L2_FRMSIZE_TYPE_CONTINUOUS = 2, | |
744 | V4L2_FRMSIZE_TYPE_STEPWISE = 3, | 840 | V4L2_FRMSIZE_TYPE_STEPWISE = 3, | |
745 | }; | 841 | }; | |
746 | 842 | |||
747 | struct v4l2_frmsize_discrete { | 843 | struct v4l2_frmsize_discrete { | |
748 | __u32 width; /* Frame width [pixel] */ | 844 | __u32 width; /* Frame width [pixel] */ | |
@@ -851,47 +947,81 @@ struct v4l2_jpegcompression { | @@ -851,47 +947,81 @@ struct v4l2_jpegcompression { | |||
851 | * ONLY, not by this property! */ | 947 | * ONLY, not by this property! */ | |
852 | 948 | |||
853 | #define V4L2_JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */ | 949 | #define V4L2_JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */ | |
854 | #define V4L2_JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */ | 950 | #define V4L2_JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */ | |
855 | #define V4L2_JPEG_MARKER_DRI (1<<5) /* Define Restart Interval */ | 951 | #define V4L2_JPEG_MARKER_DRI (1<<5) /* Define Restart Interval */ | |
856 | #define V4L2_JPEG_MARKER_COM (1<<6) /* Comment segment */ | 952 | #define V4L2_JPEG_MARKER_COM (1<<6) /* Comment segment */ | |
857 | #define V4L2_JPEG_MARKER_APP (1<<7) /* App segment, driver will | 953 | #define V4L2_JPEG_MARKER_APP (1<<7) /* App segment, driver will | |
858 | * always use APP0 */ | 954 | * always use APP0 */ | |
859 | }; | 955 | }; | |
860 | 956 | |||
861 | /* | 957 | /* | |
862 | * M E M O R Y - M A P P I N G B U F F E R S | 958 | * M E M O R Y - M A P P I N G B U F F E R S | |
863 | */ | 959 | */ | |
960 | ||||
961 | #ifdef __KERNEL__ | |||
962 | /* | |||
963 | * This corresponds to the user space version of timeval | |||
964 | * for 64-bit time_t. sparc64 is different from everyone | |||
965 | * else, using the microseconds in the wrong half of the | |||
966 | * second 64-bit word. | |||
967 | */ | |||
968 | struct __kernel_v4l2_timeval { | |||
969 | long long tv_sec; | |||
970 | #if defined(__sparc__) && defined(__arch64__) | |||
971 | int tv_usec; | |||
972 | int __pad; | |||
973 | #else | |||
974 | long long tv_usec; | |||
975 | #endif | |||
976 | }; | |||
977 | #endif | |||
978 | ||||
864 | struct v4l2_requestbuffers { | 979 | struct v4l2_requestbuffers { | |
865 | __u32 count; | 980 | __u32 count; | |
866 | __u32 type; /* enum v4l2_buf_type */ | 981 | __u32 type; /* enum v4l2_buf_type */ | |
867 | __u32 memory; /* enum v4l2_memory */ | 982 | __u32 memory; /* enum v4l2_memory */ | |
868 | __u32 reserved[2]; | 983 | __u32 capabilities; | |
984 | __u8 flags; | |||
985 | __u8 reserved[3]; | |||
869 | }; | 986 | }; | |
870 | 987 | |||
988 | #define V4L2_MEMORY_FLAG_NON_COHERENT (1 << 0) | |||
989 | ||||
990 | /* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */ | |||
991 | #define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0) | |||
992 | #define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1) | |||
993 | #define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2) | |||
994 | #define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3) | |||
995 | #define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4) | |||
996 | #define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5) | |||
997 | #define V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS (1 << 6) | |||
998 | ||||
871 | /** | 999 | /** | |
872 | * struct v4l2_plane - plane info for multi-planar buffers | 1000 | * struct v4l2_plane - plane info for multi-planar buffers | |
873 | * @bytesused: number of bytes occupied by data in the plane (payload) | 1001 | * @bytesused: number of bytes occupied by data in the plane (payload) | |
874 | * @length: size of this plane (NOT the payload) in bytes | 1002 | * @length: size of this plane (NOT the payload) in bytes | |
875 | * @mem_offset: when memory in the associated struct v4l2_buffer is | 1003 | * @mem_offset: when memory in the associated struct v4l2_buffer is | |
876 | * V4L2_MEMORY_MMAP, equals the offset from the start of | 1004 | * V4L2_MEMORY_MMAP, equals the offset from the start of | |
877 | * the device memory for this plane (or is a "cookie" that | 1005 | * the device memory for this plane (or is a "cookie" that | |
878 | * should be passed to mmap() called on the video node) | 1006 | * should be passed to mmap() called on the video node) | |
879 | * @userptr: when memory is V4L2_MEMORY_USERPTR, a userspace pointer | 1007 | * @userptr: when memory is V4L2_MEMORY_USERPTR, a userspace pointer | |
880 | * pointing to this plane | 1008 | * pointing to this plane | |
881 | * @fd: when memory is V4L2_MEMORY_DMABUF, a userspace file | 1009 | * @fd: when memory is V4L2_MEMORY_DMABUF, a userspace file | |
882 | * descriptor associated with this plane | 1010 | * descriptor associated with this plane | |
1011 | * @m: union of @mem_offset, @userptr and @fd | |||
883 | * @data_offset: offset in the plane to the start of data; usually 0, | 1012 | * @data_offset: offset in the plane to the start of data; usually 0, | |
884 | * unless there is a header in front of the data | 1013 | * unless there is a header in front of the data | |
1014 | * @reserved: drivers and applications must zero this array | |||
885 | * | 1015 | * | |
886 | * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer | 1016 | * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer | |
887 | * with two planes can have one plane for Y, and another for interleaved CbCr | 1017 | * with two planes can have one plane for Y, and another for interleaved CbCr | |
888 | * components. Each plane can reside in a separate memory buffer, or even in | 1018 | * components. Each plane can reside in a separate memory buffer, or even in | |
889 | * a completely separate memory node (e.g. in embedded devices). | 1019 | * a completely separate memory node (e.g. in embedded devices). | |
890 | */ | 1020 | */ | |
891 | struct v4l2_plane { | 1021 | struct v4l2_plane { | |
892 | __u32 bytesused; | 1022 | __u32 bytesused; | |
893 | __u32 length; | 1023 | __u32 length; | |
894 | union { | 1024 | union { | |
895 | __u32 mem_offset; | 1025 | __u32 mem_offset; | |
896 | unsigned long userptr; | 1026 | unsigned long userptr; | |
897 | __s32 fd; | 1027 | __s32 fd; | |
@@ -913,100 +1043,133 @@ struct v4l2_plane { | @@ -913,100 +1043,133 @@ struct v4l2_plane { | |||
913 | * @timecode: frame timecode | 1043 | * @timecode: frame timecode | |
914 | * @sequence: sequence count of this frame | 1044 | * @sequence: sequence count of this frame | |
915 | * @memory: enum v4l2_memory; the method, in which the actual video data is | 1045 | * @memory: enum v4l2_memory; the method, in which the actual video data is | |
916 | * passed | 1046 | * passed | |
917 | * @offset: for non-multiplanar buffers with memory == V4L2_MEMORY_MMAP; | 1047 | * @offset: for non-multiplanar buffers with memory == V4L2_MEMORY_MMAP; | |
918 | * offset from the start of the device memory for this plane, | 1048 | * offset from the start of the device memory for this plane, | |
919 | * (or a "cookie" that should be passed to mmap() as offset) | 1049 | * (or a "cookie" that should be passed to mmap() as offset) | |
920 | * @userptr: for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR; | 1050 | * @userptr: for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR; | |
921 | * a userspace pointer pointing to this buffer | 1051 | * a userspace pointer pointing to this buffer | |
922 | * @fd: for non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF; | 1052 | * @fd: for non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF; | |
923 | * a userspace file descriptor associated with this buffer | 1053 | * a userspace file descriptor associated with this buffer | |
924 | * @planes: for multiplanar buffers; userspace pointer to the array of plane | 1054 | * @planes: for multiplanar buffers; userspace pointer to the array of plane | |
925 | * info structs for this buffer | 1055 | * info structs for this buffer | |
1056 | * @m: union of @offset, @userptr, @planes and @fd | |||
926 | * @length: size in bytes of the buffer (NOT its payload) for single-plane | 1057 | * @length: size in bytes of the buffer (NOT its payload) for single-plane | |
927 | * buffers (when type != *_MPLANE); number of elements in the | 1058 | * buffers (when type != *_MPLANE); number of elements in the | |
928 | * planes array for multi-plane buffers | 1059 | * planes array for multi-plane buffers | |
1060 | * @reserved2: drivers and applications must zero this field | |||
1061 | * @request_fd: fd of the request that this buffer should use | |||
1062 | * @reserved: for backwards compatibility with applications that do not know | |||
1063 | * about @request_fd | |||
929 | * | 1064 | * | |
930 | * Contains data exchanged by application and driver using one of the Streaming | 1065 | * Contains data exchanged by application and driver using one of the Streaming | |
931 | * I/O methods. | 1066 | * I/O methods. | |
932 | */ | 1067 | */ | |
933 | struct v4l2_buffer { | 1068 | struct v4l2_buffer { | |
934 | __u32 index; | 1069 | __u32 index; | |
935 | __u32 type; | 1070 | __u32 type; | |
936 | __u32 bytesused; | 1071 | __u32 bytesused; | |
937 | __u32 flags; | 1072 | __u32 flags; | |
938 | __u32 field; | 1073 | __u32 field; | |
1074 | #ifdef __KERNEL__ | |||
1075 | struct __kernel_v4l2_timeval timestamp; | |||
1076 | #else | |||
939 | struct timeval timestamp; | 1077 | struct timeval timestamp; | |
1078 | #endif | |||
940 | struct v4l2_timecode timecode; | 1079 | struct v4l2_timecode timecode; | |
941 | __u32 sequence; | 1080 | __u32 sequence; | |
942 | 1081 | |||
943 | /* memory location */ | 1082 | /* memory location */ | |
944 | __u32 memory; | 1083 | __u32 memory; | |
945 | union { | 1084 | union { | |
946 | __u32 offset; | 1085 | __u32 offset; | |
947 | unsigned long userptr; | 1086 | unsigned long userptr; | |
948 | struct v4l2_plane *planes; | 1087 | struct v4l2_plane *planes; | |
949 | __s32 fd; | 1088 | __s32 fd; | |
950 | } m; | 1089 | } m; | |
951 | __u32 length; | 1090 | __u32 length; | |
952 | __u32 reserved2; | 1091 | __u32 reserved2; | |
953 | __u32 reserved; | 1092 | union { | |
1093 | __s32 request_fd; | |||
1094 | __u32 reserved; | |||
1095 | }; | |||
954 | }; | 1096 | }; | |
955 | 1097 | |||
1098 | #ifndef __KERNEL__ | |||
1099 | /** | |||
1100 | * v4l2_timeval_to_ns - Convert timeval to nanoseconds | |||
1101 | * @tv: pointer to the timeval variable to be converted | |||
1102 | * | |||
1103 | * Returns the scalar nanosecond representation of the timeval | |||
1104 | * parameter. | |||
1105 | */ | |||
1106 | static inline __u64 v4l2_timeval_to_ns(const struct timeval *tv) | |||
1107 | { | |||
1108 | return (__u64)tv->tv_sec * 1000000000ULL + tv->tv_usec * 1000; | |||
1109 | } | |||
1110 | #endif | |||
1111 | ||||
956 | /* Flags for 'flags' field */ | 1112 | /* Flags for 'flags' field */ | |
957 | /* Buffer is mapped (flag) */ | 1113 | /* Buffer is mapped (flag) */ | |
958 | #define V4L2_BUF_FLAG_MAPPED 0x00000001 | 1114 | #define V4L2_BUF_FLAG_MAPPED 0x00000001 | |
959 | /* Buffer is queued for processing */ | 1115 | /* Buffer is queued for processing */ | |
960 | #define V4L2_BUF_FLAG_QUEUED 0x00000002 | 1116 | #define V4L2_BUF_FLAG_QUEUED 0x00000002 | |
961 | /* Buffer is ready */ | 1117 | /* Buffer is ready */ | |
962 | #define V4L2_BUF_FLAG_DONE 0x00000004 | 1118 | #define V4L2_BUF_FLAG_DONE 0x00000004 | |
963 | /* Image is a keyframe (I-frame) */ | 1119 | /* Image is a keyframe (I-frame) */ | |
964 | #define V4L2_BUF_FLAG_KEYFRAME 0x00000008 | 1120 | #define V4L2_BUF_FLAG_KEYFRAME 0x00000008 | |
965 | /* Image is a P-frame */ | 1121 | /* Image is a P-frame */ | |
966 | #define V4L2_BUF_FLAG_PFRAME 0x00000010 | 1122 | #define V4L2_BUF_FLAG_PFRAME 0x00000010 | |
967 | /* Image is a B-frame */ | 1123 | /* Image is a B-frame */ | |
968 | #define V4L2_BUF_FLAG_BFRAME 0x00000020 | 1124 | #define V4L2_BUF_FLAG_BFRAME 0x00000020 | |
969 | /* Buffer is ready, but the data contained within is corrupted. */ | 1125 | /* Buffer is ready, but the data contained within is corrupted. */ | |
970 | #define V4L2_BUF_FLAG_ERROR 0x00000040 | 1126 | #define V4L2_BUF_FLAG_ERROR 0x00000040 | |
1127 | /* Buffer is added to an unqueued request */ | |||
1128 | #define V4L2_BUF_FLAG_IN_REQUEST 0x00000080 | |||
971 | /* timecode field is valid */ | 1129 | /* timecode field is valid */ | |
972 | #define V4L2_BUF_FLAG_TIMECODE 0x00000100 | 1130 | #define V4L2_BUF_FLAG_TIMECODE 0x00000100 | |
1131 | /* Don't return the capture buffer until OUTPUT timestamp changes */ | |||
1132 | #define V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF 0x00000200 | |||
973 | /* Buffer is prepared for queuing */ | 1133 | /* Buffer is prepared for queuing */ | |
974 | #define V4L2_BUF_FLAG_PREPARED 0x00000400 | 1134 | #define V4L2_BUF_FLAG_PREPARED 0x00000400 | |
975 | /* Cache handling flags */ | 1135 | /* Cache handling flags */ | |
976 | #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x00000800 | 1136 | #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x00000800 | |
977 | #define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x00001000 | 1137 | #define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x00001000 | |
978 | /* Timestamp type */ | 1138 | /* Timestamp type */ | |
979 | #define V4L2_BUF_FLAG_TIMESTAMP_MASK 0x0000e000 | 1139 | #define V4L2_BUF_FLAG_TIMESTAMP_MASK 0x0000e000 | |
980 | #define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x00000000 | 1140 | #define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x00000000 | |
981 | #define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x00002000 | 1141 | #define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x00002000 | |
982 | #define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x00004000 | 1142 | #define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x00004000 | |
983 | /* Timestamp sources. */ | 1143 | /* Timestamp sources. */ | |
984 | #define V4L2_BUF_FLAG_TSTAMP_SRC_MASK 0x00070000 | 1144 | #define V4L2_BUF_FLAG_TSTAMP_SRC_MASK 0x00070000 | |
985 | #define V4L2_BUF_FLAG_TSTAMP_SRC_EOF 0x00000000 | 1145 | #define V4L2_BUF_FLAG_TSTAMP_SRC_EOF 0x00000000 | |
986 | #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000 | 1146 | #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000 | |
987 | /* mem2mem encoder/decoder */ | 1147 | /* mem2mem encoder/decoder */ | |
988 | #define V4L2_BUF_FLAG_LAST 0x00100000 | 1148 | #define V4L2_BUF_FLAG_LAST 0x00100000 | |
1149 | /* request_fd is valid */ | |||
1150 | #define V4L2_BUF_FLAG_REQUEST_FD 0x00800000 | |||
989 | 1151 | |||
990 | /** | 1152 | /** | |
991 | * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor | 1153 | * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor | |
992 | * | 1154 | * | |
993 | * @index: id number of the buffer | 1155 | * @index: id number of the buffer | |
994 | * @type: enum v4l2_buf_type; buffer type (type == *_MPLANE for | 1156 | * @type: enum v4l2_buf_type; buffer type (type == *_MPLANE for | |
995 | * multiplanar buffers); | 1157 | * multiplanar buffers); | |
996 | * @plane: index of the plane to be exported, 0 for single plane queues | 1158 | * @plane: index of the plane to be exported, 0 for single plane queues | |
997 | * @flags: flags for newly created file, currently only O_CLOEXEC is | 1159 | * @flags: flags for newly created file, currently only O_CLOEXEC is | |
998 | * supported, refer to manual of open syscall for more details | 1160 | * supported, refer to manual of open syscall for more details | |
999 | * @fd: file descriptor associated with DMABUF (set by driver) | 1161 | * @fd: file descriptor associated with DMABUF (set by driver) | |
1162 | * @reserved: drivers and applications must zero this array | |||
1000 | * | 1163 | * | |
1001 | * Contains data used for exporting a video buffer as DMABUF file descriptor. | 1164 | * Contains data used for exporting a video buffer as DMABUF file descriptor. | |
1002 | * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF | 1165 | * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF | |
1003 | * (identical to the cookie used to mmap() the buffer to userspace). All | 1166 | * (identical to the cookie used to mmap() the buffer to userspace). All | |
1004 | * reserved fields must be set to zero. The field reserved0 is expected to | 1167 | * reserved fields must be set to zero. The field reserved0 is expected to | |
1005 | * become a structure 'type' allowing an alternative layout of the structure | 1168 | * become a structure 'type' allowing an alternative layout of the structure | |
1006 | * content. Therefore this field should not be used for any other extensions. | 1169 | * content. Therefore this field should not be used for any other extensions. | |
1007 | */ | 1170 | */ | |
1008 | struct v4l2_exportbuffer { | 1171 | struct v4l2_exportbuffer { | |
1009 | __u32 type; /* enum v4l2_buf_type */ | 1172 | __u32 type; /* enum v4l2_buf_type */ | |
1010 | __u32 index; | 1173 | __u32 index; | |
1011 | __u32 plane; | 1174 | __u32 plane; | |
1012 | __u32 flags; | 1175 | __u32 flags; | |
@@ -1044,36 +1207,36 @@ struct v4l2_framebuffer { | @@ -1044,36 +1207,36 @@ struct v4l2_framebuffer { | |||
1044 | #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040 | 1207 | #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040 | |
1045 | #define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080 | 1208 | #define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080 | |
1046 | /* Flags for the 'flags' field. */ | 1209 | /* Flags for the 'flags' field. */ | |
1047 | #define V4L2_FBUF_FLAG_PRIMARY 0x0001 | 1210 | #define V4L2_FBUF_FLAG_PRIMARY 0x0001 | |
1048 | #define V4L2_FBUF_FLAG_OVERLAY 0x0002 | 1211 | #define V4L2_FBUF_FLAG_OVERLAY 0x0002 | |
1049 | #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004 | 1212 | #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004 | |
1050 | #define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008 | 1213 | #define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008 | |
1051 | #define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010 | 1214 | #define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010 | |
1052 | #define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020 | 1215 | #define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020 | |
1053 | #define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040 | 1216 | #define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040 | |
1054 | 1217 | |||
1055 | struct v4l2_clip { | 1218 | struct v4l2_clip { | |
1056 | struct v4l2_rect c; | 1219 | struct v4l2_rect c; | |
1057 | struct v4l2_clip *next; | 1220 | struct v4l2_clip __user *next; | |
1058 | }; | 1221 | }; | |
1059 | 1222 | |||
1060 | struct v4l2_window { | 1223 | struct v4l2_window { | |
1061 | struct v4l2_rect w; | 1224 | struct v4l2_rect w; | |
1062 | __u32 field; /* enum v4l2_field */ | 1225 | __u32 field; /* enum v4l2_field */ | |
1063 | __u32 chromakey; | 1226 | __u32 chromakey; | |
1064 | struct v4l2_clip *clips; | 1227 | struct v4l2_clip *clips; | |
1065 | __u32 clipcount; | 1228 | __u32 clipcount; | |
1066 | void *bitmap; | 1229 | void __user *bitmap; | |
1067 | __u8 global_alpha; | 1230 | __u8 global_alpha; | |
1068 | }; | 1231 | }; | |
1069 | 1232 | |||
1070 | /* | 1233 | /* | |
1071 | * C A P T U R E P A R A M E T E R S | 1234 | * C A P T U R E P A R A M E T E R S | |
1072 | */ | 1235 | */ | |
1073 | struct v4l2_captureparm { | 1236 | struct v4l2_captureparm { | |
1074 | __u32 capability; /* Supported modes */ | 1237 | __u32 capability; /* Supported modes */ | |
1075 | __u32 capturemode; /* Current mode */ | 1238 | __u32 capturemode; /* Current mode */ | |
1076 | struct v4l2_fract timeperframe; /* Time per frame in seconds */ | 1239 | struct v4l2_fract timeperframe; /* Time per frame in seconds */ | |
1077 | __u32 extendedmode; /* Driver-specific extensions */ | 1240 | __u32 extendedmode; /* Driver-specific extensions */ | |
1078 | __u32 readbuffers; /* # of buffers for read */ | 1241 | __u32 readbuffers; /* # of buffers for read */ | |
1079 | __u32 reserved[4]; | 1242 | __u32 reserved[4]; | |
@@ -1125,26 +1288,30 @@ struct v4l2_selection { | @@ -1125,26 +1288,30 @@ struct v4l2_selection { | |||
1125 | __u32 target; | 1288 | __u32 target; | |
1126 | __u32 flags; | 1289 | __u32 flags; | |
1127 | struct v4l2_rect r; | 1290 | struct v4l2_rect r; | |
1128 | __u32 reserved[9]; | 1291 | __u32 reserved[9]; | |
1129 | }; | 1292 | }; | |
1130 | 1293 | |||
1131 | 1294 | |||
1132 | /* | 1295 | /* | |
1133 | * A N A L O G V I D E O S T A N D A R D | 1296 | * A N A L O G V I D E O S T A N D A R D | |
1134 | */ | 1297 | */ | |
1135 | 1298 | |||
1136 | typedef __u64 v4l2_std_id; | 1299 | typedef __u64 v4l2_std_id; | |
1137 | 1300 | |||
1301 | /* | |||
1302 | * Attention: Keep the V4L2_STD_* bit definitions in sync with | |||
1303 | * include/dt-bindings/display/sdtv-standards.h SDTV_STD_* bit definitions. | |||
1304 | */ | |||
1138 | /* one bit for each */ | 1305 | /* one bit for each */ | |
1139 | #define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001) | 1306 | #define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001) | |
1140 | #define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002) | 1307 | #define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002) | |
1141 | #define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004) | 1308 | #define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004) | |
1142 | #define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008) | 1309 | #define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008) | |
1143 | #define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010) | 1310 | #define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010) | |
1144 | #define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020) | 1311 | #define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020) | |
1145 | #define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040) | 1312 | #define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040) | |
1146 | #define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080) | 1313 | #define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080) | |
1147 | 1314 | |||
1148 | #define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100) | 1315 | #define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100) | |
1149 | #define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200) | 1316 | #define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200) | |
1150 | #define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400) | 1317 | #define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400) | |
@@ -1399,26 +1566,33 @@ struct v4l2_bt_timings { | @@ -1399,26 +1566,33 @@ struct v4l2_bt_timings { | |||
1399 | */ | 1566 | */ | |
1400 | #define V4L2_DV_FL_HAS_PICTURE_ASPECT (1 << 6) | 1567 | #define V4L2_DV_FL_HAS_PICTURE_ASPECT (1 << 6) | |
1401 | /* | 1568 | /* | |
1402 | * If set, then the cea861_vic field is valid and contains the Video | 1569 | * If set, then the cea861_vic field is valid and contains the Video | |
1403 | * Identification Code as per the CEA-861 standard. | 1570 | * Identification Code as per the CEA-861 standard. | |
1404 | */ | 1571 | */ | |
1405 | #define V4L2_DV_FL_HAS_CEA861_VIC (1 << 7) | 1572 | #define V4L2_DV_FL_HAS_CEA861_VIC (1 << 7) | |
1406 | /* | 1573 | /* | |
1407 | * If set, then the hdmi_vic field is valid and contains the Video | 1574 | * If set, then the hdmi_vic field is valid and contains the Video | |
1408 | * Identification Code as per the HDMI standard (HDMI Vendor Specific | 1575 | * Identification Code as per the HDMI standard (HDMI Vendor Specific | |
1409 | * InfoFrame). | 1576 | * InfoFrame). | |
1410 | */ | 1577 | */ | |
1411 | #define V4L2_DV_FL_HAS_HDMI_VIC (1 << 8) | 1578 | #define V4L2_DV_FL_HAS_HDMI_VIC (1 << 8) | |
1579 | /* | |||
1580 | * CEA-861 specific: only valid for video receivers. | |||
1581 | * If set, then HW can detect the difference between regular FPS and | |||
1582 | * 1000/1001 FPS. Note: This flag is only valid for HDMI VIC codes with | |||
1583 | * the V4L2_DV_FL_CAN_REDUCE_FPS flag set. | |||
1584 | */ | |||
1585 | #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9) | |||
1412 | 1586 | |||
1413 | /* A few useful defines to calculate the total blanking and frame sizes */ | 1587 | /* A few useful defines to calculate the total blanking and frame sizes */ | |
1414 | #define V4L2_DV_BT_BLANKING_WIDTH(bt) \ | 1588 | #define V4L2_DV_BT_BLANKING_WIDTH(bt) \ | |
1415 | ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch) | 1589 | ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch) | |
1416 | #define V4L2_DV_BT_FRAME_WIDTH(bt) \ | 1590 | #define V4L2_DV_BT_FRAME_WIDTH(bt) \ | |
1417 | ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt)) | 1591 | ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt)) | |
1418 | #define V4L2_DV_BT_BLANKING_HEIGHT(bt) \ | 1592 | #define V4L2_DV_BT_BLANKING_HEIGHT(bt) \ | |
1419 | ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \ | 1593 | ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \ | |
1420 | (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) | 1594 | (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) | |
1421 | #define V4L2_DV_BT_FRAME_HEIGHT(bt) \ | 1595 | #define V4L2_DV_BT_FRAME_HEIGHT(bt) \ | |
1422 | ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt)) | 1596 | ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt)) | |
1423 | 1597 | |||
1424 | /** struct v4l2_dv_timings - DV timings | 1598 | /** struct v4l2_dv_timings - DV timings | |
@@ -1581,73 +1755,111 @@ struct v4l2_output { | @@ -1581,73 +1755,111 @@ struct v4l2_output { | |||
1581 | */ | 1755 | */ | |
1582 | struct v4l2_control { | 1756 | struct v4l2_control { | |
1583 | __u32 id; | 1757 | __u32 id; | |
1584 | __s32 value; | 1758 | __s32 value; | |
1585 | }; | 1759 | }; | |
1586 | 1760 | |||
1587 | struct v4l2_ext_control { | 1761 | struct v4l2_ext_control { | |
1588 | __u32 id; | 1762 | __u32 id; | |
1589 | __u32 size; | 1763 | __u32 size; | |
1590 | __u32 reserved2[1]; | 1764 | __u32 reserved2[1]; | |
1591 | union { | 1765 | union { | |
1592 | __s32 value; | 1766 | __s32 value; | |
1593 | __s64 value64; | 1767 | __s64 value64; | |
1594 | char *string; | 1768 | char __user *string; | |
1595 | __u8 *p_u8; | 1769 | __u8 __user *p_u8; | |
1596 | __u16 *p_u16; | 1770 | __u16 __user *p_u16; | |
1597 | __u32 *p_u32; | 1771 | __u32 __user *p_u32; | |
1598 | void *ptr; | 1772 | struct v4l2_area __user *p_area; | |
1773 | struct v4l2_ctrl_h264_sps __user *p_h264_sps; | |||
1774 | struct v4l2_ctrl_h264_pps *p_h264_pps; | |||
1775 | struct v4l2_ctrl_h264_scaling_matrix __user *p_h264_scaling_matrix; | |||
1776 | struct v4l2_ctrl_h264_pred_weights __user *p_h264_pred_weights; | |||
1777 | struct v4l2_ctrl_h264_slice_params __user *p_h264_slice_params; | |||
1778 | struct v4l2_ctrl_h264_decode_params __user *p_h264_decode_params; | |||
1779 | struct v4l2_ctrl_fwht_params __user *p_fwht_params; | |||
1780 | struct v4l2_ctrl_vp8_frame __user *p_vp8_frame; | |||
1781 | struct v4l2_ctrl_mpeg2_sequence __user *p_mpeg2_sequence; | |||
1782 | struct v4l2_ctrl_mpeg2_picture __user *p_mpeg2_picture; | |||
1783 | struct v4l2_ctrl_mpeg2_quantisation __user *p_mpeg2_quantisation; | |||
1784 | struct v4l2_ctrl_vp9_compressed_hdr __user *p_vp9_compressed_hdr_probs; | |||
1785 | struct v4l2_ctrl_vp9_frame __user *p_vp9_frame; | |||
1786 | void __user *ptr; | |||
1599 | }; | 1787 | }; | |
1600 | } __attribute__ ((packed)); | 1788 | } __attribute__ ((packed)); | |
1601 | 1789 | |||
1602 | struct v4l2_ext_controls { | 1790 | struct v4l2_ext_controls { | |
1603 | union { | 1791 | union { | |
1604 | #ifndef __KERNEL__ | 1792 | #ifndef __KERNEL__ | |
1605 | __u32 ctrl_class; | 1793 | __u32 ctrl_class; | |
1606 | #endif | 1794 | #endif | |
1607 | __u32 which; | 1795 | __u32 which; | |
1608 | }; | 1796 | }; | |
1609 | __u32 count; | 1797 | __u32 count; | |
1610 | __u32 error_idx; | 1798 | __u32 error_idx; | |
1611 | __u32 reserved[2]; | 1799 | __s32 request_fd; | |
1800 | __u32 reserved[1]; | |||
1612 | struct v4l2_ext_control *controls; | 1801 | struct v4l2_ext_control *controls; | |
1613 | }; | 1802 | }; | |
1614 | 1803 | |||
1615 | #define V4L2_CTRL_ID_MASK (0x0fffffff) | 1804 | #define V4L2_CTRL_ID_MASK (0x0fffffff) | |
1616 | #ifndef __KERNEL__ | 1805 | #ifndef __KERNEL__ | |
1617 | #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) | 1806 | #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) | |
1618 | #endif | 1807 | #endif | |
1619 | #define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL) | 1808 | #define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL) | |
1620 | #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) | 1809 | #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) | |
1621 | #define V4L2_CTRL_MAX_DIMS (4) | 1810 | #define V4L2_CTRL_MAX_DIMS (4) | |
1622 | #define V4L2_CTRL_WHICH_CUR_VAL 0 | 1811 | #define V4L2_CTRL_WHICH_CUR_VAL 0 | |
1623 | #define V4L2_CTRL_WHICH_DEF_VAL 0x0f000000 | 1812 | #define V4L2_CTRL_WHICH_DEF_VAL 0x0f000000 | |
1813 | #define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000 | |||
1624 | 1814 | |||
1625 | enum v4l2_ctrl_type { | 1815 | enum v4l2_ctrl_type { | |
1626 | V4L2_CTRL_TYPE_INTEGER = 1, | 1816 | V4L2_CTRL_TYPE_INTEGER = 1, | |
1627 | V4L2_CTRL_TYPE_BOOLEAN = 2, | 1817 | V4L2_CTRL_TYPE_BOOLEAN = 2, | |
1628 | V4L2_CTRL_TYPE_MENU = 3, | 1818 | V4L2_CTRL_TYPE_MENU = 3, | |
1629 | V4L2_CTRL_TYPE_BUTTON = 4, | 1819 | V4L2_CTRL_TYPE_BUTTON = 4, | |
1630 | V4L2_CTRL_TYPE_INTEGER64 = 5, | 1820 | V4L2_CTRL_TYPE_INTEGER64 = 5, | |
1631 | V4L2_CTRL_TYPE_CTRL_CLASS = 6, | 1821 | V4L2_CTRL_TYPE_CTRL_CLASS = 6, | |
1632 | V4L2_CTRL_TYPE_STRING = 7, | 1822 | V4L2_CTRL_TYPE_STRING = 7, | |
1633 | V4L2_CTRL_TYPE_BITMASK = 8, | 1823 | V4L2_CTRL_TYPE_BITMASK = 8, | |
1634 | V4L2_CTRL_TYPE_INTEGER_MENU = 9, | 1824 | V4L2_CTRL_TYPE_INTEGER_MENU = 9, | |
1635 | 1825 | |||
1636 | /* Compound types are >= 0x0100 */ | 1826 | /* Compound types are >= 0x0100 */ | |
1637 | V4L2_CTRL_COMPOUND_TYPES = 0x0100, | 1827 | V4L2_CTRL_COMPOUND_TYPES = 0x0100, | |
1638 | V4L2_CTRL_TYPE_U8 = 0x0100, | 1828 | V4L2_CTRL_TYPE_U8 = 0x0100, | |
1639 | V4L2_CTRL_TYPE_U16 = 0x0101, | 1829 | V4L2_CTRL_TYPE_U16 = 0x0101, | |
1640 | V4L2_CTRL_TYPE_U32 = 0x0102, | 1830 | V4L2_CTRL_TYPE_U32 = 0x0102, | |
1831 | V4L2_CTRL_TYPE_AREA = 0x0106, | |||
1832 | ||||
1833 | V4L2_CTRL_TYPE_HDR10_CLL_INFO = 0x0110, | |||
1834 | V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY = 0x0111, | |||
1835 | ||||
1836 | V4L2_CTRL_TYPE_H264_SPS = 0x0200, | |||
1837 | V4L2_CTRL_TYPE_H264_PPS = 0x0201, | |||
1838 | V4L2_CTRL_TYPE_H264_SCALING_MATRIX = 0x0202, | |||
1839 | V4L2_CTRL_TYPE_H264_SLICE_PARAMS = 0x0203, | |||
1840 | V4L2_CTRL_TYPE_H264_DECODE_PARAMS = 0x0204, | |||
1841 | V4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 0x0205, | |||
1842 | ||||
1843 | V4L2_CTRL_TYPE_FWHT_PARAMS = 0x0220, | |||
1844 | ||||
1845 | V4L2_CTRL_TYPE_VP8_FRAME = 0x0240, | |||
1846 | ||||
1847 | V4L2_CTRL_TYPE_MPEG2_QUANTISATION = 0x0250, | |||
1848 | V4L2_CTRL_TYPE_MPEG2_SEQUENCE = 0x0251, | |||
1849 | V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252, | |||
1850 | ||||
1851 | V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260, | |||
1852 | V4L2_CTRL_TYPE_VP9_FRAME = 0x0261, | |||
1641 | }; | 1853 | }; | |
1642 | 1854 | |||
1643 | /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ | 1855 | /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ | |
1644 | struct v4l2_queryctrl { | 1856 | struct v4l2_queryctrl { | |
1645 | __u32 id; | 1857 | __u32 id; | |
1646 | __u32 type; /* enum v4l2_ctrl_type */ | 1858 | __u32 type; /* enum v4l2_ctrl_type */ | |
1647 | __u8 name[32]; /* Whatever */ | 1859 | __u8 name[32]; /* Whatever */ | |
1648 | __s32 minimum; /* Note signedness */ | 1860 | __s32 minimum; /* Note signedness */ | |
1649 | __s32 maximum; | 1861 | __s32 maximum; | |
1650 | __s32 step; | 1862 | __s32 step; | |
1651 | __s32 default_value; | 1863 | __s32 default_value; | |
1652 | __u32 flags; | 1864 | __u32 flags; | |
1653 | __u32 reserved[2]; | 1865 | __u32 reserved[2]; | |
@@ -1883,26 +2095,27 @@ struct v4l2_encoder_cmd { | @@ -1883,26 +2095,27 @@ struct v4l2_encoder_cmd { | |||
1883 | __u32 flags; | 2095 | __u32 flags; | |
1884 | union { | 2096 | union { | |
1885 | struct { | 2097 | struct { | |
1886 | __u32 data[8]; | 2098 | __u32 data[8]; | |
1887 | } raw; | 2099 | } raw; | |
1888 | }; | 2100 | }; | |
1889 | }; | 2101 | }; | |
1890 | 2102 | |||
1891 | /* Decoder commands */ | 2103 | /* Decoder commands */ | |
1892 | #define V4L2_DEC_CMD_START (0) | 2104 | #define V4L2_DEC_CMD_START (0) | |
1893 | #define V4L2_DEC_CMD_STOP (1) | 2105 | #define V4L2_DEC_CMD_STOP (1) | |
1894 | #define V4L2_DEC_CMD_PAUSE (2) | 2106 | #define V4L2_DEC_CMD_PAUSE (2) | |
1895 | #define V4L2_DEC_CMD_RESUME (3) | 2107 | #define V4L2_DEC_CMD_RESUME (3) | |
2108 | #define V4L2_DEC_CMD_FLUSH (4) | |||
1896 | 2109 | |||
1897 | /* Flags for V4L2_DEC_CMD_START */ | 2110 | /* Flags for V4L2_DEC_CMD_START */ | |
1898 | #define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0) | 2111 | #define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0) | |
1899 | 2112 | |||
1900 | /* Flags for V4L2_DEC_CMD_PAUSE */ | 2113 | /* Flags for V4L2_DEC_CMD_PAUSE */ | |
1901 | #define V4L2_DEC_CMD_PAUSE_TO_BLACK (1 << 0) | 2114 | #define V4L2_DEC_CMD_PAUSE_TO_BLACK (1 << 0) | |
1902 | 2115 | |||
1903 | /* Flags for V4L2_DEC_CMD_STOP */ | 2116 | /* Flags for V4L2_DEC_CMD_STOP */ | |
1904 | #define V4L2_DEC_CMD_STOP_TO_BLACK (1 << 0) | 2117 | #define V4L2_DEC_CMD_STOP_TO_BLACK (1 << 0) | |
1905 | #define V4L2_DEC_CMD_STOP_IMMEDIATELY (1 << 1) | 2118 | #define V4L2_DEC_CMD_STOP_IMMEDIATELY (1 << 1) | |
1906 | 2119 | |||
1907 | /* Play format requirements (returned by the driver): */ | 2120 | /* Play format requirements (returned by the driver): */ | |
1908 | 2121 | |||
@@ -2064,96 +2277,102 @@ struct v4l2_mpeg_vbi_fmt_ivtv { | @@ -2064,96 +2277,102 @@ struct v4l2_mpeg_vbi_fmt_ivtv { | |||
2064 | }; | 2277 | }; | |
2065 | } __attribute__ ((packed)); | 2278 | } __attribute__ ((packed)); | |
2066 | 2279 | |||
2067 | /* | 2280 | /* | |
2068 | * A G G R E G A T E S T R U C T U R E S | 2281 | * A G G R E G A T E S T R U C T U R E S | |
2069 | */ | 2282 | */ | |
2070 | 2283 | |||
2071 | /** | 2284 | /** | |
2072 | * struct v4l2_plane_pix_format - additional, per-plane format definition | 2285 | * struct v4l2_plane_pix_format - additional, per-plane format definition | |
2073 | * @sizeimage: maximum size in bytes required for data, for which | 2286 | * @sizeimage: maximum size in bytes required for data, for which | |
2074 | * this plane will be used | 2287 | * this plane will be used | |
2075 | * @bytesperline: distance in bytes between the leftmost pixels in two | 2288 | * @bytesperline: distance in bytes between the leftmost pixels in two | |
2076 | * adjacent lines | 2289 | * adjacent lines | |
2290 | * @reserved: drivers and applications must zero this array | |||
2077 | */ | 2291 | */ | |
2078 | struct v4l2_plane_pix_format { | 2292 | struct v4l2_plane_pix_format { | |
2079 | __u32 sizeimage; | 2293 | __u32 sizeimage; | |
2080 | __u32 bytesperline; | 2294 | __u32 bytesperline; | |
2081 | __u16 reserved[6]; | 2295 | __u16 reserved[6]; | |
2082 | } __attribute__ ((packed)); | 2296 | } __attribute__ ((packed)); | |
2083 | 2297 | |||
2084 | /** | 2298 | /** | |
2085 | * struct v4l2_pix_format_mplane - multiplanar format definition | 2299 | * struct v4l2_pix_format_mplane - multiplanar format definition | |
2086 | * @width: image width in pixels | 2300 | * @width: image width in pixels | |
2087 | * @height: image height in pixels | 2301 | * @height: image height in pixels | |
2088 | * @pixelformat: little endian four character code (fourcc) | 2302 | * @pixelformat: little endian four character code (fourcc) | |
2089 | * @field: enum v4l2_field; field order (for interlaced video) | 2303 | * @field: enum v4l2_field; field order (for interlaced video) | |
2090 | * @colorspace: enum v4l2_colorspace; supplemental to pixelformat | 2304 | * @colorspace: enum v4l2_colorspace; supplemental to pixelformat | |
2091 | * @plane_fmt: per-plane information | 2305 | * @plane_fmt: per-plane information | |
2092 | * @num_planes: number of planes for this format | 2306 | * @num_planes: number of planes for this format | |
2093 | * @flags: format flags (V4L2_PIX_FMT_FLAG_*) | 2307 | * @flags: format flags (V4L2_PIX_FMT_FLAG_*) | |
2094 | * @ycbcr_enc: enum v4l2_ycbcr_encoding, Y'CbCr encoding | 2308 | * @ycbcr_enc: enum v4l2_ycbcr_encoding, Y'CbCr encoding | |
2309 | * @hsv_enc: enum v4l2_hsv_encoding, HSV encoding | |||
2095 | * @quantization: enum v4l2_quantization, colorspace quantization | 2310 | * @quantization: enum v4l2_quantization, colorspace quantization | |
2096 | * @xfer_func: enum v4l2_xfer_func, colorspace transfer function | 2311 | * @xfer_func: enum v4l2_xfer_func, colorspace transfer function | |
2312 | * @reserved: drivers and applications must zero this array | |||
2097 | */ | 2313 | */ | |
2098 | struct v4l2_pix_format_mplane { | 2314 | struct v4l2_pix_format_mplane { | |
2099 | __u32 width; | 2315 | __u32 width; | |
2100 | __u32 height; | 2316 | __u32 height; | |
2101 | __u32 pixelformat; | 2317 | __u32 pixelformat; | |
2102 | __u32 field; | 2318 | __u32 field; | |
2103 | __u32 colorspace; | 2319 | __u32 colorspace; | |
2104 | 2320 | |||
2105 | struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES]; | 2321 | struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES]; | |
2106 | __u8 num_planes; | 2322 | __u8 num_planes; | |
2107 | __u8 flags; | 2323 | __u8 flags; | |
2108 | union { | 2324 | union { | |
2109 | __u8 ycbcr_enc; | 2325 | __u8 ycbcr_enc; | |
2110 | __u8 hsv_enc; | 2326 | __u8 hsv_enc; | |
2111 | }; | 2327 | }; | |
2112 | __u8 quantization; | 2328 | __u8 quantization; | |
2113 | __u8 xfer_func; | 2329 | __u8 xfer_func; | |
2114 | __u8 reserved[7]; | 2330 | __u8 reserved[7]; | |
2115 | } __attribute__ ((packed)); | 2331 | } __attribute__ ((packed)); | |
2116 | 2332 | |||
2117 | /** | 2333 | /** | |
2118 | * struct v4l2_sdr_format - SDR format definition | 2334 | * struct v4l2_sdr_format - SDR format definition | |
2119 | * @pixelformat: little endian four character code (fourcc) | 2335 | * @pixelformat: little endian four character code (fourcc) | |
2120 | * @buffersize: maximum size in bytes required for data | 2336 | * @buffersize: maximum size in bytes required for data | |
2337 | * @reserved: drivers and applications must zero this array | |||
2121 | */ | 2338 | */ | |
2122 | struct v4l2_sdr_format { | 2339 | struct v4l2_sdr_format { | |
2123 | __u32 pixelformat; | 2340 | __u32 pixelformat; | |
2124 | __u32 buffersize; | 2341 | __u32 buffersize; | |
2125 | __u8 reserved[24]; | 2342 | __u8 reserved[24]; | |
2126 | } __attribute__ ((packed)); | 2343 | } __attribute__ ((packed)); | |
2127 | 2344 | |||
2128 | /** | 2345 | /** | |
2129 | * struct v4l2_meta_format - metadata format definition | 2346 | * struct v4l2_meta_format - metadata format definition | |
2130 | * @dataformat: little endian four character code (fourcc) | 2347 | * @dataformat: little endian four character code (fourcc) | |
2131 | * @buffersize: maximum size in bytes required for data | 2348 | * @buffersize: maximum size in bytes required for data | |
2132 | */ | 2349 | */ | |
2133 | struct v4l2_meta_format { | 2350 | struct v4l2_meta_format { | |
2134 | __u32 dataformat; | 2351 | __u32 dataformat; | |
2135 | __u32 buffersize; | 2352 | __u32 buffersize; | |
2136 | } __attribute__ ((packed)); | 2353 | } __attribute__ ((packed)); | |
2137 | 2354 | |||
2138 | /** | 2355 | /** | |
2139 | * struct v4l2_format - stream data format | 2356 | * struct v4l2_format - stream data format | |
2140 | * @type: enum v4l2_buf_type; type of the data stream | 2357 | * @type: enum v4l2_buf_type; type of the data stream | |
2141 | * @pix: definition of an image format | 2358 | * @pix: definition of an image format | |
2142 | * @pix_mp: definition of a multiplanar image format | 2359 | * @pix_mp: definition of a multiplanar image format | |
2143 | * @win: definition of an overlaid image | 2360 | * @win: definition of an overlaid image | |
2144 | * @vbi: raw VBI capture or output parameters | 2361 | * @vbi: raw VBI capture or output parameters | |
2145 | * @sliced: sliced VBI capture or output parameters | 2362 | * @sliced: sliced VBI capture or output parameters | |
2146 | * @raw_data: placeholder for future extensions and custom formats | 2363 | * @raw_data: placeholder for future extensions and custom formats | |
2364 | * @fmt: union of @pix, @pix_mp, @win, @vbi, @sliced, @sdr, @meta | |||
2365 | * and @raw_data | |||
2147 | */ | 2366 | */ | |
2148 | struct v4l2_format { | 2367 | struct v4l2_format { | |
2149 | __u32 type; | 2368 | __u32 type; | |
2150 | union { | 2369 | union { | |
2151 | struct v4l2_pix_format pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */ | 2370 | struct v4l2_pix_format pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */ | |
2152 | struct v4l2_pix_format_mplane pix_mp; /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */ | 2371 | struct v4l2_pix_format_mplane pix_mp; /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */ | |
2153 | struct v4l2_window win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */ | 2372 | struct v4l2_window win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */ | |
2154 | struct v4l2_vbi_format vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */ | 2373 | struct v4l2_vbi_format vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */ | |
2155 | struct v4l2_sliced_vbi_format sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ | 2374 | struct v4l2_sliced_vbi_format sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ | |
2156 | struct v4l2_sdr_format sdr; /* V4L2_BUF_TYPE_SDR_CAPTURE */ | 2375 | struct v4l2_sdr_format sdr; /* V4L2_BUF_TYPE_SDR_CAPTURE */ | |
2157 | struct v4l2_meta_format meta; /* V4L2_BUF_TYPE_META_CAPTURE */ | 2376 | struct v4l2_meta_format meta; /* V4L2_BUF_TYPE_META_CAPTURE */ | |
2158 | __u8 raw_data[200]; /* user-defined */ | 2377 | __u8 raw_data[200]; /* user-defined */ | |
2159 | } fmt; | 2378 | } fmt; | |
@@ -2235,27 +2454,31 @@ struct v4l2_event_motion_det { | @@ -2235,27 +2454,31 @@ struct v4l2_event_motion_det { | |||
2235 | 2454 | |||
2236 | struct v4l2_event { | 2455 | struct v4l2_event { | |
2237 | __u32 type; | 2456 | __u32 type; | |
2238 | union { | 2457 | union { | |
2239 | struct v4l2_event_vsync vsync; | 2458 | struct v4l2_event_vsync vsync; | |
2240 | struct v4l2_event_ctrl ctrl; | 2459 | struct v4l2_event_ctrl ctrl; | |
2241 | struct v4l2_event_frame_sync frame_sync; | 2460 | struct v4l2_event_frame_sync frame_sync; | |
2242 | struct v4l2_event_src_change src_change; | 2461 | struct v4l2_event_src_change src_change; | |
2243 | struct v4l2_event_motion_det motion_det; | 2462 | struct v4l2_event_motion_det motion_det; | |
2244 | __u8 data[64]; | 2463 | __u8 data[64]; | |
2245 | } u; | 2464 | } u; | |
2246 | __u32 pending; | 2465 | __u32 pending; | |
2247 | __u32 sequence; | 2466 | __u32 sequence; | |
2467 | #ifdef __KERNEL__ | |||
2468 | struct __kernel_timespec timestamp; | |||
2469 | #else | |||
2248 | struct timespec timestamp; | 2470 | struct timespec timestamp; | |
2471 | #endif | |||
2249 | __u32 id; | 2472 | __u32 id; | |
2250 | __u32 reserved[8]; | 2473 | __u32 reserved[8]; | |
2251 | }; | 2474 | }; | |
2252 | 2475 | |||
2253 | #define V4L2_EVENT_SUB_FL_SEND_INITIAL (1 << 0) | 2476 | #define V4L2_EVENT_SUB_FL_SEND_INITIAL (1 << 0) | |
2254 | #define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK (1 << 1) | 2477 | #define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK (1 << 1) | |
2255 | 2478 | |||
2256 | struct v4l2_event_subscription { | 2479 | struct v4l2_event_subscription { | |
2257 | __u32 type; | 2480 | __u32 type; | |
2258 | __u32 id; | 2481 | __u32 id; | |
2259 | __u32 flags; | 2482 | __u32 flags; | |
2260 | __u32 reserved[5]; | 2483 | __u32 reserved[5]; | |
2261 | }; | 2484 | }; | |
@@ -2301,42 +2524,47 @@ struct v4l2_dbg_chip_info { | @@ -2301,42 +2524,47 @@ struct v4l2_dbg_chip_info { | |||
2301 | struct v4l2_dbg_match match; | 2524 | struct v4l2_dbg_match match; | |
2302 | char name[32]; | 2525 | char name[32]; | |
2303 | __u32 flags; | 2526 | __u32 flags; | |
2304 | __u32 reserved[32]; | 2527 | __u32 reserved[32]; | |
2305 | } __attribute__ ((packed)); | 2528 | } __attribute__ ((packed)); | |
2306 | 2529 | |||
2307 | /** | 2530 | /** | |
2308 | * struct v4l2_create_buffers - VIDIOC_CREATE_BUFS argument | 2531 | * struct v4l2_create_buffers - VIDIOC_CREATE_BUFS argument | |
2309 | * @index: on return, index of the first created buffer | 2532 | * @index: on return, index of the first created buffer | |
2310 | * @count: entry: number of requested buffers, | 2533 | * @count: entry: number of requested buffers, | |
2311 | * return: number of created buffers | 2534 | * return: number of created buffers | |
2312 | * @memory: enum v4l2_memory; buffer memory type | 2535 | * @memory: enum v4l2_memory; buffer memory type | |
2313 | * @format: frame format, for which buffers are requested | 2536 | * @format: frame format, for which buffers are requested | |
2537 | * @capabilities: capabilities of this buffer type. | |||
2538 | * @flags: additional buffer management attributes (ignored unless the | |||
2539 | * queue has V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS capability | |||
2540 | * and configured for MMAP streaming I/O). | |||
2314 | * @reserved: future extensions | 2541 | * @reserved: future extensions | |
2315 | */ | 2542 | */ | |
2316 | struct v4l2_create_buffers { | 2543 | struct v4l2_create_buffers { | |
2317 | __u32 index; | 2544 | __u32 index; | |
2318 | __u32 count; | 2545 | __u32 count; | |
2319 | __u32 memory; | 2546 | __u32 memory; | |
2320 | struct v4l2_format format; | 2547 | struct v4l2_format format; | |
2321 | __u32 reserved[8]; | 2548 | __u32 capabilities; | |
2549 | __u32 flags; | |||
2550 | __u32 reserved[6]; | |||
2322 | }; | 2551 | }; | |
2323 | 2552 | |||
2324 | /* | 2553 | /* | |
2325 | * I O C T L C O D E S F O R V I D E O D E V I C E S | 2554 | * I O C T L C O D E S F O R V I D E O D E V I C E S | |
2326 | * | 2555 | * | |
2327 | */ | 2556 | */ | |
2328 | #define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability) | 2557 | #define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability) | |
2329 | #define VIDIOC_RESERVED _IO('V', 1) | |||
2330 | #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc) | 2558 | #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc) | |
2331 | #define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format) | 2559 | #define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format) | |
2332 | #define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format) | 2560 | #define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format) | |
2333 | #define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers) | 2561 | #define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers) | |
2334 | #define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer) | 2562 | #define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer) | |
2335 | #define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer) | 2563 | #define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer) | |
2336 | #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer) | 2564 | #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer) | |
2337 | #define VIDIOC_OVERLAY _IOW('V', 14, int) | 2565 | #define VIDIOC_OVERLAY _IOW('V', 14, int) | |
2338 | #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer) | 2566 | #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer) | |
2339 | #define VIDIOC_EXPBUF _IOWR('V', 16, struct v4l2_exportbuffer) | 2567 | #define VIDIOC_EXPBUF _IOWR('V', 16, struct v4l2_exportbuffer) | |
2340 | #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer) | 2568 | #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer) | |
2341 | #define VIDIOC_STREAMON _IOW('V', 18, int) | 2569 | #define VIDIOC_STREAMON _IOW('V', 18, int) | |
2342 | #define VIDIOC_STREAMOFF _IOW('V', 19, int) | 2570 | #define VIDIOC_STREAMOFF _IOW('V', 19, int) | |
@@ -2417,14 +2645,20 @@ struct v4l2_create_buffers { | @@ -2417,14 +2645,20 @@ struct v4l2_create_buffers { | |||
2417 | /* | 2645 | /* | |
2418 | * Experimental, meant for debugging, testing and internal use. | 2646 | * Experimental, meant for debugging, testing and internal use. | |
2419 | * Never use this in applications! | 2647 | * Never use this in applications! | |
2420 | */ | 2648 | */ | |
2421 | #define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info) | 2649 | #define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info) | |
2422 | 2650 | |||
2423 | #define VIDIOC_QUERY_EXT_CTRL _IOWR('V', 103, struct v4l2_query_ext_ctrl) | 2651 | #define VIDIOC_QUERY_EXT_CTRL _IOWR('V', 103, struct v4l2_query_ext_ctrl) | |
2424 | 2652 | |||
2425 | /* Reminder: when adding new ioctls please add support for them to | 2653 | /* Reminder: when adding new ioctls please add support for them to | |
2426 | drivers/media/v4l2-core/v4l2-compat-ioctl32.c as well! */ | 2654 | drivers/media/v4l2-core/v4l2-compat-ioctl32.c as well! */ | |
2427 | 2655 | |||
2428 | #define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */ | 2656 | #define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */ | |
2429 | 2657 | |||
2658 | /* Deprecated definitions kept for backwards compatibility */ | |||
2659 | #ifndef __KERNEL__ | |||
2660 | #define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16 | |||
2661 | #define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32 | |||
2662 | #endif | |||
2663 | ||||
2430 | #endif /* _UAPI__LINUX_VIDEODEV2_H */ | 2664 | #endif /* _UAPI__LINUX_VIDEODEV2_H */ |
@@ -1,13 +1,27 @@ | @@ -1,13 +1,27 @@ | |||
1 | $NetBSD: patch-lib_libv4l1_libv4l1.c,v 1.1 2020/09/02 09:54:33 ryoon Exp $ | 1 | $NetBSD: patch-lib_libv4l1_libv4l1.c,v 1.2 2022/05/17 11:55:23 jperkin Exp $ | |
2 | 2 | |||
3 | --- lib/libv4l1/libv4l1.c.orig 2017-01-22 17:33:34.000000000 +0000 | 3 | Support NetBSD and SunOS. | |
4 | ||||
5 | --- lib/libv4l1/libv4l1.c.orig 2020-05-02 12:16:20.000000000 +0000 | |||
4 | +++ lib/libv4l1/libv4l1.c | 6 | +++ lib/libv4l1/libv4l1.c | |
5 | @@ -58,7 +58,7 @@ | 7 | @@ -58,7 +58,7 @@ | |
6 | #include <sys/types.h> | 8 | #include <sys/types.h> | |
7 | #include <sys/mman.h> | 9 | #include <sys/mman.h> | |
8 | #include "../libv4lconvert/libv4lsyscall-priv.h" | 10 | #include "../libv4lconvert/libv4lsyscall-priv.h" | |
9 | -#if defined(__OpenBSD__) | 11 | -#if defined(__OpenBSD__) | |
10 | +#if defined(__OpenBSD__) || defined(__NetBSD__) | 12 | +#if defined(__OpenBSD__) || defined(__NetBSD__) | |
11 | #include <sys/videoio.h> | 13 | #include <sys/videoio.h> | |
12 | #else | 14 | #else | |
13 | #include <linux/videodev2.h> | 15 | #include <linux/videodev2.h> | |
16 | @@ -472,7 +472,11 @@ int v4l1_dup(int fd) | |||
17 | int index = v4l1_get_index(fd); | |||
18 | ||||
19 | if (index == -1) | |||
20 | +#ifdef __sun | |||
21 | + return syscall(SYS_fcntl, fd, F_DUPFD, 0); | |||
22 | +#else | |||
23 | return syscall(SYS_dup, fd); | |||
24 | +#endif | |||
25 | ||||
26 | devices[index].open_count++; | |||
27 |
@@ -1,26 +1,40 @@ | @@ -1,26 +1,40 @@ | |||
1 | $NetBSD: patch-lib_libv4l2_libv4l2.c,v 1.1 2020/09/02 09:54:33 ryoon Exp $ | 1 | $NetBSD: patch-lib_libv4l2_libv4l2.c,v 1.2 2022/05/17 11:55:23 jperkin Exp $ | |
2 | 2 | |||
3 | --- lib/libv4l2/libv4l2.c.orig 2017-12-27 13:50:55.000000000 +0000 | 3 | Support SunOS. | |
4 | ||||
5 | --- lib/libv4l2/libv4l2.c.orig 2020-05-02 12:16:20.000000000 +0000 | |||
4 | +++ lib/libv4l2/libv4l2.c | 6 | +++ lib/libv4l2/libv4l2.c | |
5 | @@ -1144,7 +1144,9 @@ int v4l2_ioctl(int fd, unsigned long int | 7 | @@ -880,7 +880,11 @@ int v4l2_dup(int fd) | |
8 | int index = v4l2_get_index(fd); | |||
9 | ||||
10 | if (index == -1) | |||
11 | +#ifdef __sun | |||
12 | + return syscall(SYS_fcntl, fd, F_DUPFD, 0); | |||
13 | +#else | |||
14 | return syscall(SYS_dup, fd); | |||
15 | +#endif | |||
16 | ||||
17 | devices[index].open_count++; | |||
18 | ||||
19 | @@ -1144,7 +1148,9 @@ int v4l2_ioctl(int fd, unsigned long int | |||
6 | break; | 20 | break; | |
7 | case VIDIOC_S_STD: | 21 | case VIDIOC_S_STD: | |
8 | case VIDIOC_S_INPUT: | 22 | case VIDIOC_S_INPUT: | |
9 | +#ifdef VIDIOC_S_DV_TIMINGS | 23 | +#ifdef VIDIOC_S_DV_TIMINGS | |
10 | case VIDIOC_S_DV_TIMINGS: | 24 | case VIDIOC_S_DV_TIMINGS: | |
11 | +#endif | 25 | +#endif | |
12 | is_capture_request = 1; | 26 | is_capture_request = 1; | |
13 | stream_needs_locking = 1; | 27 | stream_needs_locking = 1; | |
14 | break; | 28 | break; | |
15 | @@ -1255,7 +1257,10 @@ no_capture_request: | 29 | @@ -1255,7 +1261,10 @@ no_capture_request: | |
16 | 30 | |||
17 | case VIDIOC_S_STD: | 31 | case VIDIOC_S_STD: | |
18 | case VIDIOC_S_INPUT: | 32 | case VIDIOC_S_INPUT: | |
19 | - case VIDIOC_S_DV_TIMINGS: { | 33 | - case VIDIOC_S_DV_TIMINGS: { | |
20 | +#ifdef VIDIOC_S_DV_TIMINGS | 34 | +#ifdef VIDIOC_S_DV_TIMINGS | |
21 | + case VIDIOC_S_DV_TIMINGS: | 35 | + case VIDIOC_S_DV_TIMINGS: | |
22 | +#endif | 36 | +#endif | |
23 | + { | 37 | + { | |
24 | struct v4l2_format src_fmt = { 0 }; | 38 | struct v4l2_format src_fmt = { 0 }; | |
25 | unsigned int orig_dest_pixelformat = | 39 | unsigned int orig_dest_pixelformat = | |
26 | devices[index].dest_fmt.fmt.pix.pixelformat; | 40 | devices[index].dest_fmt.fmt.pix.pixelformat; |
@@ -1,13 +1,28 @@ | @@ -1,13 +1,28 @@ | |||
1 | $NetBSD: patch-lib_libv4l2rds_libv4l2rds.c,v 1.1 2020/09/02 09:54:33 ryoon Exp $ | 1 | $NetBSD: patch-lib_libv4l2rds_libv4l2rds.c,v 1.2 2022/05/17 11:55:23 jperkin Exp $ | |
2 | 2 | |||
3 | --- lib/libv4l2rds/libv4l2rds.c.orig 2017-01-22 17:33:34.000000000 +0000 | 3 | Support NetBSD and SunOS. | |
4 | ||||
5 | --- lib/libv4l2rds/libv4l2rds.c.orig 2020-05-14 09:23:59.000000000 +0000 | |||
4 | +++ lib/libv4l2rds/libv4l2rds.c | 6 | +++ lib/libv4l2rds/libv4l2rds.c | |
5 | @@ -27,7 +27,7 @@ | 7 | @@ -14,7 +14,7 @@ | |
6 | #include <sys/types.h> | 8 | #include <sys/types.h> | |
7 | #include <sys/mman.h> | 9 | #include <sys/mman.h> | |
8 | 10 | |||
9 | -#if defined(__OpenBSD__) | 11 | -#if defined(__OpenBSD__) | |
10 | +#if defined(__OpenBSD__) || defined(__NetBSD__) | 12 | +#if defined(__OpenBSD__) || defined(__NetBSD__) | |
11 | #include <sys/videoio.h> | 13 | #include <sys/videoio.h> | |
12 | #else | 14 | #else | |
13 | #include <linux/videodev2.h> | 15 | #include <linux/videodev2.h> | |
16 | @@ -1039,10 +1039,12 @@ static time_t rds_decode_mjd(const struc | |||
17 | new_time.tm_year = y; | |||
18 | /* offset (submitted by RDS) that was used to compute the local time, | |||
19 | * expressed in multiples of half hours, bit 5 indicates -/+ */ | |||
20 | +#if !defined(__sun) | |||
21 | if (priv_state->utc_offset & 0x20) | |||
22 | new_time.tm_gmtoff = -offset * 1800; | |||
23 | else | |||
24 | new_time.tm_gmtoff = offset * 1800; | |||
25 | +#endif | |||
26 | ||||
27 | /* convert tm struct to time_t value and return it */ | |||
28 | return mktime(&new_time); |
@@ -1,28 +1,51 @@ | @@ -1,28 +1,51 @@ | |||
1 | $NetBSD: patch-lib_libv4lconvert_libv4lsyscall-priv.h,v 1.1 2020/09/02 09:54:33 ryoon Exp $ | 1 | $NetBSD: patch-lib_libv4lconvert_libv4lsyscall-priv.h,v 1.2 2022/05/17 11:55:23 jperkin Exp $ | |
2 | ||||
3 | Support NetBSD and SunOS. | |||
2 | 4 | |||
3 | --- lib/libv4lconvert/libv4lsyscall-priv.h.orig 2017-01-22 17:33:34.000000000 +0000 | 5 | --- lib/libv4lconvert/libv4lsyscall-priv.h.orig 2017-01-22 17:33:34.000000000 +0000 | |
4 | +++ lib/libv4lconvert/libv4lsyscall-priv.h | 6 | +++ lib/libv4lconvert/libv4lsyscall-priv.h | |
5 | @@ -59,11 +59,10 @@ | 7 | @@ -59,11 +59,10 @@ | |
6 | #define _IOC_NR(cmd) ((cmd) & 0xFF) | 8 | #define _IOC_NR(cmd) ((cmd) & 0xFF) | |
7 | #define _IOC_TYPE(cmd) IOCGROUP(cmd) | 9 | #define _IOC_TYPE(cmd) IOCGROUP(cmd) | |
8 | #define _IOC_SIZE(cmd) IOCPARM_LEN(cmd) | 10 | #define _IOC_SIZE(cmd) IOCPARM_LEN(cmd) | |
9 | -#define MAP_ANONYMOUS MAP_ANON | 11 | -#define MAP_ANONYMOUS MAP_ANON | |
10 | #define MMAP2_PAGE_SHIFT 0 | 12 | #define MMAP2_PAGE_SHIFT 0 | |
11 | #endif | 13 | #endif | |
12 | 14 | |||
13 | -#if defined(__OpenBSD__) | 15 | -#if defined(__OpenBSD__) | |
14 | +#if defined(__OpenBSD__) || defined(__NetBSD__) | 16 | +#if defined(__OpenBSD__) || defined(__NetBSD__) | |
15 | #include <sys/syscall.h> | 17 | #include <sys/syscall.h> | |
16 | #include <sys/types.h> | 18 | #include <sys/types.h> | |
17 | #include <sys/ioctl.h> | 19 | #include <sys/ioctl.h> | |
18 | @@ -111,6 +110,10 @@ register_t __syscall(quad_t, ...); | 20 | @@ -72,6 +71,16 @@ | |
21 | #define MMAP2_PAGE_SHIFT 0 | |||
22 | #endif | |||
23 | ||||
24 | +#if defined(__sun) | |||
25 | +#include <sys/syscall.h> | |||
26 | +#include <sys/types.h> | |||
27 | +#include <sys/ioccom.h> | |||
28 | +#include <sys/ioctl.h> | |||
29 | +#define _IOC_NR(cmd) ((cmd) & 0x100) | |||
30 | +#define _IOC_TYPE(cmd) 'V' /* XXX: hack */ | |||
31 | +#define MMAP2_PAGE_SHIFT 0 | |||
32 | +#endif | |||
33 | + | |||
34 | #undef SYS_OPEN | |||
35 | #undef SYS_CLOSE | |||
36 | #undef SYS_IOCTL | |||
37 | @@ -111,6 +120,14 @@ register_t __syscall(quad_t, ...); | |||
19 | #define SYS_MMAP(addr, len, prot, flags, fd, offset) \ | 38 | #define SYS_MMAP(addr, len, prot, flags, fd, offset) \ | |
20 | __syscall((quad_t)SYS_mmap, (void *)(addr), (size_t)(len), \ | 39 | __syscall((quad_t)SYS_mmap, (void *)(addr), (size_t)(len), \ | |
21 | (int)(prot), (int)(flags), (int)(fd), 0, (off_t)(offset)) | 40 | (int)(prot), (int)(flags), (int)(fd), 0, (off_t)(offset)) | |
22 | +#elif defined(__NetBSD__) | 41 | +#elif defined(__NetBSD__) | |
23 | +#define SYS_MMAP(addr, len, prot, flags, fd, offset) \ | 42 | +#define SYS_MMAP(addr, len, prot, flags, fd, offset) \ | |
24 | + __syscall((quad_t)SYS_mmap, (void *)(addr), (size_t)(len), \ | 43 | + __syscall((quad_t)SYS_mmap, (void *)(addr), (size_t)(len), \ | |
25 | + (int)(prot), (int)(flags), (int)(fd), 0, (off_t)(offset)) | 44 | + (int)(prot), (int)(flags), (int)(fd), 0, (off_t)(offset)) | |
45 | +#elif defined(__sun) | |||
46 | +#define SYS_MMAP(addr, len, prot, flags, fd, offset) \ | |||
47 | + syscall(SYS_mmap, (void *)(addr), (size_t)(len), \ | |||
48 | + (int)(prot), (int)(flags), (int)(fd), 0, (off_t)(offset)) | |||
26 | #else | 49 | #else | |
27 | #define SYS_MMAP(addr, len, prot, flags, fd, off) \ | 50 | #define SYS_MMAP(addr, len, prot, flags, fd, off) \ | |
28 | syscall(SYS_mmap2, (void *)(addr), (size_t)(len), \ | 51 | syscall(SYS_mmap2, (void *)(addr), (size_t)(len), \ |