xref: /onnv-gate/usr/src/uts/common/sys/videodev2.h (revision 8382:1db2d1d73180)
13329Syz147069 /*
23329Syz147069  * CDDL HEADER START
33329Syz147069  *
43329Syz147069  * The contents of this file are subject to the terms of the
53329Syz147069  * Common Development and Distribution License (the "License").
63329Syz147069  * You may not use this file except in compliance with the License.
73329Syz147069  *
83329Syz147069  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
93329Syz147069  * or http://www.opensolaris.org/os/licensing.
103329Syz147069  * See the License for the specific language governing permissions
113329Syz147069  * and limitations under the License.
123329Syz147069  *
133329Syz147069  * When distributing Covered Code, include this CDDL HEADER in each
143329Syz147069  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
153329Syz147069  * If applicable, add the following below this CDDL HEADER, with the
163329Syz147069  * fields enclosed by brackets "[]" replaced with your own identifying
173329Syz147069  * information: Portions Copyright [yyyy] [name of copyright owner]
183329Syz147069  *
193329Syz147069  * CDDL HEADER END
203329Syz147069  */
213329Syz147069 /*
22*8382SRaymond.Chen@Sun.COM  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
233329Syz147069  * Use is subject to license terms.
243329Syz147069  */
253329Syz147069 
263329Syz147069 #ifndef __LINUX_VIDEODEV2_H
273329Syz147069 #define	__LINUX_VIDEODEV2_H
283329Syz147069 
293329Syz147069 
303329Syz147069 #ifdef	__cplusplus
313329Syz147069 extern "C" {
323329Syz147069 #endif
333329Syz147069 
343329Syz147069 /*
353329Syz147069  *	Video for Linux Two
363329Syz147069  *
373329Syz147069  *	Header file for v4l or V4L2 drivers and applications
383329Syz147069  * with public API.
393329Syz147069  * All kernel-specific stuff were moved to media/v4l2-dev.h, so
403329Syz147069  * no #if __KERNEL tests are allowed here
413329Syz147069  *
423329Syz147069  *	See http://linuxtv.org for more info
433329Syz147069  *
443329Syz147069  *	Author: Bill Dirks <bdirks@pacbell.net>
453329Syz147069  *		Justin Schoeman
463329Syz147069  *		et al.
473329Syz147069  */
483329Syz147069 
495305Syz147069 #include <sys/ioccom.h>
505305Syz147069 
513329Syz147069 /*
523329Syz147069  * Common stuff for both V4L1 and V4L2
533329Syz147069  * Moved from videodev.h
543329Syz147069  */
553329Syz147069 #define	VIDEO_MAX_FRAME		32
563329Syz147069 
573329Syz147069 #define	VID_TYPE_CAPTURE	1	/* Can capture */
583329Syz147069 #define	VID_TYPE_TUNER		2	/* Can tune */
593329Syz147069 #define	VID_TYPE_TELETEXT	4	/* Does teletext */
603329Syz147069 #define	VID_TYPE_OVERLAY	8	/* Overlay onto frame buffer */
613329Syz147069 #define	VID_TYPE_CHROMAKEY	16	/* Overlay by chromakey */
623329Syz147069 #define	VID_TYPE_CLIPPING	32	/* Can clip */
633329Syz147069 #define	VID_TYPE_FRAMERAM	64	/* Uses the frame buffer memory */
643329Syz147069 #define	VID_TYPE_SCALES		128	/* Scalable */
653329Syz147069 #define	VID_TYPE_MONOCHROME	256	/* Monochrome only */
663329Syz147069 #define	VID_TYPE_SUBCAPTURE	512	/* Can capture subareas of the image */
673329Syz147069 #define	VID_TYPE_MPEG_DECODER	1024	/* Can decode MPEG streams */
683329Syz147069 #define	VID_TYPE_MPEG_ENCODER	2048	/* Can encode MPEG streams */
693329Syz147069 #define	VID_TYPE_MJPEG_DECODER	4096	/* Can decode MJPEG streams */
703329Syz147069 #define	VID_TYPE_MJPEG_ENCODER	8192	/* Can encode MJPEG streams */
713329Syz147069 
723329Syz147069 /*
733329Syz147069  *	M I S C E L L A N E O U S
743329Syz147069  */
753329Syz147069 
763329Syz147069 /*  Four-character-code (FOURCC) */
773329Syz147069 #define	v4l2_fourcc(a, b, c, d) \
783329Syz147069 	(((uint32_t)(a)<<0) | ((uint32_t)(b)<<8) | \
793329Syz147069 	((uint32_t)(c)<<16)|((uint32_t)(d)<<24))
803329Syz147069 
813329Syz147069 /*
823329Syz147069  *	E N U M S
833329Syz147069  */
843329Syz147069 enum v4l2_field {
853329Syz147069 
863329Syz147069 	/*
873329Syz147069 	 * driver can choose from none, top, bottom, interlaced
883329Syz147069 	 * depending on whatever it thinks is approximate ...
893329Syz147069 	 */
903329Syz147069 	V4L2_FIELD_ANY		= 0,
913329Syz147069 	V4L2_FIELD_NONE		= 1, /* this device has no fields ... */
923329Syz147069 	V4L2_FIELD_TOP		= 2, /* top field only */
933329Syz147069 	V4L2_FIELD_BOTTOM	= 3, /* bottom field only */
943329Syz147069 	V4L2_FIELD_INTERLACED	= 4, /* both fields interlaced */
953329Syz147069 
963329Syz147069 	/* both fields sequential into one buffer, top-bottom order */
973329Syz147069 	V4L2_FIELD_SEQ_TB	= 5,
983329Syz147069 
993329Syz147069 	V4L2_FIELD_SEQ_BT	= 6, /* same as above + bottom-top order */
1003329Syz147069 
1013329Syz147069 	/* both fields alternating into	separate buffers */
1023329Syz147069 	V4L2_FIELD_ALTERNATE	= 7
1033329Syz147069 };
1043329Syz147069 #define	V4L2_FIELD_HAS_TOP(field)	 \
1053329Syz147069 	((field) == V4L2_FIELD_TOP	|| \
1063329Syz147069 	(field) == V4L2_FIELD_INTERLACED || \
1073329Syz147069 	(field) == V4L2_FIELD_SEQ_TB	|| \
1083329Syz147069 	(field) == V4L2_FIELD_SEQ_BT)
1093329Syz147069 #define	V4L2_FIELD_HAS_BOTTOM(field)	 \
1103329Syz147069 	((field) == V4L2_FIELD_BOTTOM	|| \
1113329Syz147069 	(field) == V4L2_FIELD_INTERLACED || \
1123329Syz147069 	(field) == V4L2_FIELD_SEQ_TB	|| \
1133329Syz147069 	(field) == V4L2_FIELD_SEQ_BT)
1143329Syz147069 #define	V4L2_FIELD_HAS_BOTH(field)	 \
1153329Syz147069 	((field) == V4L2_FIELD_INTERLACED || \
1163329Syz147069 	(field) == V4L2_FIELD_SEQ_TB	|| \
1173329Syz147069 	(field) == V4L2_FIELD_SEQ_BT)
1183329Syz147069 
1193329Syz147069 enum v4l2_buf_type {
1203329Syz147069 	V4L2_BUF_TYPE_VIDEO_CAPTURE	 = 1,
1213329Syz147069 	V4L2_BUF_TYPE_VIDEO_OUTPUT	 = 2,
1223329Syz147069 	V4L2_BUF_TYPE_VIDEO_OVERLAY	 = 3,
1233329Syz147069 	V4L2_BUF_TYPE_VBI_CAPTURE	 = 4,
1243329Syz147069 	V4L2_BUF_TYPE_VBI_OUTPUT	 = 5,
1253329Syz147069 #if 1
1263329Syz147069 	/* Experimental Sliced VBI */
1273329Syz147069 	V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
1283329Syz147069 	V4L2_BUF_TYPE_SLICED_VBI_OUTPUT  = 7,
1293329Syz147069 #endif
1303329Syz147069 	V4L2_BUF_TYPE_PRIVATE		 = 0x80
1313329Syz147069 };
1323329Syz147069 
1333329Syz147069 enum v4l2_ctrl_type {
1343329Syz147069 	V4L2_CTRL_TYPE_INTEGER		= 1,
1353329Syz147069 	V4L2_CTRL_TYPE_BOOLEAN		= 2,
1363329Syz147069 	V4L2_CTRL_TYPE_MENU		= 3,
1373329Syz147069 	V4L2_CTRL_TYPE_BUTTON		= 4,
1383329Syz147069 	V4L2_CTRL_TYPE_INTEGER64	= 5,
1393329Syz147069 	V4L2_CTRL_TYPE_CTRL_CLASS	= 6
1403329Syz147069 };
1413329Syz147069 
1423329Syz147069 enum v4l2_tuner_type {
1433329Syz147069 	V4L2_TUNER_RADIO	= 1,
1443329Syz147069 	V4L2_TUNER_ANALOG_TV	= 2,
1453329Syz147069 	V4L2_TUNER_DIGITAL_TV	= 3
1463329Syz147069 };
1473329Syz147069 
1483329Syz147069 enum v4l2_memory {
1493329Syz147069 	V4L2_MEMORY_MMAP	= 1,
1503329Syz147069 	V4L2_MEMORY_USERPTR	= 2,
1513329Syz147069 	V4L2_MEMORY_OVERLAY	= 3
1523329Syz147069 };
1533329Syz147069 
1543329Syz147069 /* see also http: vektor.theorem.ca/graphics/ycbcr/ */
1553329Syz147069 enum v4l2_colorspace {
1563329Syz147069 	/* ITU-R 601 -- broadcast NTSC/PAL */
1573329Syz147069 	V4L2_COLORSPACE_SMPTE170M	= 1,
1583329Syz147069 
1593329Syz147069 	/* 1125-Line (US) HDTV */
1603329Syz147069 	V4L2_COLORSPACE_SMPTE240M	= 2,
1613329Syz147069 
1623329Syz147069 	/* HD and modern captures. */
1633329Syz147069 	V4L2_COLORSPACE_REC709		= 3,
1643329Syz147069 
1653329Syz147069 	/* broken BT878 extents (601, luma range 16-253 instead of 16-235) */
1663329Syz147069 	V4L2_COLORSPACE_BT878		= 4,
1673329Syz147069 
1683329Syz147069 	/* These should be useful.  Assume 601 extents. */
1693329Syz147069 	V4L2_COLORSPACE_470_SYSTEM_M  = 5,
1703329Syz147069 	V4L2_COLORSPACE_470_SYSTEM_BG = 6,
1713329Syz147069 
1723329Syz147069 	/*
1733329Syz147069 	 * I know there will be cameras that send this.  So, this is
1743329Syz147069 	 * unspecified chromaticities and full 0-255 on each of the
1753329Syz147069 	 * Y'CbCr components
1763329Syz147069 	 */
1773329Syz147069 	V4L2_COLORSPACE_JPEG		= 7,
1783329Syz147069 
1793329Syz147069 	/* For RGB colourspaces, this is probably a good start. */
1803329Syz147069 	V4L2_COLORSPACE_SRGB		= 8
1813329Syz147069 };
1823329Syz147069 
1833329Syz147069 enum v4l2_priority {
1843329Syz147069 	V4L2_PRIORITY_UNSET	  = 0,	/* not initialized */
1853329Syz147069 	V4L2_PRIORITY_BACKGROUND  = 1,
1863329Syz147069 	V4L2_PRIORITY_INTERACTIVE = 2,
1873329Syz147069 	V4L2_PRIORITY_RECORD	  = 3,
1883329Syz147069 	V4L2_PRIORITY_DEFAULT	  = V4L2_PRIORITY_INTERACTIVE
1893329Syz147069 };
1903329Syz147069 
1913329Syz147069 struct v4l2_rect {
1923329Syz147069 	int32_t   left;
1933329Syz147069 	int32_t   top;
1943329Syz147069 	int32_t   width;
1953329Syz147069 	int32_t   height;
1963329Syz147069 };
1973329Syz147069 
1983329Syz147069 struct v4l2_fract {
1993329Syz147069 	uint32_t   numerator;
2003329Syz147069 	uint32_t   denominator;
2013329Syz147069 };
2023329Syz147069 
2033329Syz147069 /*
2043329Syz147069  *	D R I V E R   C A P A B I L I T I E S
2053329Syz147069  */
2063329Syz147069 struct v4l2_capability
2073329Syz147069 {
2083329Syz147069 	uint8_t		driver[16];	/* i.e. "bttv" */
2093329Syz147069 	uint8_t		card[32];	/* i.e. "Hauppauge WinTV" */
2103329Syz147069 	uint8_t		bus_info[32];	/* "PCI:" + pci_name(pci_dev) */
2113329Syz147069 	uint32_t	version;	/* should use KERNEL_VERSION() */
2123329Syz147069 	uint32_t	capabilities;	/* Device capabilities */
2133329Syz147069 	uint32_t	reserved[4];
2143329Syz147069 };
2153329Syz147069 
2163329Syz147069 /* Values for 'capabilities' field */
2173329Syz147069 
2183329Syz147069 /* Is a video capture device */
2193329Syz147069 #define	V4L2_CAP_VIDEO_CAPTURE		0x00000001
2203329Syz147069 
2213329Syz147069 /* Is a video output device */
2223329Syz147069 #define	V4L2_CAP_VIDEO_OUTPUT		0x00000002
2233329Syz147069 #define	V4L2_CAP_VIDEO_OVERLAY		0x00000004  /* Can do video overlay */
2243329Syz147069 
2253329Syz147069 /* Is a raw VBI capture device */
2263329Syz147069 #define	V4L2_CAP_VBI_CAPTURE		0x00000010
2273329Syz147069 
2283329Syz147069 /* Is a raw VBI output device */
2293329Syz147069 #define	V4L2_CAP_VBI_OUTPUT		0x00000020
2303329Syz147069 #if 1
2313329Syz147069 
2323329Syz147069 /* Is a sliced VBI capture device */
2333329Syz147069 #define	V4L2_CAP_SLICED_VBI_CAPTURE	0x00000040
2343329Syz147069 
2353329Syz147069 /* Is a sliced VBI output device */
2363329Syz147069 #define	V4L2_CAP_SLICED_VBI_OUTPUT	0x00000080
2373329Syz147069 #endif
2383329Syz147069 #define	V4L2_CAP_RDS_CAPTURE		0x00000100  /* RDS data capture */
2393329Syz147069 
2403329Syz147069 #define	V4L2_CAP_TUNER			0x00010000  /* has a tuner */
2413329Syz147069 #define	V4L2_CAP_AUDIO			0x00020000  /* has audio support */
2423329Syz147069 #define	V4L2_CAP_RADIO			0x00040000  /* is a radio device */
2433329Syz147069 
2443329Syz147069 #define	V4L2_CAP_READWRITE		0x01000000  /* read/write systemcalls */
2453329Syz147069 #define	V4L2_CAP_ASYNCIO		0x02000000  /* async I/O */
2463329Syz147069 #define	V4L2_CAP_STREAMING		0x04000000  /* streaming I/O ioctls */
2473329Syz147069 
2483329Syz147069 /*
2493329Syz147069  *	V I D E O   I M A G E	F O R M A T
2503329Syz147069  */
2513329Syz147069 struct v4l2_pix_format
2523329Syz147069 {
2533329Syz147069 	uint32_t		width;
2543329Syz147069 	uint32_t		height;
2553329Syz147069 	uint32_t		pixelformat;
2563329Syz147069 	enum			v4l2_field	field;
2573329Syz147069 	uint32_t		bytesperline; /* for padding, zero if unused */
2583329Syz147069 	uint32_t		sizeimage;
2593329Syz147069 	enum v4l2_colorspace	colorspace;
2603329Syz147069 	uint32_t		priv; /* private data, depends on pixelformat */
2613329Syz147069 };
2623329Syz147069 
2633329Syz147069 /*	Pixel format		FOURCC			depth Description */
2643329Syz147069 #define	V4L2_PIX_FMT_RGB332  v4l2_fourcc('R', 'G', 'B', '1') /*  8 RGB-3-3-2 */
2653329Syz147069 #define	V4L2_PIX_FMT_RGB555  v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
2663329Syz147069 #define	V4L2_PIX_FMT_RGB565  v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */
2673329Syz147069 
2683329Syz147069 /* 16 RGB-5-5-5 BE */
2693329Syz147069 #define	V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q')
2703329Syz147069 
2713329Syz147069 /* 16 RGB-5-6-5 BE */
2723329Syz147069 #define	V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R')
2733329Syz147069 
2743329Syz147069 #define	V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */
2753329Syz147069 #define	V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
2763329Syz147069 #define	V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */
2773329Syz147069 #define	V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */
2783329Syz147069 #define	V4L2_PIX_FMT_GREY  v4l2_fourcc('G', 'R', 'E', 'Y') /*  8 Greyscale */
2793329Syz147069 #define	V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /*	9 YVU 4:1:0 */
2803329Syz147069 #define	V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */
2813329Syz147069 #define	V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */
2823329Syz147069 #define	V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */
2833329Syz147069 
2843329Syz147069 /* 16 YVU422 planar */
2853329Syz147069 #define	V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P')
2863329Syz147069 
2873329Syz147069 /* 16 YVU411 planar */
2883329Syz147069 #define	V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P')
2893329Syz147069 
2903329Syz147069 #define	V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P') /* 12 YUV 4:1:1 */
2913329Syz147069 
2923329Syz147069 /* two planes -- one Y, one Cr + Cb interleaved  */
2933329Syz147069 #define	V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */
2943329Syz147069 #define	V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */
2953329Syz147069 
2963329Syz147069 /* The following formats are not defined in the V4L2 specification */
2973329Syz147069 #define	V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
2983329Syz147069 #define	V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12  YUV 4:2:0 */
2993329Syz147069 #define	V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16  YUV 4:2:2 */
3003329Syz147069 #define	V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit colo */
3013329Syz147069 
3023329Syz147069 /* 8  YUV 4:1:1 16x16 macroblocks */
3033329Syz147069 #define	V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2')
3043329Syz147069 
3053329Syz147069 /* see www.siliconimaging.com/RGB%20Bayer.htm */
3063329Syz147069 
3073329Syz147069 /* 8 BGBG.. GRGR.. */
3083329Syz147069 #define	V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B', 'A', '8', '1')
3093329Syz147069 
3103329Syz147069 /* compressed formats */
3113329Syz147069 
3123329Syz147069 /* Motion-JPEG */
3133329Syz147069 #define	V4L2_PIX_FMT_MJPEG	v4l2_fourcc('M', 'J', 'P', 'G')
3143329Syz147069 #define	V4L2_PIX_FMT_JPEG	v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG */
3153329Syz147069 #define	V4L2_PIX_FMT_DV		v4l2_fourcc('d', 'v', 's', 'd') /* 1394 */
3163329Syz147069 #define	V4L2_PIX_FMT_MPEG	v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 */
3173329Syz147069 
3183329Syz147069 /*  Vendor-specific formats   */
3193329Syz147069 
3203329Syz147069 /* Winnov hw compress */
3213329Syz147069 #define	V4L2_PIX_FMT_WNVA	v4l2_fourcc('W', 'N', 'V', 'A')
3223329Syz147069 
3233329Syz147069 /* SN9C10x compression */
3243329Syz147069 #define	V4L2_PIX_FMT_SN9C10X	v4l2_fourcc('S', '9', '1', '0')
3253329Syz147069 
3263329Syz147069 /* pwc older webcam */
3273329Syz147069 #define	V4L2_PIX_FMT_PWC1	v4l2_fourcc('P', 'W', 'C', '1')
3283329Syz147069 
3293329Syz147069 /* pwc newer webcam */
3303329Syz147069 #define	V4L2_PIX_FMT_PWC2	v4l2_fourcc('P', 'W', 'C', '2')
3313329Syz147069 
3323329Syz147069 /* ET61X251 compression */
3333329Syz147069 #define	V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5')
3343329Syz147069 
3353329Syz147069 /*
3363329Syz147069  *	F O R M A T   E N U M E R A T I O N
3373329Syz147069  */
3383329Syz147069 struct v4l2_fmtdesc
3393329Syz147069 {
3403329Syz147069 	uint32_t		index;			/* Format number */
3413329Syz147069 	enum			v4l2_buf_type  type;	/* buffer type */
3423329Syz147069 	uint32_t		flags;
3433329Syz147069 	char			description[32];   /* Description string */
3443329Syz147069 	uint32_t		pixelformat;	   /* Format fourcc	 */
3453329Syz147069 	uint32_t		reserved[4];
3463329Syz147069 };
3473329Syz147069 
3483329Syz147069 #define	V4L2_FMT_FLAG_COMPRESSED 0x0001
3493329Syz147069 
3503329Syz147069 /*
3513329Syz147069  *	T I M E C O D E
3523329Syz147069  */
3533329Syz147069 struct v4l2_timecode
3543329Syz147069 {
3553329Syz147069 	uint32_t	type;
3563329Syz147069 	uint32_t	flags;
3573329Syz147069 	uint8_t	frames;
3583329Syz147069 	uint8_t	seconds;
3593329Syz147069 	uint8_t	minutes;
3603329Syz147069 	uint8_t	hours;
3613329Syz147069 	uint8_t	userbits[4];
3623329Syz147069 };
3633329Syz147069 
3643329Syz147069 /*  Type  */
3653329Syz147069 #define	V4L2_TC_TYPE_24FPS		1
3663329Syz147069 #define	V4L2_TC_TYPE_25FPS		2
3673329Syz147069 #define	V4L2_TC_TYPE_30FPS		3
3683329Syz147069 #define	V4L2_TC_TYPE_50FPS		4
3693329Syz147069 #define	V4L2_TC_TYPE_60FPS		5
3703329Syz147069 
3713329Syz147069 /*  Flags  */
3723329Syz147069 #define	V4L2_TC_FLAG_DROPFRAME		0x0001 /* "drop-frame" mode */
3733329Syz147069 #define	V4L2_TC_FLAG_COLORFRAME		0x0002
3743329Syz147069 #define	V4L2_TC_USERBITS_field		0x000C
3753329Syz147069 #define	V4L2_TC_USERBITS_USERDEFINED	0x0000
3763329Syz147069 #define	V4L2_TC_USERBITS_8BITCHARS	0x0008
3773329Syz147069 /* The above is based on SMPTE timecodes */
3783329Syz147069 
3793329Syz147069 #ifdef __KERNEL__
3803329Syz147069 /*
3813329Syz147069  *	M P E G   C O M P R E S S I O N   P A R A M E T E R S
3823329Syz147069  *
3833329Syz147069  *  ### WARNING: This experimental MPEG compression API is obsolete.
3843329Syz147069  *  ###		It is replaced by the MPEG controls API.
3853329Syz147069  *  ###		This old API will disappear in the near future!
3863329Syz147069  *
3873329Syz147069  */
3883329Syz147069 enum v4l2_bitrate_mode {
3893329Syz147069 	V4L2_BITRATE_NONE = 0,	/* not specified */
3903329Syz147069 	V4L2_BITRATE_CBR,	/* constant bitrate */
3913329Syz147069 	V4L2_BITRATE_VBR	/* variable bitrate */
3923329Syz147069 };
3933329Syz147069 struct v4l2_bitrate {
3943329Syz147069 	/* rates are specified in kbit/sec */
3953329Syz147069 	enum v4l2_bitrate_mode	mode;
3963329Syz147069 	uint32_t			min;
3973329Syz147069 	uint32_t			target;  /* use this one for CBR */
3983329Syz147069 	uint32_t			max;
3993329Syz147069 };
4003329Syz147069 
4013329Syz147069 enum v4l2_mpeg_streamtype {
4023329Syz147069 	V4L2_MPEG_SS_1,		/* MPEG-1 system stream */
4033329Syz147069 	V4L2_MPEG_PS_2,		/* MPEG-2 program stream */
4043329Syz147069 	V4L2_MPEG_TS_2,		/* MPEG-2 transport stream */
4053329Syz147069 
4063329Syz147069 	/* MPEG-2 program stream with DVD header fixups */
4073329Syz147069 	V4L2_MPEG_PS_DVD
4083329Syz147069 };
4093329Syz147069 enum v4l2_mpeg_audiotype {
4103329Syz147069 	V4L2_MPEG_AU_2_I,	/* MPEG-2 layer 1 */
4113329Syz147069 	V4L2_MPEG_AU_2_II,	/* MPEG-2 layer 2 */
4123329Syz147069 	V4L2_MPEG_AU_2_III,	/* MPEG-2 layer 3 */
4133329Syz147069 	V4L2_MPEG_AC3,		/* AC3 */
4143329Syz147069 	V4L2_MPEG_LPCM		/* LPCM */
4153329Syz147069 };
4163329Syz147069 enum v4l2_mpeg_videotype {
4173329Syz147069 	V4L2_MPEG_VI_1,		/* MPEG-1 */
4183329Syz147069 	V4L2_MPEG_VI_2		/* MPEG-2 */
4193329Syz147069 };
4203329Syz147069 enum v4l2_mpeg_aspectratio {
4213329Syz147069 	V4L2_MPEG_ASPECT_SQUARE	= 1,	/* square pixel */
4223329Syz147069 	V4L2_MPEG_ASPECT_4_3	= 2,	/* 4 : 3 */
4233329Syz147069 	V4L2_MPEG_ASPECT_16_9	= 3,	/* 16 : 9 */
4243329Syz147069 	V4L2_MPEG_ASPECT_1_221	= 4	/* 1 : 2,21 */
4253329Syz147069 };
4263329Syz147069 
4273329Syz147069 struct v4l2_mpeg_compression {
4283329Syz147069 	/* general */
4293329Syz147069 	enum v4l2_mpeg_streamtype	st_type;
4303329Syz147069 	struct v4l2_bitrate		st_bitrate;
4313329Syz147069 
4323329Syz147069 	/* transport streams */
4333329Syz147069 	uint16_t				ts_pid_pmt;
4343329Syz147069 	uint16_t				ts_pid_audio;
4353329Syz147069 	uint16_t				ts_pid_video;
4363329Syz147069 	uint16_t				ts_pid_pcr;
4373329Syz147069 
4383329Syz147069 	/* program stream */
4393329Syz147069 	uint16_t				ps_size;
4403329Syz147069 	uint16_t				reserved_1;    /* align */
4413329Syz147069 
4423329Syz147069 	/* audio */
4433329Syz147069 	enum v4l2_mpeg_audiotype	au_type;
4443329Syz147069 	struct v4l2_bitrate		au_bitrate;
4453329Syz147069 	uint32_t			au_sample_rate;
4463329Syz147069 	uint8_t 			au_pesid;
4473329Syz147069 	uint8_t 			reserved_2[3]; /* align */
4483329Syz147069 
4493329Syz147069 	/* video */
4503329Syz147069 	enum v4l2_mpeg_videotype	vi_type;
4513329Syz147069 	enum v4l2_mpeg_aspectratio	vi_aspect_ratio;
4523329Syz147069 	struct v4l2_bitrate		vi_bitrate;
4533329Syz147069 	uint32_t			vi_frame_rate;
4543329Syz147069 	uint16_t			vi_frames_per_gop;
4553329Syz147069 	uint16_t			vi_bframes_count;
4563329Syz147069 	uint8_t 			vi_pesid;
4573329Syz147069 	uint8_t 			reserved_3[3]; /* align */
4583329Syz147069 
4593329Syz147069 	/* misc flags */
4603329Syz147069 	uint32_t			closed_gops:1;
4613329Syz147069 	uint32_t			pulldown:1;
4623329Syz147069 	uint32_t			reserved_4:30; /* align */
4633329Syz147069 
4643329Syz147069 	/* I don't expect the above being perfect yet ;) */
4653329Syz147069 	uint32_t				reserved_5[8];
4663329Syz147069 };
4673329Syz147069 #endif
4683329Syz147069 
4693329Syz147069 struct v4l2_jpegcompression
4703329Syz147069 {
4713329Syz147069 	int quality;
4723329Syz147069 
4733329Syz147069 	/* Number of APP segment to be written, must be 0..15 */
4743329Syz147069 	int  APPn;
4753329Syz147069 
4763329Syz147069 	int  APP_len;		/* Length of data in JPEG APPn segment */
4773329Syz147069 	char APP_data[60];	/* Data in the JPEG APPn segment. */
4783329Syz147069 
4793329Syz147069 	int  COM_len;		/* Length of data in JPEG COM segment */
4803329Syz147069 	char COM_data[60];	/* Data in JPEG COM segment */
4813329Syz147069 
4823329Syz147069 	/*
4833329Syz147069 	 * Which markers should go into the JPEG output. Unless you exactly
4843329Syz147069 	 * know what you do, leave them untouched. Inluding less markers will
4853329Syz147069 	 * make the resulting code smaller, but there will be fewer
4863329Syz147069 	 * aplications which can read it. The presence of the APP and COM
4873329Syz147069 	 * marker is influenced by APP_len and COM_len
4883329Syz147069 	 * ONLY, not by this property!
4893329Syz147069 	 */
4903329Syz147069 	uint32_t jpeg_markers;
4913329Syz147069 
4923329Syz147069 #define	V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */
4933329Syz147069 #define	V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */
4943329Syz147069 #define	V4L2_JPEG_MARKER_DRI (1<<5)    /* Define Restart Interval */
4953329Syz147069 #define	V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */
4963329Syz147069 
4973329Syz147069 /* App segment, driver will allways use APP0 */
4983329Syz147069 #define	V4L2_JPEG_MARKER_APP (1<<7)
4993329Syz147069 };
5003329Syz147069 
5013329Syz147069 /*
5023329Syz147069  *	M E M O R Y - M A P P I N G   B U F F E R S
5033329Syz147069  */
5043329Syz147069 struct v4l2_requestbuffers
5053329Syz147069 {
5063329Syz147069 	uint32_t			count;
5073329Syz147069 	enum v4l2_buf_type	type;
5083329Syz147069 	enum v4l2_memory	memory;
5093329Syz147069 	uint32_t			reserved[2];
5103329Syz147069 };
5113329Syz147069 
5123329Syz147069 /*
5133329Syz147069  * this structure is defined to replace timeval structure which includes
5143329Syz147069  * "long" type elements
5153329Syz147069  */
5163329Syz147069 struct v4l2_timeval {
5173329Syz147069 	uint64_t	tv_sec;	/* seconds */
5183329Syz147069 	uint64_t	tv_usec; /* and microseconds */
5193329Syz147069 };
5203329Syz147069 
5213329Syz147069 /* this structure is now 64bits alignment */
5223329Syz147069 struct v4l2_buffer
5233329Syz147069 {
5243329Syz147069 	uint32_t			index;
5253329Syz147069 	uint32_t			bytesused;
5263329Syz147069 	enum v4l2_buf_type	type;
5273329Syz147069 	enum v4l2_field		field;
5283329Syz147069 	struct v4l2_timeval		timestamp;
5293329Syz147069 	struct v4l2_timecode	timecode;
5303329Syz147069 	uint32_t			flags;
5313329Syz147069 	uint32_t			sequence;
5323329Syz147069 	union {
5333329Syz147069 		uint32_t	   offset;
5343329Syz147069 		uint64_t   userptr;
5353329Syz147069 	} m;
5363329Syz147069 	/* memory location */
5373329Syz147069 	enum v4l2_memory	memory;
5383329Syz147069 	uint32_t			length;
5393329Syz147069 	uint32_t			input;
5403329Syz147069 	uint32_t			reserved;
5413329Syz147069 };
5423329Syz147069 
5433329Syz147069 /*  Flags for 'flags' field */
5443329Syz147069 #define	V4L2_BUF_FLAG_MAPPED	0x0001	/* Buffer is mapped (flag) */
5453329Syz147069 #define	V4L2_BUF_FLAG_QUEUED	0x0002	/* Buffer is queued for processing */
5463329Syz147069 #define	V4L2_BUF_FLAG_DONE	0x0004	/* Buffer is ready */
5473329Syz147069 #define	V4L2_BUF_FLAG_KEYFRAME	0x0008	/* Image is a keyframe (I-frame) */
5483329Syz147069 #define	V4L2_BUF_FLAG_PFRAME	0x0010	/* Image is a P-frame */
5493329Syz147069 #define	V4L2_BUF_FLAG_BFRAME	0x0020	/* Image is a B-frame */
5503329Syz147069 #define	V4L2_BUF_FLAG_TIMECODE	0x0100	/* timecode field is valid */
5513329Syz147069 #define	V4L2_BUF_FLAG_INPUT	0x0200	/* input field is valid */
5523329Syz147069 
5533329Syz147069 /*
5543329Syz147069  *	O V E R L A Y	P R E V I E W
5553329Syz147069  */
5563329Syz147069 struct v4l2_framebuffer
5573329Syz147069 {
5583329Syz147069 	uint32_t			capability;
5593329Syz147069 	uint32_t			flags;
5603329Syz147069 /*
5613329Syz147069  * FIXME: in theory we should pass something like PCI device + memory
5623329Syz147069  * region + offset instead of some physical address
5633329Syz147069  */
5643329Syz147069 	void*			base;
5653329Syz147069 	struct v4l2_pix_format	fmt;
5663329Syz147069 };
5673329Syz147069 /*  Flags for the 'capability' field. Read only */
5683329Syz147069 #define	V4L2_FBUF_CAP_EXTERNOVERLAY	0x0001
5693329Syz147069 #define	V4L2_FBUF_CAP_CHROMAKEY		0x0002
5703329Syz147069 #define	V4L2_FBUF_CAP_LIST_CLIPPING	0x0004
5713329Syz147069 #define	V4L2_FBUF_CAP_BITMAP_CLIPPING	0x0008
5723329Syz147069 /*  Flags for the 'flags' field. */
5733329Syz147069 #define	V4L2_FBUF_FLAG_PRIMARY		0x0001
5743329Syz147069 #define	V4L2_FBUF_FLAG_OVERLAY		0x0002
5753329Syz147069 #define	V4L2_FBUF_FLAG_CHROMAKEY	0x0004
5763329Syz147069 
5773329Syz147069 struct v4l2_clip
5783329Syz147069 {
5793329Syz147069 	struct v4l2_rect	c;
5803329Syz147069 	struct v4l2_clip	 *next; /* __user */
5813329Syz147069 };
5823329Syz147069 
5833329Syz147069 struct v4l2_window
5843329Syz147069 {
5853329Syz147069 	struct v4l2_rect	w;
5863329Syz147069 	enum v4l2_field 	field;
5873329Syz147069 	uint32_t			chromakey;
5883329Syz147069 	struct v4l2_clip	 *clips; /* __user */
5893329Syz147069 	uint32_t			clipcount;
5903329Syz147069 	void			 *bitmap; /* __user */
5913329Syz147069 };
5923329Syz147069 
5933329Syz147069 /*
5943329Syz147069  *	C A P T U R E	P A R A M E T E R S
5953329Syz147069  */
5963329Syz147069 struct v4l2_captureparm
5973329Syz147069 {
5983329Syz147069 	uint32_t	capability;	  /*  Supported modes */
5993329Syz147069 	uint32_t	capturemode;	  /*  Current mode */
6003329Syz147069 
6013329Syz147069 	/*  Time per frame in .1us units */
6023329Syz147069 	struct		v4l2_fract  timeperframe;
6033329Syz147069 	uint32_t	extendedmode;  /*  Driver-specific extensions */
6043329Syz147069 	uint32_t	readbuffers;   /*  # of buffers for read */
6053329Syz147069 	uint32_t	reserved[4];
6063329Syz147069 };
6073329Syz147069 
6083329Syz147069 /*  Flags for 'capability' and 'capturemode' fields */
6093329Syz147069 #define	V4L2_MODE_HIGHQUALITY	0x0001	/*  High quality imaging mode */
6103329Syz147069 #define	V4L2_CAP_TIMEPERFRAME	0x1000	/*  timeperframe field is supported */
6113329Syz147069 
6123329Syz147069 struct v4l2_outputparm
6133329Syz147069 {
6143329Syz147069 	uint32_t	capability;	 /*  Supported modes */
6153329Syz147069 	uint32_t	outputmode;	 /*  Current mode */
6163329Syz147069 
6173329Syz147069 	/*  Time per frame in seconds */
6183329Syz147069 	struct		v4l2_fract  timeperframe;
6193329Syz147069 	uint32_t	extendedmode; /*  Driver-specific extensions */
6203329Syz147069 	uint32_t	writebuffers; /*	# of buffers for write */
6213329Syz147069 	uint32_t	reserved[4];
6223329Syz147069 };
6233329Syz147069 
6243329Syz147069 /*
6253329Syz147069  *	I N P U T   I M A G E	C R O P P I N G
6263329Syz147069  */
6273329Syz147069 struct v4l2_cropcap {
6283329Syz147069 	enum v4l2_buf_type	type;
6293329Syz147069 	struct v4l2_rect	bounds;
6303329Syz147069 	struct v4l2_rect	defrect;
6313329Syz147069 	struct v4l2_fract	pixelaspect;
6323329Syz147069 };
6333329Syz147069 
6343329Syz147069 struct v4l2_crop {
6353329Syz147069 	enum v4l2_buf_type	type;
6363329Syz147069 	struct v4l2_rect	c;
6373329Syz147069 };
6383329Syz147069 
6393329Syz147069 /*
6403329Syz147069  *	A N A L O G   V I D E O   S T A N D A R D
6413329Syz147069  */
6423329Syz147069 
6433329Syz147069 typedef uint64_t v4l2_std_id;
6443329Syz147069 
6453329Syz147069 /* one bit for each */
6463329Syz147069 #define	V4L2_STD_PAL_B		((v4l2_std_id)0x00000001)
6473329Syz147069 #define	V4L2_STD_PAL_B1 	((v4l2_std_id)0x00000002)
6483329Syz147069 #define	V4L2_STD_PAL_G		((v4l2_std_id)0x00000004)
6493329Syz147069 #define	V4L2_STD_PAL_H		((v4l2_std_id)0x00000008)
6503329Syz147069 #define	V4L2_STD_PAL_I		((v4l2_std_id)0x00000010)
6513329Syz147069 #define	V4L2_STD_PAL_D		((v4l2_std_id)0x00000020)
6523329Syz147069 #define	V4L2_STD_PAL_D1 	((v4l2_std_id)0x00000040)
6533329Syz147069 #define	V4L2_STD_PAL_K		((v4l2_std_id)0x00000080)
6543329Syz147069 
6553329Syz147069 #define	V4L2_STD_PAL_M		((v4l2_std_id)0x00000100)
6563329Syz147069 #define	V4L2_STD_PAL_N		((v4l2_std_id)0x00000200)
6573329Syz147069 #define	V4L2_STD_PAL_Nc 	((v4l2_std_id)0x00000400)
6583329Syz147069 #define	V4L2_STD_PAL_60 	((v4l2_std_id)0x00000800)
6593329Syz147069 
6603329Syz147069 #define	V4L2_STD_NTSC_M 	((v4l2_std_id)0x00001000)
6613329Syz147069 #define	V4L2_STD_NTSC_M_JP	((v4l2_std_id)0x00002000)
6623329Syz147069 #define	V4L2_STD_NTSC_443	((v4l2_std_id)0x00004000)
6633329Syz147069 #define	V4L2_STD_NTSC_M_KR	((v4l2_std_id)0x00008000)
6643329Syz147069 
6653329Syz147069 #define	V4L2_STD_SECAM_B	((v4l2_std_id)0x00010000)
6663329Syz147069 #define	V4L2_STD_SECAM_D	((v4l2_std_id)0x00020000)
6673329Syz147069 #define	V4L2_STD_SECAM_G	((v4l2_std_id)0x00040000)
6683329Syz147069 #define	V4L2_STD_SECAM_H	((v4l2_std_id)0x00080000)
6693329Syz147069 #define	V4L2_STD_SECAM_K	((v4l2_std_id)0x00100000)
6703329Syz147069 #define	V4L2_STD_SECAM_K1	((v4l2_std_id)0x00200000)
6713329Syz147069 #define	V4L2_STD_SECAM_L	((v4l2_std_id)0x00400000)
6723329Syz147069 #define	V4L2_STD_SECAM_LC	((v4l2_std_id)0x00800000)
6733329Syz147069 
6743329Syz147069 /* ATSC/HDTV */
6753329Syz147069 #define	V4L2_STD_ATSC_8_VSB	((v4l2_std_id)0x01000000)
6763329Syz147069 #define	V4L2_STD_ATSC_16_VSB	((v4l2_std_id)0x02000000)
6773329Syz147069 
6783329Syz147069 /* some merged standards */
6793329Syz147069 #define	V4L2_STD_MN \
6803329Syz147069 	(V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC)
6813329Syz147069 #define	V4L2_STD_B \
6823329Syz147069 	(V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B)
6833329Syz147069 #define	V4L2_STD_GH \
6843329Syz147069 	(V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H)
6853329Syz147069 #define	V4L2_STD_DK	(V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK)
6863329Syz147069 
6873329Syz147069 /* some common needed stuff */
6883329Syz147069 #define	V4L2_STD_PAL_BG		(V4L2_STD_PAL_B		|\
6893329Syz147069 				V4L2_STD_PAL_B1	|\
6903329Syz147069 				V4L2_STD_PAL_G)
6913329Syz147069 #define	V4L2_STD_PAL_DK		(V4L2_STD_PAL_D		|\
6923329Syz147069 				V4L2_STD_PAL_D1	|\
6933329Syz147069 				V4L2_STD_PAL_K)
6943329Syz147069 #define	V4L2_STD_PAL		(V4L2_STD_PAL_BG	|\
6953329Syz147069 				V4L2_STD_PAL_DK	|\
6963329Syz147069 				V4L2_STD_PAL_H		|\
6973329Syz147069 				V4L2_STD_PAL_I)
6983329Syz147069 #define	V4L2_STD_NTSC		(V4L2_STD_NTSC_M	|\
6993329Syz147069 				V4L2_STD_NTSC_M_JP	|\
7003329Syz147069 				V4L2_STD_NTSC_M_KR)
7013329Syz147069 #define	V4L2_STD_SECAM_DK	(V4L2_STD_SECAM_D	|\
7023329Syz147069 				V4L2_STD_SECAM_K	|\
7033329Syz147069 				V4L2_STD_SECAM_K1)
7043329Syz147069 #define	V4L2_STD_SECAM		(V4L2_STD_SECAM_B	|\
7053329Syz147069 				V4L2_STD_SECAM_G	|\
7063329Syz147069 				V4L2_STD_SECAM_H	|\
7073329Syz147069 				V4L2_STD_SECAM_DK	|\
7083329Syz147069 				V4L2_STD_SECAM_L	|\
7093329Syz147069 				V4L2_STD_SECAM_LC)
7103329Syz147069 
7113329Syz147069 #define	V4L2_STD_525_60		(V4L2_STD_PAL_M		|\
7123329Syz147069 				V4L2_STD_PAL_60	|\
7133329Syz147069 				V4L2_STD_NTSC		|\
7143329Syz147069 				V4L2_STD_NTSC_443)
7153329Syz147069 #define	V4L2_STD_625_50		(V4L2_STD_PAL		|\
7163329Syz147069 				V4L2_STD_PAL_N		|\
7173329Syz147069 				V4L2_STD_PAL_Nc	|\
7183329Syz147069 				V4L2_STD_SECAM)
7193329Syz147069 #define	V4L2_STD_ATSC		(V4L2_STD_ATSC_8_VSB	|\
7203329Syz147069 				V4L2_STD_ATSC_16_VSB)
7213329Syz147069 
7223329Syz147069 #define	V4L2_STD_UNKNOWN	0
7233329Syz147069 #define	V4L2_STD_ALL		(V4L2_STD_525_60	|\
7243329Syz147069 				V4L2_STD_625_50)
7253329Syz147069 
726*8382SRaymond.Chen@Sun.COM /*
727*8382SRaymond.Chen@Sun.COM  * On amd64, use pack(4) to make structures match the x86 alignment rules.
728*8382SRaymond.Chen@Sun.COM  */
729*8382SRaymond.Chen@Sun.COM #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
730*8382SRaymond.Chen@Sun.COM #pragma pack(4)
731*8382SRaymond.Chen@Sun.COM #endif
732*8382SRaymond.Chen@Sun.COM 
7333329Syz147069 struct v4l2_standard
7343329Syz147069 {
7353329Syz147069 	uint32_t		index;
7363329Syz147069 	v4l2_std_id		id;
7373329Syz147069 	uint8_t			name[24];
7383329Syz147069 	struct v4l2_fract	frameperiod; /* Frames, not fields */
7393329Syz147069 	uint32_t		framelines;
7403329Syz147069 	uint32_t		reserved[4];
7413329Syz147069 };
7423329Syz147069 
743*8382SRaymond.Chen@Sun.COM #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
744*8382SRaymond.Chen@Sun.COM #pragma pack()
745*8382SRaymond.Chen@Sun.COM #endif
746*8382SRaymond.Chen@Sun.COM 
7473329Syz147069 /*
7483329Syz147069  *	V I D E O   I N P U T S
7493329Syz147069  */
7503329Syz147069 struct v4l2_input
7513329Syz147069 {
7523329Syz147069 	uint8_t		name[32];	/*  Label */
7533329Syz147069 	uint32_t	index;		/*  Which input */
7543329Syz147069 	uint32_t	type;		/*  Type of input */
7553329Syz147069 	uint32_t	audioset;	/*  Associated audios (bitfield) */
7563329Syz147069 	uint32_t	tuner;		/*  Associated tuner */
7573329Syz147069 	v4l2_std_id	std;
7583329Syz147069 	uint32_t	status;
7593329Syz147069 
7603329Syz147069 	/*
7613329Syz147069 	 * Added for 64bits alignment, or, ENUMINPUT ioctl will fail. Because
7623329Syz147069 	 * 32 bits app and 64bits driver will get different structure size
7633329Syz147069 	 * which cause the values of ENUMINPUT are different. v4l2_input has a
7643329Syz147069 	 * 64-bit element which make v4l2_input structure has to be 64bit
7653329Syz147069 	 * alignment.
7663329Syz147069 	 */
7673329Syz147069 	uint32_t pad;
7683329Syz147069 
7693329Syz147069 	uint32_t	reserved[4];
7703329Syz147069 };
7713329Syz147069 
7723329Syz147069 /*  Values for the 'type' field */
7733329Syz147069 #define	V4L2_INPUT_TYPE_TUNER		1
7743329Syz147069 #define	V4L2_INPUT_TYPE_CAMERA		2
7753329Syz147069 
7763329Syz147069 /* field 'status' - general */
7773329Syz147069 #define	V4L2_IN_ST_NO_POWER    0x00000001  /* Attached device is off */
7783329Syz147069 #define	V4L2_IN_ST_NO_SIGNAL   0x00000002
7793329Syz147069 #define	V4L2_IN_ST_NO_COLOR    0x00000004
7803329Syz147069 
7813329Syz147069 /* field 'status' - analog */
7823329Syz147069 #define	V4L2_IN_ST_NO_H_LOCK	0x00000100  /* No horizontal sync lock */
7833329Syz147069 #define	V4L2_IN_ST_COLOR_KILL	0x00000200  /* Color killer is active */
7843329Syz147069 
7853329Syz147069 /* field 'status' - digital */
7863329Syz147069 #define	V4L2_IN_ST_NO_SYNC	0x00010000  /* No synchronization lock */
7873329Syz147069 #define	V4L2_IN_ST_NO_EQU	0x00020000  /* No equalizer lock */
7883329Syz147069 #define	V4L2_IN_ST_NO_CARRIER	0x00040000  /* Carrier recovery failed */
7893329Syz147069 
7903329Syz147069 /* field 'status' - VCR and set-top box */
7913329Syz147069 #define	V4L2_IN_ST_MACROVISION	0x01000000  /* Macrovision detected */
7923329Syz147069 #define	V4L2_IN_ST_NO_ACCESS	0x02000000  /* Conditional access denied */
7933329Syz147069 #define	V4L2_IN_ST_VTR		0x04000000  /* VTR time constant */
7943329Syz147069 
7953329Syz147069 /*
7963329Syz147069  *	V I D E O   O U T P U T S
7973329Syz147069  */
7983329Syz147069 struct v4l2_output
7993329Syz147069 {
8003329Syz147069 	uint32_t	index;		/* Which output */
8013329Syz147069 	uint8_t		name[32];	/* Label */
8023329Syz147069 	uint32_t	type;		/* Type of output */
8033329Syz147069 	uint32_t	audioset;	/* Associated audios (bitfield) */
8043329Syz147069 	uint32_t	modulator;	/* Associated modulator */
8053329Syz147069 	v4l2_std_id	std;
8063329Syz147069 	uint32_t	reserved[4];
8073329Syz147069 };
8083329Syz147069 /*  Values for the 'type' field */
8093329Syz147069 #define	V4L2_OUTPUT_TYPE_MODULATOR		1
8103329Syz147069 #define	V4L2_OUTPUT_TYPE_ANALOG			2
8113329Syz147069 #define	V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY	3
8123329Syz147069 
8133329Syz147069 /*
8143329Syz147069  *	C O N T R O L S
8153329Syz147069  */
8163329Syz147069 struct v4l2_control
8173329Syz147069 {
8183329Syz147069 	uint32_t	id;
8193329Syz147069 	int32_t		value;
8203329Syz147069 };
8213329Syz147069 
8223329Syz147069 struct v4l2_ext_control
8233329Syz147069 {
8243329Syz147069 	uint32_t id;
8253329Syz147069 	uint32_t reserved2[2];
8263329Syz147069 	union {
8273329Syz147069 		int32_t value;
8283329Syz147069 		int64_t value64;
8293329Syz147069 		void *reserved;
8303329Syz147069 	} value;
8313329Syz147069 }; /*  __attribute__ ((packed)), comment for solaris to compile */
8323329Syz147069 
8333329Syz147069 struct v4l2_ext_controls
8343329Syz147069 {
8353329Syz147069 	uint32_t ctrl_class;
8363329Syz147069 	uint32_t count;
8373329Syz147069 	uint32_t error_idx;
8383329Syz147069 	uint32_t reserved[2];
8393329Syz147069 	struct v4l2_ext_control *controls;
8403329Syz147069 };
8413329Syz147069 
8423329Syz147069 /*  Values for ctrl_class field */
8433329Syz147069 #define	V4L2_CTRL_CLASS_USER 0x00980000	/* Old-style 'user' controls */
8443329Syz147069 #define	V4L2_CTRL_CLASS_MPEG 0x00990000	/* MPEG-compression controls */
8453329Syz147069 
8463329Syz147069 #define	V4L2_CTRL_ID_MASK	  (0x0fffffff)
8473329Syz147069 #define	V4L2_CTRL_ID2CLASS(id)	  ((id) & 0x0fff0000UL)
8483329Syz147069 #define	V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
8493329Syz147069 
8503329Syz147069 /*  Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
8513329Syz147069 struct v4l2_queryctrl
8523329Syz147069 {
8533329Syz147069 	uint32_t		id;
8543329Syz147069 	enum			v4l2_ctrl_type type;
8553329Syz147069 	char			name[32];	/* Whatever */
8563329Syz147069 	int32_t			minimum; /* Note signedness */
8573329Syz147069 	int32_t			maximum;
8583329Syz147069 	int32_t			step;
8593329Syz147069 	int32_t			default_value;
8603329Syz147069 	uint32_t		flags;
8613329Syz147069 	uint32_t		reserved[2];
8623329Syz147069 };
8633329Syz147069 
8643329Syz147069 /*  Used in the VIDIOC_QUERYMENU ioctl for querying menu items */
8653329Syz147069 struct v4l2_querymenu
8663329Syz147069 {
8673329Syz147069 	uint32_t		id;
8683329Syz147069 	uint32_t		index;
8693329Syz147069 	uint8_t		name[32];	/* Whatever */
8703329Syz147069 	uint32_t		reserved;
8713329Syz147069 };
8723329Syz147069 
8733329Syz147069 /*  Control flags  */
8743329Syz147069 #define	V4L2_CTRL_FLAG_DISABLED		0x0001
8753329Syz147069 #define	V4L2_CTRL_FLAG_GRABBED		0x0002
8763329Syz147069 #define	V4L2_CTRL_FLAG_READ_ONLY	0x0004
8773329Syz147069 #define	V4L2_CTRL_FLAG_UPDATE		0x0008
8783329Syz147069 #define	V4L2_CTRL_FLAG_INACTIVE 	0x0010
8793329Syz147069 #define	V4L2_CTRL_FLAG_SLIDER		0x0020
8803329Syz147069 
8813329Syz147069 /*  Query flag, to be ORed with the control ID */
8823329Syz147069 #define	V4L2_CTRL_FLAG_NEXT_CTRL	0x80000000
8833329Syz147069 
8843329Syz147069 /*  User-class control IDs defined by V4L2 */
8853329Syz147069 #define	V4L2_CID_BASE			(V4L2_CTRL_CLASS_USER | 0x900)
8863329Syz147069 #define	V4L2_CID_USER_BASE		V4L2_CID_BASE
8873329Syz147069 /*  IDs reserved for driver specific controls */
8883329Syz147069 #define	V4L2_CID_PRIVATE_BASE		0x08000000
8893329Syz147069 
8903329Syz147069 #define	V4L2_CID_USER_CLASS		(V4L2_CTRL_CLASS_USER | 1)
8913329Syz147069 #define	V4L2_CID_BRIGHTNESS		(V4L2_CID_BASE+0)
8923329Syz147069 #define	V4L2_CID_CONTRAST		(V4L2_CID_BASE+1)
8933329Syz147069 #define	V4L2_CID_SATURATION		(V4L2_CID_BASE+2)
8943329Syz147069 #define	V4L2_CID_HUE			(V4L2_CID_BASE+3)
8953329Syz147069 #define	V4L2_CID_AUDIO_VOLUME		(V4L2_CID_BASE+5)
8963329Syz147069 #define	V4L2_CID_AUDIO_BALANCE		(V4L2_CID_BASE+6)
8973329Syz147069 #define	V4L2_CID_AUDIO_BASS		(V4L2_CID_BASE+7)
8983329Syz147069 #define	V4L2_CID_AUDIO_TREBLE		(V4L2_CID_BASE+8)
8993329Syz147069 #define	V4L2_CID_AUDIO_MUTE		(V4L2_CID_BASE+9)
9003329Syz147069 #define	V4L2_CID_AUDIO_LOUDNESS		(V4L2_CID_BASE+10)
9013329Syz147069 #define	V4L2_CID_BLACK_LEVEL		(V4L2_CID_BASE+11)
9023329Syz147069 #define	V4L2_CID_AUTO_WHITE_BALANCE	(V4L2_CID_BASE+12)
9033329Syz147069 #define	V4L2_CID_DO_WHITE_BALANCE	(V4L2_CID_BASE+13)
9043329Syz147069 #define	V4L2_CID_RED_BALANCE		(V4L2_CID_BASE+14)
9053329Syz147069 #define	V4L2_CID_BLUE_BALANCE		(V4L2_CID_BASE+15)
9063329Syz147069 #define	V4L2_CID_GAMMA			(V4L2_CID_BASE+16)
9073329Syz147069 #define	V4L2_CID_WHITENESS		(V4L2_CID_GAMMA) /* ? Not sure */
9083329Syz147069 #define	V4L2_CID_EXPOSURE		(V4L2_CID_BASE+17)
9093329Syz147069 #define	V4L2_CID_AUTOGAIN		(V4L2_CID_BASE+18)
9103329Syz147069 #define	V4L2_CID_GAIN			(V4L2_CID_BASE+19)
9113329Syz147069 #define	V4L2_CID_HFLIP			(V4L2_CID_BASE+20)
9123329Syz147069 #define	V4L2_CID_VFLIP			(V4L2_CID_BASE+21)
9133329Syz147069 #define	V4L2_CID_HCENTER		(V4L2_CID_BASE+22)
9143329Syz147069 #define	V4L2_CID_VCENTER		(V4L2_CID_BASE+23)
9153329Syz147069 #define	V4L2_CID_LASTP1			(V4L2_CID_BASE+24) /* last CID + 1 */
9163329Syz147069 
9173329Syz147069 /*  MPEG-class control IDs defined by V4L2 */
9183329Syz147069 #define	V4L2_CID_MPEG_BASE			(V4L2_CTRL_CLASS_MPEG | 0x900)
9193329Syz147069 #define	V4L2_CID_MPEG_CLASS			(V4L2_CTRL_CLASS_MPEG | 1)
9203329Syz147069 
9213329Syz147069 /*  MPEG streams */
9223329Syz147069 #define	V4L2_CID_MPEG_STREAM_TYPE		(V4L2_CID_MPEG_BASE+0)
9233329Syz147069 enum v4l2_mpeg_stream_type {
9243329Syz147069 	V4L2_MPEG_STREAM_TYPE_MPEG2_PS	 = 0, /* MPEG-2 program stream */
9253329Syz147069 	V4L2_MPEG_STREAM_TYPE_MPEG2_TS	 = 1, /* MPEG-2 transport stream */
9263329Syz147069 	V4L2_MPEG_STREAM_TYPE_MPEG1_SS	 = 2, /* MPEG-1 system stream */
9273329Syz147069 	V4L2_MPEG_STREAM_TYPE_MPEG2_DVD  = 3, /* MPEG-2 DVD-compatible stream */
9283329Syz147069 	V4L2_MPEG_STREAM_TYPE_MPEG1_VCD  = 4, /* MPEG-1 VCD-compatible stream */
9293329Syz147069 	V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5 /* MPEG-2 SVCD-compatible stream */
9303329Syz147069 };
9313329Syz147069 #define	V4L2_CID_MPEG_STREAM_PID_PMT		(V4L2_CID_MPEG_BASE+1)
9323329Syz147069 #define	V4L2_CID_MPEG_STREAM_PID_AUDIO		(V4L2_CID_MPEG_BASE+2)
9333329Syz147069 #define	V4L2_CID_MPEG_STREAM_PID_VIDEO		(V4L2_CID_MPEG_BASE+3)
9343329Syz147069 #define	V4L2_CID_MPEG_STREAM_PID_PCR		(V4L2_CID_MPEG_BASE+4)
9353329Syz147069 #define	V4L2_CID_MPEG_STREAM_PES_ID_AUDIO	(V4L2_CID_MPEG_BASE+5)
9363329Syz147069 #define	V4L2_CID_MPEG_STREAM_PES_ID_VIDEO	(V4L2_CID_MPEG_BASE+6)
9373329Syz147069 #define	V4L2_CID_MPEG_STREAM_VBI_FMT		(V4L2_CID_MPEG_BASE+7)
9383329Syz147069 enum v4l2_mpeg_stream_vbi_fmt {
9393329Syz147069 	V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,  /* No VBI in the MPEG stream */
9403329Syz147069 
9413329Syz147069 	/* VBI in private packets, IVTV format */
9423329Syz147069 	V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1
9433329Syz147069 };
9443329Syz147069 
9453329Syz147069 /*  MPEG audio */
9463329Syz147069 #define	V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ	(V4L2_CID_MPEG_BASE+100)
9473329Syz147069 enum v4l2_mpeg_audio_sampling_freq {
9483329Syz147069 	V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
9493329Syz147069 	V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
9503329Syz147069 	V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2
9513329Syz147069 };
9523329Syz147069 #define	V4L2_CID_MPEG_AUDIO_ENCODING		(V4L2_CID_MPEG_BASE+101)
9533329Syz147069 enum v4l2_mpeg_audio_encoding {
9543329Syz147069 	V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
9553329Syz147069 	V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
9563329Syz147069 	V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2
9573329Syz147069 };
9583329Syz147069 #define	V4L2_CID_MPEG_AUDIO_L1_BITRATE		(V4L2_CID_MPEG_BASE+102)
9593329Syz147069 enum v4l2_mpeg_audio_l1_bitrate {
9603329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_32K	= 0,
9613329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_64K	= 1,
9623329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_96K	= 2,
9633329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
9643329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
9653329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
9663329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
9673329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
9683329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
9693329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
9703329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
9713329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
9723329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
9733329Syz147069 	V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13
9743329Syz147069 };
9753329Syz147069 #define	V4L2_CID_MPEG_AUDIO_L2_BITRATE		(V4L2_CID_MPEG_BASE+103)
9763329Syz147069 enum v4l2_mpeg_audio_l2_bitrate {
9773329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_32K	= 0,
9783329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_48K	= 1,
9793329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_56K	= 2,
9803329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_64K	= 3,
9813329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_80K	= 4,
9823329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_96K	= 5,
9833329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
9843329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
9853329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
9863329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
9873329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
9883329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
9893329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
9903329Syz147069 	V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13
9913329Syz147069 };
9923329Syz147069 #define	V4L2_CID_MPEG_AUDIO_L3_BITRATE		(V4L2_CID_MPEG_BASE+104)
9933329Syz147069 enum v4l2_mpeg_audio_l3_bitrate {
9943329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_32K	= 0,
9953329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_40K	= 1,
9963329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_48K	= 2,
9973329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_56K	= 3,
9983329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_64K	= 4,
9993329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_80K	= 5,
10003329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_96K	= 6,
10013329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
10023329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
10033329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
10043329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
10053329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
10063329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
10073329Syz147069 	V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13
10083329Syz147069 };
10093329Syz147069 #define	V4L2_CID_MPEG_AUDIO_MODE		(V4L2_CID_MPEG_BASE+105)
10103329Syz147069 enum v4l2_mpeg_audio_mode {
10113329Syz147069 	V4L2_MPEG_AUDIO_MODE_STEREO		= 0,
10123329Syz147069 	V4L2_MPEG_AUDIO_MODE_JOINT_STEREO	= 1,
10133329Syz147069 	V4L2_MPEG_AUDIO_MODE_DUAL		= 2,
10143329Syz147069 	V4L2_MPEG_AUDIO_MODE_MONO		= 3
10153329Syz147069 };
10163329Syz147069 #define	V4L2_CID_MPEG_AUDIO_MODE_EXTENSION	(V4L2_CID_MPEG_BASE+106)
10173329Syz147069 enum v4l2_mpeg_audio_mode_extension {
10183329Syz147069 	V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4	= 0,
10193329Syz147069 	V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8	= 1,
10203329Syz147069 	V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
10213329Syz147069 	V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3
10223329Syz147069 };
10233329Syz147069 #define	V4L2_CID_MPEG_AUDIO_EMPHASIS		(V4L2_CID_MPEG_BASE+107)
10243329Syz147069 enum v4l2_mpeg_audio_emphasis {
10253329Syz147069 	V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
10263329Syz147069 	V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
10273329Syz147069 	V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2
10283329Syz147069 };
10293329Syz147069 #define	V4L2_CID_MPEG_AUDIO_CRC 		(V4L2_CID_MPEG_BASE+108)
10303329Syz147069 enum v4l2_mpeg_audio_crc {
10313329Syz147069 	V4L2_MPEG_AUDIO_CRC_NONE = 0,
10323329Syz147069 	V4L2_MPEG_AUDIO_CRC_CRC16 = 1
10333329Syz147069 };
10343329Syz147069 
10353329Syz147069 /*  MPEG video */
10363329Syz147069 #define	V4L2_CID_MPEG_VIDEO_ENCODING		(V4L2_CID_MPEG_BASE+200)
10373329Syz147069 enum v4l2_mpeg_video_encoding {
10383329Syz147069 	V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
10393329Syz147069 	V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1
10403329Syz147069 };
10413329Syz147069 #define	V4L2_CID_MPEG_VIDEO_ASPECT		(V4L2_CID_MPEG_BASE+201)
10423329Syz147069 enum v4l2_mpeg_video_aspect {
10433329Syz147069 	V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
10443329Syz147069 	V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
10453329Syz147069 	V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
10463329Syz147069 	V4L2_MPEG_VIDEO_ASPECT_221x100 = 3
10473329Syz147069 };
10483329Syz147069 #define	V4L2_CID_MPEG_VIDEO_B_FRAMES		(V4L2_CID_MPEG_BASE+202)
10493329Syz147069 #define	V4L2_CID_MPEG_VIDEO_GOP_SIZE		(V4L2_CID_MPEG_BASE+203)
10503329Syz147069 #define	V4L2_CID_MPEG_VIDEO_GOP_CLOSURE 	(V4L2_CID_MPEG_BASE+204)
10513329Syz147069 #define	V4L2_CID_MPEG_VIDEO_PULLDOWN		(V4L2_CID_MPEG_BASE+205)
10523329Syz147069 #define	V4L2_CID_MPEG_VIDEO_BITRATE_MODE	(V4L2_CID_MPEG_BASE+206)
10533329Syz147069 enum v4l2_mpeg_video_bitrate_mode {
10543329Syz147069 	V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
10553329Syz147069 	V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1
10563329Syz147069 };
10573329Syz147069 #define	V4L2_CID_MPEG_VIDEO_BITRATE		(V4L2_CID_MPEG_BASE+207)
10583329Syz147069 #define	V4L2_CID_MPEG_VIDEO_BITRATE_PEAK	(V4L2_CID_MPEG_BASE+208)
10593329Syz147069 #define	V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
10603329Syz147069 
10613329Syz147069 /* MPEG-class control IDs specific to the CX2584x driver as defined by V4L2 */
10623329Syz147069 #define	V4L2_CID_MPEG_CX2341X_BASE \
10633329Syz147069 	(V4L2_CTRL_CLASS_MPEG | 0x1000)
10643329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE \
10653329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+0)
10663329Syz147069 enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
10673329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
10683329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO   = 1
10693329Syz147069 };
10703329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER \
10713329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+1)
10723329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE \
10733329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+2)
10743329Syz147069 enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
10753329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
10763329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR  = 1,
10773329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2,
10783329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
10793329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE =
10803329Syz147069 		4
10813329Syz147069 };
10823329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE \
10833329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+3)
10843329Syz147069 enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
10853329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF	  = 0,
10863329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1
10873329Syz147069 };
10883329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE \
10893329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+4)
10903329Syz147069 enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
10913329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
10923329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO   = 1
10933329Syz147069 };
10943329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER \
10953329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+5)
10963329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE \
10973329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+6)
10983329Syz147069 enum v4l2_mpeg_cx2341x_video_median_filter_type {
10993329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF		= 0,
11003329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR		= 1,
11013329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT		= 2,
11023329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT	= 3,
11033329Syz147069 	V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG		= 4
11043329Syz147069 };
11053329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM \
11063329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+7)
11073329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP \
11083329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+8)
11093329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM \
11103329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+9)
11113329Syz147069 #define	V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP \
11123329Syz147069 	(V4L2_CID_MPEG_CX2341X_BASE+10)
11133329Syz147069 
11143329Syz147069 /*
11153329Syz147069  *	T U N I N G
11163329Syz147069  */
11173329Syz147069 struct v4l2_tuner
11183329Syz147069 {
11193329Syz147069 	uint32_t	index;
11203329Syz147069 	uint8_t		name[32];
11213329Syz147069 	enum		v4l2_tuner_type	type;
11223329Syz147069 	uint32_t	capability;
11233329Syz147069 	uint32_t	rangelow;
11243329Syz147069 	uint32_t	rangehigh;
11253329Syz147069 	uint32_t	rxsubchans;
11263329Syz147069 	uint32_t	audmode;
11273329Syz147069 	int32_t		signal;
11283329Syz147069 	int32_t		afc;
11293329Syz147069 	uint32_t	reserved[4];
11303329Syz147069 };
11313329Syz147069 
11323329Syz147069 struct v4l2_modulator
11333329Syz147069 {
11343329Syz147069 	uint32_t	index;
11353329Syz147069 	uint8_t		name[32];
11363329Syz147069 	uint32_t	capability;
11373329Syz147069 	uint32_t	rangelow;
11383329Syz147069 	uint32_t	rangehigh;
11393329Syz147069 	uint32_t	txsubchans;
11403329Syz147069 	uint32_t	reserved[4];
11413329Syz147069 };
11423329Syz147069 
11433329Syz147069 /*  Flags for the 'capability' field */
11443329Syz147069 #define	V4L2_TUNER_CAP_LOW		0x0001
11453329Syz147069 #define	V4L2_TUNER_CAP_NORM		0x0002
11463329Syz147069 #define	V4L2_TUNER_CAP_STEREO		0x0010
11473329Syz147069 #define	V4L2_TUNER_CAP_LANG2		0x0020
11483329Syz147069 #define	V4L2_TUNER_CAP_SAP		0x0020
11493329Syz147069 #define	V4L2_TUNER_CAP_LANG1		0x0040
11503329Syz147069 
11513329Syz147069 /*  Flags for the 'rxsubchans' field */
11523329Syz147069 #define	V4L2_TUNER_SUB_MONO		0x0001
11533329Syz147069 #define	V4L2_TUNER_SUB_STEREO		0x0002
11543329Syz147069 #define	V4L2_TUNER_SUB_LANG2		0x0004
11553329Syz147069 #define	V4L2_TUNER_SUB_SAP		0x0004
11563329Syz147069 #define	V4L2_TUNER_SUB_LANG1		0x0008
11573329Syz147069 
11583329Syz147069 /*  Values for the 'audmode' field */
11593329Syz147069 #define	V4L2_TUNER_MODE_MONO		0x0000
11603329Syz147069 #define	V4L2_TUNER_MODE_STEREO		0x0001
11613329Syz147069 #define	V4L2_TUNER_MODE_LANG2		0x0002
11623329Syz147069 #define	V4L2_TUNER_MODE_SAP		0x0002
11633329Syz147069 #define	V4L2_TUNER_MODE_LANG1		0x0003
11643329Syz147069 #define	V4L2_TUNER_MODE_LANG1_LANG2	0x0004
11653329Syz147069 
11663329Syz147069 struct v4l2_frequency
11673329Syz147069 {
11683329Syz147069 	uint32_t		tuner;
11693329Syz147069 	enum			v4l2_tuner_type  type;
11703329Syz147069 	uint32_t		frequency;
11713329Syz147069 	uint32_t		reserved[8];
11723329Syz147069 };
11733329Syz147069 
11743329Syz147069 /*
11753329Syz147069  *	A U D I O
11763329Syz147069  */
11773329Syz147069 struct v4l2_audio
11783329Syz147069 {
11793329Syz147069 	uint32_t	index;
11803329Syz147069 	uint8_t	name[32];
11813329Syz147069 	uint32_t	capability;
11823329Syz147069 	uint32_t	mode;
11833329Syz147069 	uint32_t	reserved[2];
11843329Syz147069 };
11853329Syz147069 
11863329Syz147069 /*  Flags for the 'capability' field */
11873329Syz147069 #define	V4L2_AUDCAP_STEREO		0x00001
11883329Syz147069 #define	V4L2_AUDCAP_AVL			0x00002
11893329Syz147069 
11903329Syz147069 /*  Flags for the 'mode' field */
11913329Syz147069 #define	V4L2_AUDMODE_AVL		0x00001
11923329Syz147069 
11933329Syz147069 struct v4l2_audioout
11943329Syz147069 {
11953329Syz147069 	uint32_t	index;
11963329Syz147069 	uint8_t	name[32];
11973329Syz147069 	uint32_t	capability;
11983329Syz147069 	uint32_t	mode;
11993329Syz147069 	uint32_t	reserved[2];
12003329Syz147069 };
12013329Syz147069 
12023329Syz147069 /*
12033329Syz147069  *	D A T A   S E R V I C E S   ( V B I )
12043329Syz147069  *
12053329Syz147069  *	Data services API by Michael Schimek
12063329Syz147069  */
12073329Syz147069 
12083329Syz147069 /* Raw VBI */
12093329Syz147069 struct v4l2_vbi_format
12103329Syz147069 {
12113329Syz147069 	uint32_t	sampling_rate;		/* in 1 Hz */
12123329Syz147069 	uint32_t	offset;
12133329Syz147069 	uint32_t	samples_per_line;
12143329Syz147069 	uint32_t	sample_format;		/* V4L2_PIX_FMT_* */
12153329Syz147069 	int32_t	start[2];
12163329Syz147069 	uint32_t	count[2];
12173329Syz147069 	uint32_t	flags;			/* V4L2_VBI_* */
12183329Syz147069 	uint32_t	reserved[2];		/* must be zero */
12193329Syz147069 };
12203329Syz147069 
12213329Syz147069 /*  VBI flags  */
12223329Syz147069 #define	V4L2_VBI_UNSYNC		(1<< 0)
12233329Syz147069 #define	V4L2_VBI_INTERLACED	(1<< 1)
12243329Syz147069 
12253329Syz147069 #if 1
12263329Syz147069 /*
12273329Syz147069  * Sliced VBI
12283329Syz147069  *
12293329Syz147069  *    This implements is a proposal V4L2 API to allow SLICED VBI
12303329Syz147069  * required for some hardware encoders. It should change without
12313329Syz147069  * notice in the definitive implementation.
12323329Syz147069  */
12333329Syz147069 
12343329Syz147069 struct v4l2_sliced_vbi_format
12353329Syz147069 {
12363329Syz147069 	uint16_t	service_set;
12373329Syz147069 
12383329Syz147069 	/*
12393329Syz147069 	 * service_lines[0][...] specifies lines 0-23 (1-23 used) of the first
12403329Syz147069 	 * field
12413329Syz147069 	 * service_lines[1][...] specifies lines 0-23 (1-23 used) of the second
12423329Syz147069 	 * field
12433329Syz147069 	 * (equals frame lines 313-336 for 625 line video standards,
12443329Syz147069 	 * 263-286 for 525 line standards)
12453329Syz147069 	 */
12463329Syz147069 	uint16_t   service_lines[2][24];
12473329Syz147069 	uint32_t   io_size;
12483329Syz147069 	uint32_t   reserved[2];	/* must be zero */
12493329Syz147069 };
12503329Syz147069 
12513329Syz147069 /*
12523329Syz147069  * Teletext World System Teletext
12533329Syz147069  * (WST), defined on ITU-R BT.653-2
12543329Syz147069  */
12553329Syz147069 #define	V4L2_SLICED_TELETEXT_B		(0x0001)
12563329Syz147069 /* Video Program System, defined on ETS 300 231 */
12573329Syz147069 #define	V4L2_SLICED_VPS 		(0x0400)
12583329Syz147069 /* Closed Caption, defined on EIA-608 */
12593329Syz147069 #define	V4L2_SLICED_CAPTION_525 	(0x1000)
12603329Syz147069 /* Wide Screen System, defined on ITU-R BT1119.1 */
12613329Syz147069 #define	V4L2_SLICED_WSS_625		(0x4000)
12623329Syz147069 
12633329Syz147069 #define	V4L2_SLICED_VBI_525	(V4L2_SLICED_CAPTION_525)
12643329Syz147069 #define	V4L2_SLICED_VBI_625	(V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | \
12653329Syz147069 				V4L2_SLICED_WSS_625)
12663329Syz147069 
12673329Syz147069 
12683329Syz147069 struct v4l2_sliced_vbi_cap
12693329Syz147069 {
12703329Syz147069 	uint16_t   service_set;
12713329Syz147069 	/*
12723329Syz147069 	 * service_lines[0][...] specifies lines 0-23 (1-23 used) of the first
12733329Syz147069 	 * field
12743329Syz147069 	 * service_lines[1][...] specifies lines 0-23 (1-23 used) of the second
12753329Syz147069 	 * field
12763329Syz147069 	 * (equals frame lines 313-336 for 625 line video standards, 263-286
12773329Syz147069 	 * for 525 line standards)
12783329Syz147069 	 */
12793329Syz147069 	uint16_t   service_lines[2][24];
12803329Syz147069 	uint32_t   reserved[4];    /* must be 0 */
12813329Syz147069 };
12823329Syz147069 
12833329Syz147069 struct v4l2_sliced_vbi_data
12843329Syz147069 {
12853329Syz147069 	uint32_t   id;
12863329Syz147069 	uint32_t   field;	   /* 0: first field, 1: second field */
12873329Syz147069 	uint32_t   line;	   /* 1-23 */
12883329Syz147069 	uint32_t   reserved;	   /* must be 0 */
12893329Syz147069 	uint8_t    data[48];
12903329Syz147069 };
12913329Syz147069 #endif
12923329Syz147069 
12933329Syz147069 /*
12943329Syz147069  *	A G G R E G A T E   S T R U C T U R E S
12953329Syz147069  */
12963329Syz147069 
12973329Syz147069 /*
12983329Syz147069  * Stream data format
12993329Syz147069  */
13003329Syz147069 struct v4l2_format
13013329Syz147069 {
13023329Syz147069 	enum v4l2_buf_type type;
13033329Syz147069 
13043329Syz147069 	/*
13053329Syz147069 	 * Added for 64bits alignment, or, S_FMT ioctl will fail. Because
13063329Syz147069 	 * 32 bits app and 64bits driver will get different structure size
13073329Syz147069 	 * which cause the values of S_FMT are different. v4l2_window has
13083329Syz147069 	 * pointers which make v4l2_format structure has to be 64bit alignment.
13093329Syz147069 	 */
13103329Syz147069 	uint32_t pad;
13113329Syz147069 	union
13123329Syz147069 	{
13133329Syz147069 		struct v4l2_pix_format	pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */
13143329Syz147069 		struct v4l2_window	win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */
13153329Syz147069 		struct v4l2_vbi_format	vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */
13163329Syz147069 #if 1
13173329Syz147069 
13183329Syz147069 		/* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */
13193329Syz147069 		struct v4l2_sliced_vbi_format	sliced;
13203329Syz147069 #endif
13213329Syz147069 		uint8_t	raw_data[200];			 /* user-defined */
13223329Syz147069 	} fmt;
13233329Syz147069 };
13243329Syz147069 
13253329Syz147069 
13263329Syz147069 /*
13273329Syz147069  * Stream type-dependent parameters
13283329Syz147069  */
13293329Syz147069 struct v4l2_streamparm
13303329Syz147069 {
13313329Syz147069 	enum v4l2_buf_type type;
13323329Syz147069 	union
13333329Syz147069 	{
13343329Syz147069 		struct v4l2_captureparm	capture;
13353329Syz147069 		struct v4l2_outputparm	output;
13363329Syz147069 		uint8_t	raw_data[200];	/* user-defined */
13373329Syz147069 	} parm;
13383329Syz147069 };
13393329Syz147069 
13403329Syz147069 /*
13413329Syz147069  *	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
13423329Syz147069  *
13433329Syz147069  */
13443329Syz147069 #define	VIDIOC_QUERYCAP		_IOR('V',  0, struct v4l2_capability)
13453329Syz147069 #define	VIDIOC_RESERVED		_IO('V',  1)
13463329Syz147069 #define	VIDIOC_ENUM_FMT 	_IOWR('V',  2, struct v4l2_fmtdesc)
13473329Syz147069 #define	VIDIOC_G_FMT		_IOWR('V',  4, struct v4l2_format)
13483329Syz147069 #define	VIDIOC_S_FMT		_IOWR('V',  5, struct v4l2_format)
13493329Syz147069 #ifdef __KERNEL__
13503329Syz147069 #define	VIDIOC_G_MPEGCOMP	_IOR('V',  6, struct v4l2_mpeg_compression)
13513329Syz147069 #define	VIDIOC_S_MPEGCOMP	_IOW('V',  7, struct v4l2_mpeg_compression)
13523329Syz147069 #endif
13533329Syz147069 #define	VIDIOC_REQBUFS		_IOWR('V',  8, struct v4l2_requestbuffers)
13543329Syz147069 #define	VIDIOC_QUERYBUF		_IOWR('V',  9, struct v4l2_buffer)
13553329Syz147069 #define	VIDIOC_G_FBUF		_IOR('V', 10, struct v4l2_framebuffer)
13563329Syz147069 #define	VIDIOC_S_FBUF		_IOW('V', 11, struct v4l2_framebuffer)
13573329Syz147069 #define	VIDIOC_OVERLAY		_IOW('V', 14, int)
13583329Syz147069 #define	VIDIOC_QBUF		_IOWR('V', 15, struct v4l2_buffer)
13593329Syz147069 #define	VIDIOC_DQBUF		_IOWR('V', 17, struct v4l2_buffer)
13603329Syz147069 #define	VIDIOC_STREAMON		_IOW('V', 18, int)
13613329Syz147069 #define	VIDIOC_STREAMOFF	_IOW('V', 19, int)
13623329Syz147069 #define	VIDIOC_G_PARM		_IOWR('V', 21, struct v4l2_streamparm)
13633329Syz147069 #define	VIDIOC_S_PARM		_IOWR('V', 22, struct v4l2_streamparm)
13643329Syz147069 #define	VIDIOC_G_STD		_IOR('V', 23, v4l2_std_id)
13653329Syz147069 #define	VIDIOC_S_STD		_IOW('V', 24, v4l2_std_id)
13663329Syz147069 #define	VIDIOC_ENUMSTD		_IOWR('V', 25, struct v4l2_standard)
13673329Syz147069 #define	VIDIOC_ENUMINPUT	_IOWR('V', 26, struct v4l2_input)
13683329Syz147069 #define	VIDIOC_G_CTRL		_IOWR('V', 27, struct v4l2_control)
13693329Syz147069 #define	VIDIOC_S_CTRL		_IOWR('V', 28, struct v4l2_control)
13703329Syz147069 #define	VIDIOC_G_TUNER		_IOWR('V', 29, struct v4l2_tuner)
13713329Syz147069 #define	VIDIOC_S_TUNER		_IOW('V', 30, struct v4l2_tuner)
13723329Syz147069 #define	VIDIOC_G_AUDIO		_IOR('V', 33, struct v4l2_audio)
13733329Syz147069 #define	VIDIOC_S_AUDIO		_IOW('V', 34, struct v4l2_audio)
13743329Syz147069 #define	VIDIOC_QUERYCTRL	_IOWR('V', 36, struct v4l2_queryctrl)
13753329Syz147069 #define	VIDIOC_QUERYMENU	_IOWR('V', 37, struct v4l2_querymenu)
13763329Syz147069 #define	VIDIOC_G_INPUT		_IOR('V', 38, int)
13773329Syz147069 #define	VIDIOC_S_INPUT		_IOWR('V', 39, int)
13783329Syz147069 #define	VIDIOC_G_OUTPUT		_IOR('V', 46, int)
13793329Syz147069 #define	VIDIOC_S_OUTPUT		_IOWR('V', 47, int)
13803329Syz147069 #define	VIDIOC_ENUMOUTPUT	_IOWR('V', 48, struct v4l2_output)
13813329Syz147069 #define	VIDIOC_G_AUDOUT		_IOR('V', 49, struct v4l2_audioout)
13823329Syz147069 #define	VIDIOC_S_AUDOUT		_IOW('V', 50, struct v4l2_audioout)
13833329Syz147069 #define	VIDIOC_G_MODULATOR	_IOWR('V', 54, struct v4l2_modulator)
13843329Syz147069 #define	VIDIOC_S_MODULATOR	_IOW('V', 55, struct v4l2_modulator)
13853329Syz147069 #define	VIDIOC_G_FREQUENCY	_IOWR('V', 56, struct v4l2_frequency)
13863329Syz147069 #define	VIDIOC_S_FREQUENCY	_IOW('V', 57, struct v4l2_frequency)
13873329Syz147069 #define	VIDIOC_CROPCAP		_IOWR('V', 58, struct v4l2_cropcap)
13883329Syz147069 #define	VIDIOC_G_CROP		_IOWR('V', 59, struct v4l2_crop)
13893329Syz147069 #define	VIDIOC_S_CROP		_IOW('V', 60, struct v4l2_crop)
13903329Syz147069 #define	VIDIOC_G_JPEGCOMP	_IOR('V', 61, struct v4l2_jpegcompression)
13913329Syz147069 #define	VIDIOC_S_JPEGCOMP	_IOW('V', 62, struct v4l2_jpegcompression)
13923329Syz147069 #define	VIDIOC_QUERYSTD 	_IOR('V', 63, v4l2_std_id)
13933329Syz147069 #define	VIDIOC_TRY_FMT		_IOWR('V', 64, struct v4l2_format)
13943329Syz147069 #define	VIDIOC_ENUMAUDIO	_IOWR('V', 65, struct v4l2_audio)
13953329Syz147069 #define	VIDIOC_ENUMAUDOUT	_IOWR('V', 66, struct v4l2_audioout)
13963329Syz147069 #define	VIDIOC_G_PRIORITY	_IOR('V', 67, enum v4l2_priority)
13973329Syz147069 #define	VIDIOC_S_PRIORITY	_IOW('V', 68, enum v4l2_priority)
13983329Syz147069 #if 1
13993329Syz147069 #define	VIDIOC_G_SLICED_VBI_CAP _IOR('V', 69, struct v4l2_sliced_vbi_cap)
14003329Syz147069 #endif
14013329Syz147069 #define	VIDIOC_LOG_STATUS	_IO('V', 70)
14023329Syz147069 #define	VIDIOC_G_EXT_CTRLS	_IOWR('V', 71, struct v4l2_ext_controls)
14033329Syz147069 #define	VIDIOC_S_EXT_CTRLS	_IOWR('V', 72, struct v4l2_ext_controls)
14043329Syz147069 #define	VIDIOC_TRY_EXT_CTRLS	_IOWR('V', 73, struct v4l2_ext_controls)
14053329Syz147069 
14063329Syz147069 #ifdef __OLD_VIDIOC_
14073329Syz147069 /* for compatibility, will go away some day */
14083329Syz147069 #define	VIDIOC_OVERLAY_OLD	_IOWR('V', 14, int)
14093329Syz147069 #define	VIDIOC_S_PARM_OLD	_IOW('V', 22, struct v4l2_streamparm)
14103329Syz147069 #define	VIDIOC_S_CTRL_OLD	_IOW('V', 28, struct v4l2_control)
14113329Syz147069 #define	VIDIOC_G_AUDIO_OLD	_IOWR('V', 33, struct v4l2_audio)
14123329Syz147069 #define	VIDIOC_G_AUDOUT_OLD	_IOWR('V', 49, struct v4l2_audioout)
14133329Syz147069 #define	VIDIOC_CROPCAP_OLD	_IOR('V', 58, struct v4l2_cropcap)
14143329Syz147069 #endif
14153329Syz147069 
14163329Syz147069 #define	BASE_VIDIOC_PRIVATE	192		/* 192-255 are private */
14173329Syz147069 
14183329Syz147069 
14193329Syz147069 #ifdef	__cplusplus
14203329Syz147069 }
14213329Syz147069 #endif
14223329Syz147069 
14233329Syz147069 #endif /* __LINUX_VIDEODEV2_H */
14243329Syz147069 
14253329Syz147069 /*
14263329Syz147069  * Local variables:
14273329Syz147069  * c-basic-offset: 8
14283329Syz147069  * End:
14293329Syz147069  */
1430