14d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 24d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Video for Linux Two header file 34d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 44d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Copyright (C) 1999-2012 the contributors 54d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 64d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * This program is free software; you can redistribute it and/or modify 74d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * it under the terms of the GNU General Public License as published by 84d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * the Free Software Foundation; either version 2 of the License, or 94d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (at your option) any later version. 104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * This program is distributed in the hope that it will be useful, 124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * but WITHOUT ANY WARRANTY; without even the implied warranty of 134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * GNU General Public License for more details. 154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Alternatively you can redistribute this file under the terms of the 174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * BSD license as stated below: 184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Redistribution and use in source and binary forms, with or without 204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * modification, are permitted provided that the following conditions 214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * are met: 224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 1. Redistributions of source code must retain the above copyright 234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * notice, this list of conditions and the following disclaimer. 244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 2. Redistributions in binary form must reproduce the above copyright 254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * notice, this list of conditions and the following disclaimer in 264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * the documentation and/or other materials provided with the 274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * distribution. 284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 3. The names of its contributors may not be used to endorse or promote 294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * products derived from this software without specific prior written 304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * permission. 314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Header file for v4l or V4L2 drivers and applications 454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * with public API. 464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * All kernel-specific stuff were moved to media/v4l2-dev.h, so 474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * no #if __KERNEL tests are allowed here 484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * See http://linuxtv.org for more info 504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Author: Bill Dirks <bill@thedirks.org> 524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Justin Schoeman 534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Hans Verkuil <hverkuil@xs4all.nl> 544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * et al. 554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#ifndef _UAPI__LINUX_VIDEODEV2_H 574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define _UAPI__LINUX_VIDEODEV2_H 584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#ifndef __KERNEL__ 604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <sys/time.h> 614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif 624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/compiler.h> 634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/ioctl.h> 644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/types.h> 654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/v4l2-common.h> 664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/v4l2-controls.h> 674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Common stuff for both V4L1 and V4L2 704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Moved from videodev.h 714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDEO_MAX_FRAME 32 734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDEO_MAX_PLANES 8 744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M I S C E L L A N E O U S 774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Four-character-code (FOURCC) */ 804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define v4l2_fourcc(a, b, c, d)\ 814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24)) 824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * E N U M S 854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_field { 874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FIELD_ANY = 0, /* driver can choose from none, 884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin top, bottom, interlaced 894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin depending on whatever it thinks 904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin is approximate ... */ 914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FIELD_NONE = 1, /* this device has no fields ... */ 924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FIELD_TOP = 2, /* top field only */ 934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FIELD_BOTTOM = 3, /* bottom field only */ 944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */ 954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FIELD_SEQ_TB = 5, /* both fields sequential into one 964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin buffer, top-bottom order */ 974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FIELD_SEQ_BT = 6, /* same as above + bottom-top order */ 984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FIELD_ALTERNATE = 7, /* both fields alternating into 994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin separate buffers */ 1004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field 1014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin first and the top field is 1024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin transmitted first */ 1034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field 1044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin first and the bottom field is 1054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin transmitted first */ 1064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 1074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FIELD_HAS_TOP(field) \ 1084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin ((field) == V4L2_FIELD_TOP ||\ 1094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_INTERLACED ||\ 1104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_INTERLACED_TB ||\ 1114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_INTERLACED_BT ||\ 1124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_SEQ_TB ||\ 1134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_SEQ_BT) 1144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FIELD_HAS_BOTTOM(field) \ 1154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin ((field) == V4L2_FIELD_BOTTOM ||\ 1164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_INTERLACED ||\ 1174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_INTERLACED_TB ||\ 1184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_INTERLACED_BT ||\ 1194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_SEQ_TB ||\ 1204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_SEQ_BT) 1214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FIELD_HAS_BOTH(field) \ 1224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin ((field) == V4L2_FIELD_INTERLACED ||\ 1234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_INTERLACED_TB ||\ 1244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_INTERLACED_BT ||\ 1254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_SEQ_TB ||\ 1264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (field) == V4L2_FIELD_SEQ_BT) 1274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_buf_type { 1294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, 1304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, 1314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, 1324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_VBI_CAPTURE = 4, 1334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_VBI_OUTPUT = 5, 1344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, 1354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, 1364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#if 1 1374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* Experimental */ 1384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8, 1394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif 1404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9, 1414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10, 1424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* Deprecated, do not use */ 1434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_BUF_TYPE_PRIVATE = 0x80, 1444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 1454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TYPE_IS_MULTIPLANAR(type) \ 1474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE \ 1484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) 1494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TYPE_IS_OUTPUT(type) \ 1514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT \ 1524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE \ 1534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY \ 1544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY \ 1554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin || (type) == V4L2_BUF_TYPE_VBI_OUTPUT \ 1564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT) 1574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TYPE_IS_PRIVATE(type) \ 1594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin ((type) == V4L2_BUF_TYPE_PRIVATE) 1604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_tuner_type { 1624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_TUNER_RADIO = 1, 1634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_TUNER_ANALOG_TV = 2, 1644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_TUNER_DIGITAL_TV = 3, 1654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 1664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_memory { 1684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_MEMORY_MMAP = 1, 1694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_MEMORY_USERPTR = 2, 1704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_MEMORY_OVERLAY = 3, 1714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_MEMORY_DMABUF = 4, 1724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 1734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* see also http://vektor.theorem.ca/graphics/ycbcr/ */ 1754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_colorspace { 1764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* ITU-R 601 -- broadcast NTSC/PAL */ 1774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_COLORSPACE_SMPTE170M = 1, 1784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* 1125-Line (US) HDTV */ 1804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_COLORSPACE_SMPTE240M = 2, 1814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* HD and modern captures. */ 1834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_COLORSPACE_REC709 = 3, 1844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */ 1864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_COLORSPACE_BT878 = 4, 1874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* These should be useful. Assume 601 extents. */ 1894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_COLORSPACE_470_SYSTEM_M = 5, 1904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_COLORSPACE_470_SYSTEM_BG = 6, 1914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* I know there will be cameras that send this. So, this is 1934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * unspecified chromaticities and full 0-255 on each of the 1944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y'CbCr components 1954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 1964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_COLORSPACE_JPEG = 7, 1974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* For RGB colourspaces, this is probably a good start. */ 1994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_COLORSPACE_SRGB = 8, 2004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_priority { 2034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_PRIORITY_UNSET = 0, /* not initialized */ 2044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_PRIORITY_BACKGROUND = 1, 2054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_PRIORITY_INTERACTIVE = 2, 2064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_PRIORITY_RECORD = 3, 2074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE, 2084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_rect { 2114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 left; 2124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 top; 2134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 width; 2144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 height; 2154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_fract { 2184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 numerator; 2194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 denominator; 2204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** 2234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP 2244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 2254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @driver: name of the driver module (e.g. "bttv") 2264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @card: name of the card (e.g. "Hauppauge WinTV") 2274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bus_info: name of the bus (e.g. "PCI:" + pci_name(pci_dev) ) 2284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @version: KERNEL_VERSION 2294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @capabilities: capabilities of the physical device as a whole 2304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @device_caps: capabilities accessed via this particular device (node) 2314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved: reserved fields for future extensions 2324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 2334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_capability { 2344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 driver[16]; 2354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 card[32]; 2364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 bus_info[32]; 2374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 version; 2384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capabilities; 2394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 device_caps; 2404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[3]; 2414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Values for 'capabilities' field */ 2444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_CAPTURE 0x00000001 /* Is a video capture device */ 2454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_OUTPUT 0x00000002 /* Is a video output device */ 2464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */ 2474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a raw VBI capture device */ 2484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a raw VBI output device */ 2494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040 /* Is a sliced VBI capture device */ 2504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */ 2514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ 2524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */ 2534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */ 2544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_RDS_OUTPUT 0x00000800 /* Is an RDS encoder */ 2554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Is a video capture device that supports multiplanar formats */ 2574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000 2584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Is a video output device that supports multiplanar formats */ 2594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000 2604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Is a video mem-to-mem device that supports multiplanar formats */ 2614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_M2M_MPLANE 0x00004000 2624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Is a video mem-to-mem device */ 2634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_M2M 0x00008000 2644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ 2664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ 2674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ 2684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */ 2694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ 2714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ 2724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */ 2734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_DEVICE_CAPS 0x80000000 /* sets device capabilities field */ 2754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 2774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V I D E O I M A G E F O R M A T 2784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 2794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_pix_format { 2804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 width; 2814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 height; 2824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 pixelformat; 2834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 field; /* enum v4l2_field */ 2844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 bytesperline; /* for padding, zero if unused */ 2854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 sizeimage; 2864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 colorspace; /* enum v4l2_colorspace */ 2874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 priv; /* private data, depends on pixelformat */ 2884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Pixel format FOURCC depth Description */ 2914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* RGB formats */ 2934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ 2944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ 2954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ 2964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ 2974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ 2984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ 2994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */ 3004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ 3014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ 3024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ 3034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ 3044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Grey formats */ 3064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ 3074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */ 3084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ 3094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ 3104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ 3114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ 3124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Grey bit-packed formats */ 3144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ 3154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Palette formats */ 3174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ 3184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Chrominance formats */ 3204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ') /* 8 UV 4:4 */ 3214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Luminance+Chrominance formats */ 3234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */ 3244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ 3254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ 3264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ 3274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ 3284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */ 3294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */ 3304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ 3314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 16 YVU411 planar */ 3324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P') /* 12 YUV 4:1:1 */ 3334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4') /* 16 xxxxyyyy uuuuvvvv */ 3344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ 3354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ 3364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ 3374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ 3384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ 3394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ 3404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ 3414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ 3424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* two planes -- one Y, one Cr + Cb interleaved */ 3444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ 3454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */ 3464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ 3474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ 3484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */ 3494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */ 3504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* two non contiguous planes - one Y, one Cr + Cb interleaved */ 3524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ 3534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */ 3544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */ 3554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 macroblocks */ 3564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* three non contiguous planes - Y, Cb, Cr */ 3584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */ 3594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12 YVU420 planar */ 3604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */ 3624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ 3634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ 3644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ 3654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SRGGB8 v4l2_fourcc('R', 'G', 'G', 'B') /* 8 RGRG.. GBGB.. */ 3664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0') /* 10 BGBG.. GRGR.. */ 3674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10 GBGB.. RGRG.. */ 3684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10 GRGR.. BGBG.. */ 3694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10 RGRG.. GBGB.. */ 3704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12 BGBG.. GRGR.. */ 3714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */ 3724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */ 3734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */ 3744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* 10bit raw bayer a-law compressed to 8 bits */ 3754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8') 3764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8') 3774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8') 3784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8') 3794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* 10bit raw bayer DPCM compressed to 8 bits */ 3804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8') 3814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8') 3824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0') 3834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8') 3844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* 3854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 10bit raw bayer, expanded to 16 bits 3864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... 3874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 3884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ 3894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* compressed formats */ 3914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG */ 3924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG */ 3934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd') /* 1394 */ 3944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */ 3954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */ 3964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */ 3974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */ 3984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3') /* H263 */ 3994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES */ 4004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES */ 4014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 ES */ 4024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid */ 4034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */ 4044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */ 4054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_DIVX_311 v4l2_fourcc('D', 'I', 'V', '3') /* DIVX311 */ 4064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_DIVX v4l2_fourcc('D', 'I', 'V', 'X') /* DIVX */ 4074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */ 4084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* for HEVC stream */ 4094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_HEVC_HYBRID v4l2_fourcc('H', 'V', 'C', 'H') 4104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Vendor-specific formats */ 4124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ 4134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ 4144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ 4154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */ 4164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */ 4174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */ 4184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */ 4194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */ 4204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */ 4214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SPCA508 v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */ 4224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */ 4234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_PAC207 v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */ 4244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ 4254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0') /* compressed RGGB bayer */ 4264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */ 4274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ 4284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ 4294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ 4304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ 4314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STV0680 v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */ 4324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_TM6000 v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */ 4334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */ 4344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */ 4354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */ 4364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */ 4374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ 4384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_COMB v4l2_fourcc('S', 'T', 'C', 'M') /* Composite stats */ 4394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_AE v4l2_fourcc('S', 'T', 'A', 'E') /* AEC stats */ 4414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_AF v4l2_fourcc('S', 'T', 'A', 'F') /* AF stats */ 4424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_AWB v4l2_fourcc('S', 'T', 'W', 'B') /* AWB stats */ 4434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_IHST v4l2_fourcc('I', 'H', 'S', 'T') /* IHIST stats */ 4444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_CS v4l2_fourcc('S', 'T', 'C', 'S') /* Column count stats */ 4454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_RS v4l2_fourcc('S', 'T', 'R', 'S') /* Row count stats */ 4464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_BG v4l2_fourcc('S', 'T', 'B', 'G') /* Bayer Grid stats */ 4474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_BF v4l2_fourcc('S', 'T', 'B', 'F') /* Bayer focus stats */ 4484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_BHST v4l2_fourcc('B', 'H', 'S', 'T') /* Bayer hist stats */ 4494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 4514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * F O R M A T E N U M E R A T I O N 4524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 4534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_fmtdesc { 4544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; /* Format number */ 4554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_buf_type */ 4564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 4574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 description[32]; /* Description string */ 4584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 pixelformat; /* Format fourcc */ 4594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[4]; 4604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 4614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FMT_FLAG_COMPRESSED 0x0001 4634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FMT_FLAG_EMULATED 0x0002 4644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#if 1 4664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* Experimental Frame Size and frame rate enumeration */ 4674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 4684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * F R A M E S I Z E E N U M E R A T I O N 4694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 4704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_frmsizetypes { 4714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FRMSIZE_TYPE_DISCRETE = 1, 4724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FRMSIZE_TYPE_CONTINUOUS = 2, 4734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FRMSIZE_TYPE_STEPWISE = 3, 4744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 4754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frmsize_discrete { 4774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 width; /* Frame width [pixel] */ 4784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 height; /* Frame height [pixel] */ 4794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 4804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frmsize_stepwise { 4824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 min_width; /* Minimum frame width [pixel] */ 4834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 max_width; /* Maximum frame width [pixel] */ 4844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 step_width; /* Frame width step size [pixel] */ 4854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 min_height; /* Minimum frame height [pixel] */ 4864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 max_height; /* Maximum frame height [pixel] */ 4874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 step_height; /* Frame height step size [pixel] */ 4884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 4894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frmsizeenum { 4914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; /* Frame size number */ 4924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 pixel_format; /* Pixel format */ 4934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* Frame size type the device supports. */ 4944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { /* Frame size */ 4964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_frmsize_discrete discrete; 4974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_frmsize_stepwise stepwise; 4984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 4994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[2]; /* Reserved space for future use */ 5014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 5024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 5044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * F R A M E R A T E E N U M E R A T I O N 5054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 5064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_frmivaltypes { 5074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FRMIVAL_TYPE_DISCRETE = 1, 5084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FRMIVAL_TYPE_CONTINUOUS = 2, 5094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_FRMIVAL_TYPE_STEPWISE = 3, 5104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 5114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frmival_stepwise { 5134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_fract min; /* Minimum frame interval [s] */ 5144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_fract max; /* Maximum frame interval [s] */ 5154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_fract step; /* Frame interval step size [s] */ 5164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 5174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frmivalenum { 5194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; /* Frame format index */ 5204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 pixel_format; /* Pixel format */ 5214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 width; /* Frame width */ 5224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 height; /* Frame height */ 5234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* Frame interval type the device supports. */ 5244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { /* Frame interval */ 5264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_fract discrete; 5274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_frmival_stepwise stepwise; 5284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 5294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[2]; /* Reserved space for future use */ 5314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 5324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif 5334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 5354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * T I M E C O D E 5364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 5374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_timecode { 5384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; 5394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 5404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 frames; 5414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 seconds; 5424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 minutes; 5434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 hours; 5444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 userbits[4]; 5454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 5464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Type */ 5484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_TYPE_24FPS 1 5494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_TYPE_25FPS 2 5504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_TYPE_30FPS 3 5514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_TYPE_50FPS 4 5524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_TYPE_60FPS 5 5534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags */ 5554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_FLAG_DROPFRAME 0x0001 /* "drop-frame" mode */ 5564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_FLAG_COLORFRAME 0x0002 5574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_USERBITS_field 0x000C 5584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_USERBITS_USERDEFINED 0x0000 5594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_USERBITS_8BITCHARS 0x0008 5604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* The above is based on SMPTE timecodes */ 5614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_jpegcompression { 5634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int quality; 5644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int APPn; /* Number of APP segment to be written, 5664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * must be 0..15 */ 5674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int APP_len; /* Length of data in JPEG APPn segment */ 5684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin char APP_data[60]; /* Data in the JPEG APPn segment. */ 5694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int COM_len; /* Length of data in JPEG COM segment */ 5714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin char COM_data[60]; /* Data in JPEG COM segment */ 5724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 jpeg_markers; /* Which markers should go into the JPEG 5744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * output. Unless you exactly know what 5754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * you do, leave them untouched. 5764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Inluding less markers will make the 5774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * resulting code smaller, but there will 5784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * be fewer applications which can read it. 5794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * The presence of the APP and COM marker 5804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * is influenced by APP_len and COM_len 5814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * ONLY, not by this property! */ 5824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */ 5844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */ 5854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_JPEG_MARKER_DRI (1<<5) /* Define Restart Interval */ 5864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_JPEG_MARKER_COM (1<<6) /* Comment segment */ 5874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_JPEG_MARKER_APP (1<<7) /* App segment, driver will 5884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * allways use APP0 */ 5894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 5904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 5924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M E M O R Y - M A P P I N G B U F F E R S 5934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 5944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_requestbuffers { 5954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 count; 5964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_buf_type */ 5974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 memory; /* enum v4l2_memory */ 5984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[2]; 5994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 6004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 6014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** 6024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_plane - plane info for multi-planar buffers 6034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bytesused: number of bytes occupied by data in the plane (payload) 6044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @length: size of this plane (NOT the payload) in bytes 6054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @mem_offset: when memory in the associated struct v4l2_buffer is 6064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V4L2_MEMORY_MMAP, equals the offset from the start of 6074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * the device memory for this plane (or is a "cookie" that 6084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * should be passed to mmap() called on the video node) 6094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @userptr: when memory is V4L2_MEMORY_USERPTR, a userspace pointer 6104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * pointing to this plane 6114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @fd: when memory is V4L2_MEMORY_DMABUF, a userspace file 6124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * descriptor associated with this plane 6134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @data_offset: offset in the plane to the start of data; usually 0, 6144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * unless there is a header in front of the data 6154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 6164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer 6174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * with two planes can have one plane for Y, and another for interleaved CbCr 6184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * components. Each plane can reside in a separate memory buffer, or even in 6194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * a completely separate memory node (e.g. in embedded devices). 6204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 6214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_plane { 6224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 bytesused; 6234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 length; 6244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 6254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 mem_offset; 6264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned long userptr; 6274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 fd; 6284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } m; 6294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 data_offset; 6304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[11]; 6314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 6324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 6334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** 6344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_buffer - video buffer info 6354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @index: id number of the buffer 6364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type: enum v4l2_buf_type; buffer type (type == *_MPLANE for 6374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * multiplanar buffers); 6384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bytesused: number of bytes occupied by data in the buffer (payload); 6394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * unused (set to 0) for multiplanar buffers 6404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @flags: buffer informational flags 6414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @field: enum v4l2_field; field order of the image in the buffer 6424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @timestamp: frame timestamp 6434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @timecode: frame timecode 6444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @sequence: sequence count of this frame 6454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @memory: enum v4l2_memory; the method, in which the actual video data is 6464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * passed 6474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @offset: for non-multiplanar buffers with memory == V4L2_MEMORY_MMAP; 6484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * offset from the start of the device memory for this plane, 6494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (or a "cookie" that should be passed to mmap() as offset) 6504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @userptr: for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR; 6514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * a userspace pointer pointing to this buffer 6524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @fd: for non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF; 6534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * a userspace file descriptor associated with this buffer 6544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @planes: for multiplanar buffers; userspace pointer to the array of plane 6554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * info structs for this buffer 6564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @length: size in bytes of the buffer (NOT its payload) for single-plane 6574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * buffers (when type != *_MPLANE); number of elements in the 6584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * planes array for multi-plane buffers 6594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @input: input number from which the video data has has been captured 6604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 6614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Contains data exchanged by application and driver using one of the Streaming 6624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * I/O methods. 6634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 6644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_buffer { 6654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 6664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; 6674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 bytesused; 6684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 6694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 field; 6704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct timeval timestamp; 6714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_timecode timecode; 6724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 sequence; 6734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 6744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* memory location */ 6754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 memory; 6764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 6774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 offset; 6784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned long userptr; 6794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_plane *planes; 6804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 fd; 6814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } m; 6824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 length; 6834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved2; 6844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved; 6854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 6864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 6874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for 'flags' field */ 6884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_MAPPED 0x0001 /* Buffer is mapped (flag) */ 6894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_QUEUED 0x0002 /* Buffer is queued for processing */ 6904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_DONE 0x0004 /* Buffer is ready */ 6914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */ 6924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */ 6934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */ 6944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Buffer is ready, but the data contained within is corrupted. */ 6954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_ERROR 0x0040 6964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */ 6974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_PREPARED 0x0400 /* Buffer is prepared for queuing */ 6984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Cache handling flags */ 6994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x0800 7004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x1000 7014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Timestamp type */ 7024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_MASK 0xe000 7034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x0000 7044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x2000 7054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x4000 7064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Vendor extensions */ 7074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_CODECCONFIG 0x10000 7084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_EOSEQ 0x20000 7094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_TIMESTAMP_INVALID 0x40000 7104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_IDRFRAME 0x80000 /*Image is a IDR-frame*/ 7114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_DECODEONLY 0x100000 7124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_DATA_CORRUPT 0x200000 7134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_DROP_FRAME 0x400000 7144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_INPUT_UNSUPPORTED 0x800000 7154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_EOS 0x1000000 7164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_TS_DISCONTINUITY 0x2000000 7174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_TS_ERROR 0x4000000 7184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_READONLY 0x8000000 7194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MSM_VIDC_BUF_START_CODE_NOT_FOUND 0x10000000 7204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MSM_BUF_FLAG_YUV_601_709_CLAMP 0x20000000 7214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MSM_BUF_FLAG_MBAFF 0x40000000 7224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 7234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** 7244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor 7254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 7264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @index: id number of the buffer 7274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type: enum v4l2_buf_type; buffer type (type == *_MPLANE for 7284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * multiplanar buffers); 7294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @plane: index of the plane to be exported, 0 for single plane queues 7304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @flags: flags for newly created file, currently only O_CLOEXEC is 7314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * supported, refer to manual of open syscall for more details 7324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @fd: file descriptor associated with DMABUF (set by driver) 7334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 7344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Contains data used for exporting a video buffer as DMABUF file descriptor. 7354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF 7364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (identical to the cookie used to mmap() the buffer to userspace). All 7374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * reserved fields must be set to zero. The field reserved0 is expected to 7384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * become a structure 'type' allowing an alternative layout of the structure 7394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * content. Therefore this field should not be used for any other extensions. 7404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 7414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_exportbuffer { 7424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_buf_type */ 7434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 7444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 plane; 7454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 7464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 fd; 7474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[11]; 7484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 7494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 7504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 7514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * O V E R L A Y P R E V I E W 7524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 7534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_framebuffer { 7544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capability; 7554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 7564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* FIXME: in theory we should pass something like PCI device + memory 7574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * region + offset instead of some physical address */ 7584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin void *base; 7594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_pix_format fmt; 7604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 7614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for the 'capability' field. Read only */ 7624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001 7634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_CHROMAKEY 0x0002 7644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004 7654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008 7664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010 7674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020 7684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040 7694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080 7704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for the 'flags' field. */ 7714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_PRIMARY 0x0001 7724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_OVERLAY 0x0002 7734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_CHROMAKEY 0x0004 7744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008 7754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010 7764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020 7774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040 7784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 7794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_clip { 7804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_rect c; 7814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_clip __user *next; 7824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 7834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 7844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_window { 7854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_rect w; 7864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 field; /* enum v4l2_field */ 7874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 chromakey; 7884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_clip __user *clips; 7894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 clipcount; 7904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin void __user *bitmap; 7914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 global_alpha; 7924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 7934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 7944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 7954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * C A P T U R E P A R A M E T E R S 7964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 7974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_captureparm { 7984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capability; /* Supported modes */ 7994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capturemode; /* Current mode */ 8004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_fract timeperframe; /* Time per frame in seconds */ 8014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 extendedmode; /* Driver-specific extensions */ 8024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 readbuffers; /* # of buffers for read */ 8034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[4]; 8044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 8054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for 'capability' and 'capturemode' fields */ 8074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MODE_HIGHQUALITY 0x0001 /* High quality imaging mode */ 8084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_TIMEPERFRAME 0x1000 /* timeperframe field is supported */ 8094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_QCOM_FRAMESKIP 0x2000 /* frame skipping is supported */ 8104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_qcom_frameskip { 8124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u64 maxframeinterval; 8134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 fpsvariance; 8144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 8154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_outputparm { 8174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capability; /* Supported modes */ 8184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 outputmode; /* Current mode */ 8194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_fract timeperframe; /* Time per frame in seconds */ 8204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 extendedmode; /* Driver-specific extensions */ 8214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 writebuffers; /* # of buffers for write */ 8224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[4]; 8234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 8244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 8264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * I N P U T I M A G E C R O P P I N G 8274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 8284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_cropcap { 8294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_buf_type */ 8304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_rect bounds; 8314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_rect defrect; 8324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_fract pixelaspect; 8334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 8344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_crop { 8364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_buf_type */ 8374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_rect c; 8384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 8394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** 8414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_selection - selection info 8424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type: buffer type (do not use *_MPLANE types) 8434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @target: Selection target, used to choose one of possible rectangles; 8444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * defined in v4l2-common.h; V4L2_SEL_TGT_* . 8454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @flags: constraints flags, defined in v4l2-common.h; V4L2_SEL_FLAG_*. 8464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @r: coordinates of selection window 8474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved: for future use, rounds structure size to 64 bytes, set to zero 8484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 8494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Hardware may use multiple helper windows to process a video stream. 8504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * The structure is used to exchange this selection areas between 8514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * an application and a driver. 8524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 8534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_selection { 8544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; 8554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 target; 8564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 8574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_rect r; 8584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[9]; 8594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 8604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 8634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * A N A L O G V I D E O S T A N D A R D 8644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 8654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjintypedef __u64 v4l2_std_id; 8674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* one bit for each */ 8694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001) 8704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002) 8714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004) 8724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008) 8734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010) 8744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020) 8754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040) 8764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080) 8774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100) 8794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200) 8804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400) 8814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800) 8824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000) /* BTSC */ 8844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000) /* EIA-J */ 8854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000) 8864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000) /* FM A2 */ 8874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000) 8894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000) 8904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000) 8914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000) 8924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000) 8934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000) 8944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000) 8954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000) 8964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 8974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* ATSC/HDTV */ 8984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000) 8994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000) 9004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 9014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* FIXME: 9024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin Although std_id is 64 bits, there is an issue on PPC32 architecture that 9034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding 9044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin this value to 32 bits. 9054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide), 9064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin it should work fine. However, if needed to add more than two standards, 9074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin v4l2-common.c should be fixed. 9084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 9094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 9104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 9114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Some macros to merge video standards in order to make live easier for the 9124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * drivers and V4L2 applications 9134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 9144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 9154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 9164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * "Common" NTSC/M - It should be noticed that V4L2_STD_NTSC_443 is 9174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Missing here. 9184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 9194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\ 9204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_NTSC_M_JP |\ 9214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_NTSC_M_KR) 9224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Secam macros */ 9234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\ 9244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_K |\ 9254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_K1) 9264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* All Secam Standards */ 9274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\ 9284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_G |\ 9294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_H |\ 9304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_DK |\ 9314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_L |\ 9324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_LC) 9334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* PAL macros */ 9344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\ 9354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_B1 |\ 9364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_G) 9374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\ 9384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_D1 |\ 9394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_K) 9404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 9414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * "Common" PAL - This macro is there to be compatible with the old 9424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V4L1 concept of "PAL": /BGDKHI. 9434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Several PAL standards are mising here: /M, /N and /Nc 9444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 9454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\ 9464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_DK |\ 9474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_H |\ 9484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_I) 9494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Chroma "agnostic" standards */ 9504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_B (V4L2_STD_PAL_B |\ 9514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_B1 |\ 9524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_B) 9534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_G (V4L2_STD_PAL_G |\ 9544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_G) 9554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_H (V4L2_STD_PAL_H |\ 9564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_H) 9574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_L (V4L2_STD_SECAM_L |\ 9584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_LC) 9594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_GH (V4L2_STD_G |\ 9604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_H) 9614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_DK (V4L2_STD_PAL_DK |\ 9624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM_DK) 9634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_BG (V4L2_STD_B |\ 9644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_G) 9654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_MN (V4L2_STD_PAL_M |\ 9664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_N |\ 9674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_Nc |\ 9684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_NTSC) 9694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 9704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Standards where MTS/BTSC stereo could be found */ 9714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_MTS (V4L2_STD_NTSC_M |\ 9724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_M |\ 9734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_N |\ 9744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_Nc) 9754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 9764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Standards for Countries with 60Hz Line frequency */ 9774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\ 9784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_60 |\ 9794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_NTSC |\ 9804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_NTSC_443) 9814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Standards for Countries with 50Hz Line frequency */ 9824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_625_50 (V4L2_STD_PAL |\ 9834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_N |\ 9844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_PAL_Nc |\ 9854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_SECAM) 9864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 9874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\ 9884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_ATSC_16_VSB) 9894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Macros with none and all analog standards */ 9904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_UNKNOWN 0 9914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_ALL (V4L2_STD_525_60 |\ 9924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_STD_625_50) 9934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 9944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_standard { 9954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 9964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin v4l2_std_id id; 9974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 name[24]; 9984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_fract frameperiod; /* Frames, not fields */ 9994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 framelines; 10004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[4]; 10014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 10024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 10034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 10044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * D V B T T I M I N G S 10054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 10064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 10074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** struct v4l2_bt_timings - BT.656/BT.1120 timing data 10084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @width: total width of the active video in pixels 10094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @height: total height of the active video in lines 10104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @interlaced: Interlaced or progressive 10114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @polarities: Positive or negative polarities 10124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @pixelclock: Pixel clock in HZ. Ex. 74.25MHz->74250000 10134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @hfrontporch:Horizontal front porch in pixels 10144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @hsync: Horizontal Sync length in pixels 10154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @hbackporch: Horizontal back porch in pixels 10164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @vfrontporch:Vertical front porch in lines 10174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @vsync: Vertical Sync length in lines 10184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @vbackporch: Vertical back porch in lines 10194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @il_vfrontporch:Vertical front porch for the even field 10204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (aka field 2) of interlaced field formats 10214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @il_vsync: Vertical Sync length for the even field 10224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (aka field 2) of interlaced field formats 10234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @il_vbackporch:Vertical back porch for the even field 10244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (aka field 2) of interlaced field formats 10254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @standards: Standards the timing belongs to 10264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @flags: Flags 10274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved: Reserved fields, must be zeroed. 10284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 10294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * A note regarding vertical interlaced timings: height refers to the total 10304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * height of the active video frame (= two fields). The blanking timings refer 10314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * to the blanking of each field. So the height of the total frame is 10324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * calculated as follows: 10334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 10344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * tot_height = height + vfrontporch + vsync + vbackporch + 10354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * il_vfrontporch + il_vsync + il_vbackporch 10364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 10374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * The active height of each field is height / 2. 10384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 10394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_bt_timings { 10404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 width; 10414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 height; 10424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 interlaced; 10434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 polarities; 10444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u64 pixelclock; 10454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 hfrontporch; 10464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 hsync; 10474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 hbackporch; 10484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 vfrontporch; 10494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 vsync; 10504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 vbackporch; 10514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 il_vfrontporch; 10524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 il_vsync; 10534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 il_vbackporch; 10544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 standards; 10554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 10564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[14]; 10574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 10584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 10594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Interlaced or progressive format */ 10604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_PROGRESSIVE 0 10614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_INTERLACED 1 10624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 10634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Polarities. If bit is not set, it is assumed to be negative polarity */ 10644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_VSYNC_POS_POL 0x00000001 10654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_HSYNC_POS_POL 0x00000002 10664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 10674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Timings standards */ 10684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_STD_CEA861 (1 << 0) /* CEA-861 Digital TV Profile */ 10694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_STD_DMT (1 << 1) /* VESA Discrete Monitor Timings */ 10704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_STD_CVT (1 << 2) /* VESA Coordinated Video Timings */ 10714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_STD_GTF (1 << 3) /* VESA Generalized Timings Formula */ 10724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 10734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags */ 10744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 10754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* CVT/GTF specific: timing uses reduced blanking (CVT) or the 'Secondary 10764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin GTF' curve (GTF). In both cases the horizontal and/or vertical blanking 10774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin intervals are reduced, allowing a higher resolution over the same 10784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin bandwidth. This is a read-only flag. */ 10794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_FL_REDUCED_BLANKING (1 << 0) 10804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* CEA-861 specific: set for CEA-861 formats with a framerate of a multiple 10814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin of six. These formats can be optionally played at 1 / 1.001 speed. 10824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin This is a read-only flag. */ 10834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_FL_CAN_REDUCE_FPS (1 << 1) 10844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* CEA-861 specific: only valid for video transmitters, the flag is cleared 10854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin by receivers. 10864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin If the framerate of the format is a multiple of six, then the pixelclock 10874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin used to set up the transmitter is divided by 1.001 to make it compatible 10884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin with 60 Hz based standards such as NTSC and PAL-M that use a framerate of 10894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 29.97 Hz. Otherwise this flag is cleared. If the transmitter can't generate 10904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin such frequencies, then the flag will also be cleared. */ 10914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_FL_REDUCED_FPS (1 << 2) 10924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Specific to interlaced formats: if set, then field 1 is really one half-line 10934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin longer and field 2 is really one half-line shorter, so each field has 10944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin exactly the same number of half-lines. Whether half-lines can be detected 10954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin or used depends on the hardware. */ 10964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_FL_HALF_LINE (1 << 3) 10974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 10984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 10994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** struct v4l2_dv_timings - DV timings 11004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type: the type of the timings 11014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bt: BT656/1120 timings 11024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 11034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dv_timings { 11044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; 11054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 11064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_bt_timings bt; 11074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[32]; 11084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 11094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 11104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Values for the type field */ 11124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_656_1120 0 /* BT.656/1120 timing type */ 11134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** struct v4l2_enum_dv_timings - DV timings enumeration 11164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @index: enumeration index 11174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved: must be zeroed 11184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @timings: the timings for the given index 11194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 11204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_enum_dv_timings { 11214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 11224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[3]; 11234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_dv_timings timings; 11244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 11254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** struct v4l2_bt_timings_cap - BT.656/BT.1120 timing capabilities 11274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @min_width: width in pixels 11284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @max_width: width in pixels 11294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @min_height: height in lines 11304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @max_height: height in lines 11314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @min_pixelclock: Pixel clock in HZ. Ex. 74.25MHz->74250000 11324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @max_pixelclock: Pixel clock in HZ. Ex. 74.25MHz->74250000 11334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @standards: Supported standards 11344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @capabilities: Supported capabilities 11354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved: Must be zeroed 11364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 11374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_bt_timings_cap { 11384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 min_width; 11394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 max_width; 11404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 min_height; 11414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 max_height; 11424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u64 min_pixelclock; 11434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u64 max_pixelclock; 11444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 standards; 11454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capabilities; 11464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[16]; 11474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 11484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Supports interlaced formats */ 11504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_CAP_INTERLACED (1 << 0) 11514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Supports progressive formats */ 11524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_CAP_PROGRESSIVE (1 << 1) 11534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Supports CVT/GTF reduced blanking */ 11544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_CAP_REDUCED_BLANKING (1 << 2) 11554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Supports custom formats */ 11564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_CAP_CUSTOM (1 << 3) 11574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** struct v4l2_dv_timings_cap - DV timings capabilities 11594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type: the type of the timings (same as in struct v4l2_dv_timings) 11604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bt: the BT656/1120 timings capabilities 11614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 11624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dv_timings_cap { 11634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; 11644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[3]; 11654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 11664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_bt_timings_cap bt; 11674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 raw_data[32]; 11684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 11694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 11704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 11734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V I D E O I N P U T S 11744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 11754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_input { 11764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; /* Which input */ 11774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 name[32]; /* Label */ 11784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* Type of input */ 11794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 audioset; /* Associated audios (bitfield) */ 11804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 tuner; /* enum v4l2_tuner_type */ 11814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin v4l2_std_id std; 11824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 status; 11834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capabilities; 11844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[3]; 11854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 11864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Values for the 'type' field */ 11884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_INPUT_TYPE_TUNER 1 11894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_INPUT_TYPE_CAMERA 2 11904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* field 'status' - general */ 11924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_POWER 0x00000001 /* Attached device is off */ 11934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_SIGNAL 0x00000002 11944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_COLOR 0x00000004 11954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 11964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* field 'status' - sensor orientation */ 11974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* If sensor is mounted upside down set both bits */ 11984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_HFLIP 0x00000010 /* Frames are flipped horizontally */ 11994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_VFLIP 0x00000020 /* Frames are flipped vertically */ 12004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* field 'status' - analog */ 12024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_H_LOCK 0x00000100 /* No horizontal sync lock */ 12034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_COLOR_KILL 0x00000200 /* Color killer is active */ 12044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* field 'status' - digital */ 12064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_SYNC 0x00010000 /* No synchronization lock */ 12074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_EQU 0x00020000 /* No equalizer lock */ 12084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_CARRIER 0x00040000 /* Carrier recovery failed */ 12094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* field 'status' - VCR and set-top box */ 12114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_MACROVISION 0x01000000 /* Macrovision detected */ 12124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_ACCESS 0x02000000 /* Conditional access denied */ 12134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant */ 12144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* capabilities flags */ 12164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ 12174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS /* For compatibility */ 12184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */ 12194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 12214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V I D E O O U T P U T S 12224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 12234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_output { 12244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; /* Which output */ 12254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 name[32]; /* Label */ 12264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* Type of output */ 12274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 audioset; /* Associated audios (bitfield) */ 12284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 modulator; /* Associated modulator */ 12294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin v4l2_std_id std; 12304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capabilities; 12314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[3]; 12324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 12334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Values for the 'type' field */ 12344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUTPUT_TYPE_MODULATOR 1 12354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUTPUT_TYPE_ANALOG 2 12364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3 12374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* capabilities flags */ 12394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUT_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ 12404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */ 12414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */ 12424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 12444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * C O N T R O L S 12454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 12464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_control { 12474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 id; 12484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 value; 12494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 12504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_ext_control { 12524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 id; 12534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 size; 12544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved2[1]; 12554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 12564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 value; 12574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s64 value64; 12584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin char *string; 12594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 12604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 12614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_ext_controls { 12634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 ctrl_class; 12644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 count; 12654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 error_idx; 12664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[2]; 12674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_ext_control *controls; 12684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 12694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_ID_MASK (0x0fffffff) 12714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) 12724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) 12734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_ctrl_type { 12754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_CTRL_TYPE_INTEGER = 1, 12764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_CTRL_TYPE_BOOLEAN = 2, 12774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_CTRL_TYPE_MENU = 3, 12784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_CTRL_TYPE_BUTTON = 4, 12794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_CTRL_TYPE_INTEGER64 = 5, 12804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_CTRL_TYPE_CTRL_CLASS = 6, 12814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_CTRL_TYPE_STRING = 7, 12824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_CTRL_TYPE_BITMASK = 8, 12834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin V4L2_CTRL_TYPE_INTEGER_MENU = 9, 12844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 12854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ 12874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_queryctrl { 12884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 id; 12894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_ctrl_type */ 12904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 name[32]; /* Whatever */ 12914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 minimum; /* Note signedness */ 12924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 maximum; 12934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 step; 12944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 default_value; 12954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 12964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[2]; 12974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 12984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 12994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */ 13004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_querymenu { 13014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 id; 13024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 13034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 13044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 name[32]; /* Whatever */ 13054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s64 value; 13064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 13074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved; 13084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 13094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Control flags */ 13114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_DISABLED 0x0001 13124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_GRABBED 0x0002 13134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_READ_ONLY 0x0004 13144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_UPDATE 0x0008 13154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_INACTIVE 0x0010 13164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_SLIDER 0x0020 13174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040 13184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_VOLATILE 0x0080 13194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Query flag, to be ORed with the control ID */ 13214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000 13224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* User-class control IDs defined by V4L2 */ 13244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CID_MAX_CTRLS 1024 13254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* IDs reserved for driver specific controls */ 13264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CID_PRIVATE_BASE 0x08000000 13274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 13304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * T U N I N G 13314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 13324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_tuner { 13334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 13344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 name[32]; 13354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_tuner_type */ 13364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capability; 13374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 rangelow; 13384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 rangehigh; 13394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 rxsubchans; 13404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 audmode; 13414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 signal; 13424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 afc; 13434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[4]; 13444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 13454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_modulator { 13474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 13484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 name[32]; 13494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capability; 13504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 rangelow; 13514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 rangehigh; 13524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 txsubchans; 13534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[4]; 13544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 13554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for the 'capability' field */ 13574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_LOW 0x0001 13584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_NORM 0x0002 13594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_HWSEEK_BOUNDED 0x0004 13604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_HWSEEK_WRAP 0x0008 13614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_STEREO 0x0010 13624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_LANG2 0x0020 13634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_SAP 0x0020 13644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_LANG1 0x0040 13654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_RDS 0x0080 13664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100 13674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200 13684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_FREQ_BANDS 0x0400 13694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_HWSEEK_PROG_LIM 0x0800 13704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for the 'rxsubchans' field */ 13724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_MONO 0x0001 13734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_STEREO 0x0002 13744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_LANG2 0x0004 13754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_SAP 0x0004 13764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_LANG1 0x0008 13774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_RDS 0x0010 13784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Values for the 'audmode' field */ 13804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_MONO 0x0000 13814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_STEREO 0x0001 13824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_LANG2 0x0002 13834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_SAP 0x0002 13844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_LANG1 0x0003 13854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_LANG1_LANG2 0x0004 13864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frequency { 13884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 tuner; 13894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_tuner_type */ 13904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 frequency; 13914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[8]; 13924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 13934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BAND_MODULATION_VSB (1 << 1) 13954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BAND_MODULATION_FM (1 << 2) 13964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BAND_MODULATION_AM (1 << 3) 13974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 13984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frequency_band { 13994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 tuner; 14004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_tuner_type */ 14014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 14024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capability; 14034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 rangelow; 14044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 rangehigh; 14054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 modulation; 14064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[9]; 14074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 14084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_hw_freq_seek { 14104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 tuner; 14114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_tuner_type */ 14124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 seek_upward; 14134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 wrap_around; 14144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 spacing; 14154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 rangelow; 14164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 rangehigh; 14174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[5]; 14184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 14194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 14214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * R D S 14224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 14234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_rds_data { 14254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 lsb; 14264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 msb; 14274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 block; 14284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 14294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_MSK 0x7 14314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_A 0 14324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_B 1 14334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_C 2 14344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_D 3 14354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_C_ALT 4 14364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_INVALID 7 14374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_CORRECTED 0x40 14394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_ERROR 0x80 14404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 14424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * A U D I O 14434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 14444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_audio { 14454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 14464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 name[32]; 14474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capability; 14484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 mode; 14494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[2]; 14504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 14514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for the 'capability' field */ 14534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_AUDCAP_STEREO 0x00001 14544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_AUDCAP_AVL 0x00002 14554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for the 'mode' field */ 14574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_AUDMODE_AVL 0x00001 14584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_audioout { 14604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 14614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 name[32]; 14624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 capability; 14634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 mode; 14644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[2]; 14654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 14664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 14684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M P E G S E R V I C E S 14694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 14704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * NOTE: EXPERIMENTAL API 14714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 14724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#if 1 14734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_IDX_FRAME_I (0) 14744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_IDX_FRAME_P (1) 14754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_IDX_FRAME_B (2) 14764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_IDX_FRAME_MASK (0xf) 14774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_enc_idx_entry { 14794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u64 offset; 14804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u64 pts; 14814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 length; 14824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 14834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[2]; 14844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 14854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_IDX_ENTRIES (64) 14874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_enc_idx { 14884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 entries; 14894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 entries_cap; 14904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[4]; 14914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES]; 14924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 14934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 14954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_CMD_START (0) 14964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_CMD_STOP (1) 14974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_CMD_PAUSE (2) 14984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_CMD_RESUME (3) 14994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_QCOM_CMD_FLUSH (4) 15004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for V4L2_ENC_CMD_STOP */ 15024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_CMD_STOP_AT_GOP_END (1 << 0) 15034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_encoder_cmd { 15054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 cmd; 15064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 15074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 15084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct { 15094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 data[8]; 15104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } raw; 15114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 15124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 15134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Decoder commands */ 15154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_START (0) 15164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_STOP (1) 15174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_PAUSE (2) 15184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_RESUME (3) 15194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_QCOM_CMD_FLUSH (4) 15204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for V4L2_DEC_CMD_START */ 15224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0) 15234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for V4L2_DEC_CMD_PAUSE */ 15254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_PAUSE_TO_BLACK (1 << 0) 15264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for V4L2_DEC_CMD_STOP */ 15284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_STOP_TO_BLACK (1 << 0) 15294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_STOP_IMMEDIATELY (1 << 1) 15304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for V4L2_DEC_QCOM_CMD_FLUSH */ 15324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_QCOM_CMD_FLUSH_OUTPUT (1 << 0) 15334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_QCOM_CMD_FLUSH_CAPTURE (1 << 1) 15344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_CMD_FLUSH_OUTPUT (1 << 0) 15364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_CMD_FLUSH_CAPTURE (1 << 1) 15374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Play format requirements (returned by the driver): */ 15394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* The decoder has no special format requirements */ 15414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_START_FMT_NONE (0) 15424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* The decoder requires full GOPs */ 15434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_START_FMT_GOP (1) 15444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* The structure must be zeroed before use by the application 15464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin This ensures it can be extended safely in the future. */ 15474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_decoder_cmd { 15484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 cmd; 15494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 15504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 15514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct { 15524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u64 pts; 15534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } stop; 15544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct { 15564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* 0 or 1000 specifies normal speed, 15574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1 specifies forward single stepping, 15584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin -1 specifies backward single stepping, 15594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin >1: playback at speed/1000 of the normal speed, 15604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin <-1: reverse playback at (-speed/1000) of the normal speed. */ 15614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 speed; 15624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 format; 15634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } start; 15644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct { 15664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 data[16]; 15674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } raw; 15684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 15694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 15704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif 15714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 15744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * D A T A S E R V I C E S ( V B I ) 15754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 15764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Data services API by Michael Schimek 15774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 15784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Raw VBI */ 15804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_vbi_format { 15814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 sampling_rate; /* in 1 Hz */ 15824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 offset; 15834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 samples_per_line; 15844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 sample_format; /* V4L2_PIX_FMT_* */ 15854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 start[2]; 15864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 count[2]; 15874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; /* V4L2_VBI_* */ 15884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[2]; /* must be zero */ 15894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 15904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* VBI flags */ 15924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_VBI_UNSYNC (1 << 0) 15934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_VBI_INTERLACED (1 << 1) 15944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 15954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Sliced VBI 15964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 15974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * This implements is a proposal V4L2 API to allow SLICED VBI 15984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * required for some hardware encoders. It should change without 15994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * notice in the definitive implementation. 16004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 16014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_sliced_vbi_format { 16034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u16 service_set; 16044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field 16054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field 16064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (equals frame lines 313-336 for 625 line video 16074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin standards, 263-286 for 525 line standards) */ 16084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u16 service_lines[2][24]; 16094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 io_size; 16104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[2]; /* must be zero */ 16114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 16124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Teletext World System Teletext 16144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (WST), defined on ITU-R BT.653-2 */ 16154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_TELETEXT_B (0x0001) 16164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Video Program System, defined on ETS 300 231*/ 16174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_VPS (0x0400) 16184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Closed Caption, defined on EIA-608 */ 16194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_CAPTION_525 (0x1000) 16204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Wide Screen System, defined on ITU-R BT1119.1 */ 16214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_WSS_625 (0x4000) 16224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525) 16244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625) 16254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_sliced_vbi_cap { 16274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u16 service_set; 16284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field 16294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field 16304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (equals frame lines 313-336 for 625 line video 16314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin standards, 263-286 for 525 line standards) */ 16324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u16 service_lines[2][24]; 16334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_buf_type */ 16344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[3]; /* must be 0 */ 16354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 16364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_sliced_vbi_data { 16384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 id; 16394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 field; /* 0: first field, 1: second field */ 16404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 line; /* 1-23 */ 16414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved; /* must be 0 */ 16424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 data[48]; 16434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 16444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 16464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Sliced VBI data inserted into MPEG Streams 16474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 16484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 16504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V4L2_MPEG_STREAM_VBI_FMT_IVTV: 16514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 16524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an 16534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI 16544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * data 16554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 16564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header 16574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * definitions are not included here. See the MPEG-2 specifications for details 16584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * on these headers. 16594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 16604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Line type IDs */ 16624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_TELETEXT_B (1) 16634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_CAPTION_525 (4) 16644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_WSS_625 (5) 16654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_VPS (7) 16664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_mpeg_vbi_itv0_line { 16684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 id; /* One of V4L2_MPEG_VBI_IVTV_* above */ 16694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 data[42]; /* Sliced VBI data for the line */ 16704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 16714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_mpeg_vbi_itv0 { 16734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __le32 linemask[2]; /* Bitmasks of VBI service lines present */ 16744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_mpeg_vbi_itv0_line line[35]; 16754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 16764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_mpeg_vbi_ITV0 { 16784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_mpeg_vbi_itv0_line line[36]; 16794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 16804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0" 16824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0" 16834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_mpeg_vbi_fmt_ivtv { 16854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 magic[4]; 16864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 16874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_mpeg_vbi_itv0 itv0; 16884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_mpeg_vbi_ITV0 ITV0; 16894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 16904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 16914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 16934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * A G G R E G A T E S T R U C T U R E S 16944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 16954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 16964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** 16974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_plane_pix_format - additional, per-plane format definition 16984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @sizeimage: maximum size in bytes required for data, for which 16994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * this plane will be used 17004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bytesperline: distance in bytes between the leftmost pixels in two 17014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * adjacent lines 17024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 17034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_plane_pix_format { 17044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 sizeimage; 17054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u16 bytesperline; 17064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u16 reserved[7]; 17074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 17084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 17094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** 17104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_pix_format_mplane - multiplanar format definition 17114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @width: image width in pixels 17124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @height: image height in pixels 17134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @pixelformat: little endian four character code (fourcc) 17144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @field: enum v4l2_field; field order (for interlaced video) 17154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @colorspace: enum v4l2_colorspace; supplemental to pixelformat 17164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @plane_fmt: per-plane information 17174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @num_planes: number of planes for this format 17184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 17194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_pix_format_mplane { 17204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 width; 17214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 height; 17224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 pixelformat; 17234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 field; 17244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 colorspace; 17254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 17264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES]; 17274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 num_planes; 17284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 reserved[11]; 17294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 17304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 17314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** 17324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_format - stream data format 17334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type: enum v4l2_buf_type; type of the data stream 17344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @pix: definition of an image format 17354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @pix_mp: definition of a multiplanar image format 17364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @win: definition of an overlaid image 17374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @vbi: raw VBI capture or output parameters 17384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @sliced: sliced VBI capture or output parameters 17394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @raw_data: placeholder for future extensions and custom formats 17404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 17414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_format { 17424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; 17434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 17444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_pix_format pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */ 17454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_pix_format_mplane pix_mp; /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */ 17464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_window win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */ 17474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_vbi_format vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */ 17484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_sliced_vbi_format sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ 17494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 raw_data[200]; /* user-defined */ 17504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } fmt; 17514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 17524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 17534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Stream type-dependent parameters 17544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 17554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_streamparm { 17564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* enum v4l2_buf_type */ 17574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 17584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_captureparm capture; 17594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_outputparm output; 17604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 raw_data[200]; /* user-defined */ 17614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } parm; 17624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 17634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 17644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 17654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * E V E N T S 17664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 17674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 17684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_ALL 0 17694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_VSYNC 1 17704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_EOS 2 17714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_CTRL 3 17724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_FRAME_SYNC 4 17734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_PRIVATE_START 0x08000000 17744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 17754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_START (V4L2_EVENT_PRIVATE_START + 0x00001000) 17764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_FLUSH_DONE (V4L2_EVENT_MSM_VIDC_START + 1) 17774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT \ 17784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (V4L2_EVENT_MSM_VIDC_START + 2) 17794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT \ 17804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (V4L2_EVENT_MSM_VIDC_START + 3) 17814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_CLOSE_DONE (V4L2_EVENT_MSM_VIDC_START + 4) 17824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_SYS_ERROR (V4L2_EVENT_MSM_VIDC_START + 5) 17834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE \ 17844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (V4L2_EVENT_MSM_VIDC_START + 6) 17854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER \ 17864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (V4L2_EVENT_MSM_VIDC_START + 7) 17874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_HW_OVERLOAD (V4L2_EVENT_MSM_VIDC_START + 8) 17884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_MAX_CLIENTS (V4L2_EVENT_MSM_VIDC_START + 9) 17894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED (V4L2_EVENT_MSM_VIDC_START + 10) 17904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 17914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Payload for V4L2_EVENT_VSYNC */ 17924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_event_vsync { 17934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* Can be V4L2_FIELD_ANY, _NONE, _TOP or _BOTTOM */ 17944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 field; 17954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 17964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 17974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Payload for V4L2_EVENT_CTRL */ 17984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0) 17994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1) 18004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_CTRL_CH_RANGE (1 << 2) 18014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_event_ctrl { 18034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 changes; 18044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; 18054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 18064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 value; 18074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s64 value64; 18084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 18094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 18104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 minimum; 18114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 maximum; 18124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 step; 18134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 default_value; 18144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 18154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_event_frame_sync { 18174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 frame_sequence; 18184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 18194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_event { 18214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; 18224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { 18234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_event_vsync vsync; 18244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_event_ctrl ctrl; 18254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_event_frame_sync frame_sync; 18264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 data[64]; 18274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } u; 18284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 pending; 18294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 sequence; 18304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct timespec timestamp; 18314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 id; 18324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[8]; 18334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 18344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_SUB_FL_SEND_INITIAL (1 << 0) 18364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK (1 << 1) 18374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_event_subscription { 18394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; 18404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 id; 18414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 18424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[5]; 18434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 18444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 18464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * A D V A N C E D D E B U G G I N G 18474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 18484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS! 18494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * FOR DEBUGGING, TESTING AND INTERNAL USE ONLY! 18504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 18514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */ 18534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_BRIDGE 0 /* Match against chip ID on the bridge (0 for the bridge) */ 18554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE 18564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_I2C_DRIVER 1 /* Match against I2C driver name */ 18574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_I2C_ADDR 2 /* Match against I2C 7-bit address */ 18584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_AC97 3 /* Match against anciliary AC97 chip */ 18594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_SUBDEV 4 /* Match against subdev index */ 18604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dbg_match { 18624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 type; /* Match type */ 18634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union { /* Match this chip, meaning determined by type */ 18644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 addr; 18654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin char name[32]; 18664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin }; 18674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 18684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dbg_register { 18704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_dbg_match match; 18714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 size; /* register size in bytes */ 18724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u64 reg; 18734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u64 val; 18744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 18754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* VIDIOC_DBG_G_CHIP_IDENT */ 18774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dbg_chip_ident { 18784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_dbg_match match; 18794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 ident; /* chip identifier as specified in <media/v4l2-chip-ident.h> */ 18804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 revision; /* chip revision, chip specific */ 18814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 18824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_FL_READABLE (1 << 0) 18844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_FL_WRITABLE (1 << 1) 18854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* VIDIOC_DBG_G_CHIP_INFO */ 18874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dbg_chip_info { 18884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_dbg_match match; 18894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin char name[32]; 18904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 flags; 18914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[32]; 18924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 18934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 18944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** 18954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_create_buffers - VIDIOC_CREATE_BUFS argument 18964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @index: on return, index of the first created buffer 18974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @count: entry: number of requested buffers, 18984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * return: number of created buffers 18994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @memory: enum v4l2_memory; buffer memory type 19004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @format: frame format, for which buffers are requested 19014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved: future extensions 19024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 19034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_create_buffers { 19044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 index; 19054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 count; 19064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 memory; 19074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct v4l2_format format; 19084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 reserved[8]; 19094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 19104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 19114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* 19124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 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 19134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 19144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 19154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability) 19164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_RESERVED _IO('V', 1) 19174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc) 19184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format) 19194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format) 19204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers) 19214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer) 19224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer) 19234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer) 19244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_OVERLAY _IOW('V', 14, int) 19254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer) 19264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_EXPBUF _IOWR('V', 16, struct v4l2_exportbuffer) 19274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer) 19284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_STREAMON _IOW('V', 18, int) 19294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_STREAMOFF _IOW('V', 19, int) 19304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_PARM _IOWR('V', 21, struct v4l2_streamparm) 19314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_PARM _IOWR('V', 22, struct v4l2_streamparm) 19324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id) 19334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id) 19344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUMSTD _IOWR('V', 25, struct v4l2_standard) 19354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUMINPUT _IOWR('V', 26, struct v4l2_input) 19364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control) 19374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control) 19384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_TUNER _IOWR('V', 29, struct v4l2_tuner) 19394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_TUNER _IOW('V', 30, struct v4l2_tuner) 19404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_AUDIO _IOR('V', 33, struct v4l2_audio) 19414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_AUDIO _IOW('V', 34, struct v4l2_audio) 19424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERYCTRL _IOWR('V', 36, struct v4l2_queryctrl) 19434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu) 19444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_INPUT _IOR('V', 38, int) 19454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_INPUT _IOWR('V', 39, int) 19464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_OUTPUT _IOR('V', 46, int) 19474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_OUTPUT _IOWR('V', 47, int) 19484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output) 19494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_AUDOUT _IOR('V', 49, struct v4l2_audioout) 19504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_AUDOUT _IOW('V', 50, struct v4l2_audioout) 19514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_MODULATOR _IOWR('V', 54, struct v4l2_modulator) 19524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_MODULATOR _IOW('V', 55, struct v4l2_modulator) 19534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct v4l2_frequency) 19544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_FREQUENCY _IOW('V', 57, struct v4l2_frequency) 19554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_CROPCAP _IOWR('V', 58, struct v4l2_cropcap) 19564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop) 19574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_CROP _IOW('V', 60, struct v4l2_crop) 19584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct v4l2_jpegcompression) 19594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct v4l2_jpegcompression) 19604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id) 19614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_TRY_FMT _IOWR('V', 64, struct v4l2_format) 19624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct v4l2_audio) 19634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct v4l2_audioout) 19644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_PRIORITY _IOR('V', 67, __u32) /* enum v4l2_priority */ 19654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_PRIORITY _IOW('V', 68, __u32) /* enum v4l2_priority */ 19664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap) 19674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_LOG_STATUS _IO('V', 70) 19684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls) 19694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct v4l2_ext_controls) 19704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct v4l2_ext_controls) 19714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct v4l2_frmsizeenum) 19724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum) 19734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct v4l2_enc_idx) 19744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct v4l2_encoder_cmd) 19754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct v4l2_encoder_cmd) 19764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 19774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, meant for debugging, testing and internal use. 19784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined. 19794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin You must be root to use these ioctls. Never use these in applications! */ 19804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register) 19814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct v4l2_dbg_register) 19824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 19834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, meant for debugging, testing and internal use. 19844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin Never use this ioctl in applications! 19854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin Note: this ioctl is deprecated in favor of VIDIOC_DBG_G_CHIP_INFO and 19864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin will go away in the future. */ 19874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DBG_G_CHIP_IDENT _IOWR('V', 81, struct v4l2_dbg_chip_ident) 19884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 19894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek) 19904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 19914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings) 19924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings) 19934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DQEVENT _IOR('V', 89, struct v4l2_event) 19944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct v4l2_event_subscription) 19954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription) 19964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 19974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, the below two ioctls may change over the next couple of kernel 19984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin versions */ 19994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_CREATE_BUFS _IOWR('V', 92, struct v4l2_create_buffers) 20004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_PREPARE_BUF _IOWR('V', 93, struct v4l2_buffer) 20014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 20024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental selection API */ 20034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_SELECTION _IOWR('V', 94, struct v4l2_selection) 20044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_SELECTION _IOWR('V', 95, struct v4l2_selection) 20054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 20064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, these two ioctls may change over the next couple of kernel 20074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin versions. */ 20084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DECODER_CMD _IOWR('V', 96, struct v4l2_decoder_cmd) 20094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_TRY_DECODER_CMD _IOWR('V', 97, struct v4l2_decoder_cmd) 20104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 20114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, these three ioctls may change over the next couple of kernel 20124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin versions. */ 20134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUM_DV_TIMINGS _IOWR('V', 98, struct v4l2_enum_dv_timings) 20144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERY_DV_TIMINGS _IOR('V', 99, struct v4l2_dv_timings) 20154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap) 20164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 20174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, this ioctl may change over the next couple of kernel 20184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin versions. */ 20194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUM_FREQ_BANDS _IOWR('V', 101, struct v4l2_frequency_band) 20204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 20214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, meant for debugging, testing and internal use. 20224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin Never use these in applications! */ 20234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info) 20244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 20254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Reminder: when adding new ioctls please add support for them to 20264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin drivers/media/video/v4l2-compat-ioctl32.c as well! */ 20274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 20284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */ 20294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 20304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif /* _UAPI__LINUX_VIDEODEV2_H */ 2031