videodev2.h
0001:
0002:
0003:
0004:
0005:
0006:
0007:
0008:
0009:
0010:
0011:
0012:
0013:
0014:
0015:
0016:
0017:
0018:
0019:
0020:
0021:
0022:
0023:
0024:
0025:
0026:
0027:
0028:
0029:
0030:
0031:
0032:
0033:
0034:
0035:
0036:
0037:
0038:
0039:
0040:
0041:
0042:
0043:
0044:
0045:
0046:
0047:
0048:
0049: http://linuxtv.org
0050:
0051: <bill@thedirks.org>
0052:
0053: <hverkuil@xs4all.nl>
0054:
0055:
0056: #ifndef __LINUX_VIDEODEV2_H
0057: #define __LINUX_VIDEODEV2_H
0058:
0059: #include <sys/time.h>
0060:
0061: #include <linux/ioctl.h>
0062: #include <linux/types.h>
0063:
0064:
0065:
0066:
0067:
0068: #define VIDEO_MAX_FRAME 32
0069: #define VIDEO_MAX_PLANES 8
0070:
0071:
0072:
0073:
0074:
0075: #define VID_TYPE_CAPTURE 1
0076: #define VID_TYPE_TUNER 2
0077: #define VID_TYPE_TELETEXT 4
0078: #define VID_TYPE_OVERLAY 8
0079: #define VID_TYPE_CHROMAKEY 16
0080: #define VID_TYPE_CLIPPING 32
0081: #define VID_TYPE_FRAMERAM 64
0082: #define VID_TYPE_SCALES 128
0083: #define VID_TYPE_MONOCHROME 256
0084: #define VID_TYPE_SUBCAPTURE 512
0085: #define VID_TYPE_MPEG_DECODER 1024
0086: #define VID_TYPE_MPEG_ENCODER 2048
0087: #define VID_TYPE_MJPEG_DECODER 4096
0088: #define VID_TYPE_MJPEG_ENCODER 8192
0089:
0090:
0091:
0092:
0093:
0094:
0095: #define v4l2_fourcc(a, b, c, d)\
0096: ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))
0097:
0098:
0099:
0100:
0101: enum v4l2_field {
0102: V4L2_FIELD_ANY = 0,
0103:
0104:
0105:
0106: V4L2_FIELD_NONE = 1,
0107: V4L2_FIELD_TOP = 2,
0108: V4L2_FIELD_BOTTOM = 3,
0109: V4L2_FIELD_INTERLACED = 4,
0110: V4L2_FIELD_SEQ_TB = 5,
0111:
0112: V4L2_FIELD_SEQ_BT = 6,
0113: V4L2_FIELD_ALTERNATE = 7,
0114:
0115: V4L2_FIELD_INTERLACED_TB = 8,
0116:
0117:
0118: V4L2_FIELD_INTERLACED_BT = 9,
0119:
0120:
0121: };
0122: #define V4L2_FIELD_HAS_TOP(field) \
0123: ((field) == V4L2_FIELD_TOP ||\
0124: (field) == V4L2_FIELD_INTERLACED ||\
0125: (field) == V4L2_FIELD_INTERLACED_TB ||\
0126: (field) == V4L2_FIELD_INTERLACED_BT ||\
0127: (field) == V4L2_FIELD_SEQ_TB ||\
0128: (field) == V4L2_FIELD_SEQ_BT)
0129: #define V4L2_FIELD_HAS_BOTTOM(field) \
0130: ((field) == V4L2_FIELD_BOTTOM ||\
0131: (field) == V4L2_FIELD_INTERLACED ||\
0132: (field) == V4L2_FIELD_INTERLACED_TB ||\
0133: (field) == V4L2_FIELD_INTERLACED_BT ||\
0134: (field) == V4L2_FIELD_SEQ_TB ||\
0135: (field) == V4L2_FIELD_SEQ_BT)
0136: #define V4L2_FIELD_HAS_BOTH(field) \
0137: ((field) == V4L2_FIELD_INTERLACED ||\
0138: (field) == V4L2_FIELD_INTERLACED_TB ||\
0139: (field) == V4L2_FIELD_INTERLACED_BT ||\
0140: (field) == V4L2_FIELD_SEQ_TB ||\
0141: (field) == V4L2_FIELD_SEQ_BT)
0142:
0143: enum v4l2_buf_type {
0144: V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
0145: V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
0146: V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
0147: V4L2_BUF_TYPE_VBI_CAPTURE = 4,
0148: V4L2_BUF_TYPE_VBI_OUTPUT = 5,
0149: V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
0150: V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
0151: #if 1
0152:
0153: V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
0154: #endif
0155: V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
0156: V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
0157: V4L2_BUF_TYPE_PRIVATE = 0x80,
0158: };
0159:
0160: #define V4L2_TYPE_IS_MULTIPLANAR(type) \
0161: ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE \
0162: || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
0163:
0164: #define V4L2_TYPE_IS_OUTPUT(type) \
0165: ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT \
0166: || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE \
0167: || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY \
0168: || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY \
0169: || (type) == V4L2_BUF_TYPE_VBI_OUTPUT \
0170: || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT)
0171:
0172: enum v4l2_tuner_type {
0173: V4L2_TUNER_RADIO = 1,
0174: V4L2_TUNER_ANALOG_TV = 2,
0175: V4L2_TUNER_DIGITAL_TV = 3,
0176: };
0177:
0178: enum v4l2_memory {
0179: V4L2_MEMORY_MMAP = 1,
0180: V4L2_MEMORY_USERPTR = 2,
0181: V4L2_MEMORY_OVERLAY = 3,
0182: };
0183:
0184: http://vektor.theorem.ca/graphics/ycbcr/
0185: enum v4l2_colorspace {
0186:
0187: V4L2_COLORSPACE_SMPTE170M = 1,
0188:
0189:
0190: V4L2_COLORSPACE_SMPTE240M = 2,
0191:
0192:
0193: V4L2_COLORSPACE_REC709 = 3,
0194:
0195:
0196: V4L2_COLORSPACE_BT878 = 4,
0197:
0198:
0199: V4L2_COLORSPACE_470_SYSTEM_M = 5,
0200: V4L2_COLORSPACE_470_SYSTEM_BG = 6,
0201:
0202:
0203:
0204:
0205:
0206: V4L2_COLORSPACE_JPEG = 7,
0207:
0208:
0209: V4L2_COLORSPACE_SRGB = 8,
0210: };
0211:
0212: enum v4l2_priority {
0213: V4L2_PRIORITY_UNSET = 0,
0214: V4L2_PRIORITY_BACKGROUND = 1,
0215: V4L2_PRIORITY_INTERACTIVE = 2,
0216: V4L2_PRIORITY_RECORD = 3,
0217: V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE,
0218: };
0219:
0220: struct v4l2_rect {
0221: __s32 left;
0222: __s32 top;
0223: __s32 width;
0224: __s32 height;
0225: };
0226:
0227: struct v4l2_fract {
0228: __u32 numerator;
0229: __u32 denominator;
0230: };
0231:
0232:
0233:
0234:
0235: struct v4l2_capability {
0236: __u8 driver[16];
0237: __u8 card[32];
0238: __u8 bus_info[32];
0239: __u32 version;
0240: __u32 capabilities;
0241: __u32 reserved[4];
0242: };
0243:
0244:
0245: #define V4L2_CAP_VIDEO_CAPTURE 0x00000001
0246: #define V4L2_CAP_VIDEO_OUTPUT 0x00000002
0247: #define V4L2_CAP_VIDEO_OVERLAY 0x00000004
0248: #define V4L2_CAP_VBI_CAPTURE 0x00000010
0249: #define V4L2_CAP_VBI_OUTPUT 0x00000020
0250: #define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040
0251: #define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080
0252: #define V4L2_CAP_RDS_CAPTURE 0x00000100
0253: #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200
0254: #define V4L2_CAP_HW_FREQ_SEEK 0x00000400
0255: #define V4L2_CAP_RDS_OUTPUT 0x00000800
0256:
0257:
0258: #define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000
0259:
0260: #define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000
0261:
0262: #define V4L2_CAP_TUNER 0x00010000
0263: #define V4L2_CAP_AUDIO 0x00020000
0264: #define V4L2_CAP_RADIO 0x00040000
0265: #define V4L2_CAP_MODULATOR 0x00080000
0266:
0267: #define V4L2_CAP_READWRITE 0x01000000
0268: #define V4L2_CAP_ASYNCIO 0x02000000
0269: #define V4L2_CAP_STREAMING 0x04000000
0270:
0271:
0272:
0273:
0274: struct v4l2_pix_format {
0275: __u32 width;
0276: __u32 height;
0277: __u32 pixelformat;
0278: enum v4l2_field field;
0279: __u32 bytesperline;
0280: __u32 sizeimage;
0281: enum v4l2_colorspace colorspace;
0282: __u32 priv;
0283: };
0284:
0285:
0286:
0287:
0288: #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1')
0289: #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4')
0290: #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O')
0291: #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P')
0292: #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q')
0293: #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R')
0294: #define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H')
0295: #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3')
0296: #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3')
0297: #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4')
0298: #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4')
0299:
0300:
0301: #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y')
0302: #define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ')
0303: #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ')
0304: #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ')
0305: #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ')
0306: #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ')
0307:
0308:
0309: #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
0310:
0311:
0312: #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
0313:
0314:
0315: #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9')
0316: #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2')
0317: #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
0318: #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V')
0319: #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U')
0320: #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y')
0321: #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y')
0322: #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P')
0323: #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P')
0324: #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P')
0325: #define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4')
0326: #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O')
0327: #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P')
0328: #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4')
0329: #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9')
0330: #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2')
0331: #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
0332: #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2')
0333: #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
0334:
0335:
0336: #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
0337: #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
0338: #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6')
0339: #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
0340:
0341:
0342: #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
0343: #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
0344:
0345:
0346: #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2')
0347:
0348: http://www.siliconimaging.com/RGB
0349: #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
0350: #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
0351: #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
0352: #define V4L2_PIX_FMT_SRGGB8 v4l2_fourcc('R', 'G', 'G', 'B')
0353: #define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0')
0354: #define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0')
0355: #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0')
0356: #define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0')
0357: #define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2')
0358: #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2')
0359: #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2')
0360: #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2')
0361:
0362: #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
0363:
0364:
0365:
0366:
0367: #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2')
0368:
0369:
0370: #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G')
0371: #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G')
0372: #define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd')
0373: #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G')
0374: #define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4')
0375: #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1')
0376: #define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3')
0377: #define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1')
0378: #define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2')
0379: #define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4')
0380: #define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D')
0381: #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G')
0382: #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L')
0383:
0384:
0385: #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
0386: #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
0387: #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
0388: #define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0')
0389: #define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1')
0390: #define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2')
0391: #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5')
0392: #define V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1')
0393: #define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5')
0394: #define V4L2_PIX_FMT_SPCA508 v4l2_fourcc('S', '5', '0', '8')
0395: #define V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1')
0396: #define V4L2_PIX_FMT_PAC207 v4l2_fourcc('P', '2', '0', '7')
0397: #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0')
0398: #define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X')
0399: #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C')
0400: #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G')
0401: #define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1')
0402: #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8')
0403: #define V4L2_PIX_FMT_STV0680 v4l2_fourcc('S', '6', '8', '0')
0404: #define V4L2_PIX_FMT_TM6000 v4l2_fourcc('T', 'M', '6', '0')
0405: #define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V')
0406: #define V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I')
0407: #define V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L')
0408: #define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1')
0409:
0410:
0411:
0412:
0413: struct v4l2_fmtdesc {
0414: __u32 index;
0415: enum v4l2_buf_type type;
0416: __u32 flags;
0417: __u8 description[32];
0418: __u32 pixelformat;
0419: __u32 reserved[4];
0420: };
0421:
0422: #define V4L2_FMT_FLAG_COMPRESSED 0x0001
0423: #define V4L2_FMT_FLAG_EMULATED 0x0002
0424:
0425: #if 1
0426:
0427:
0428:
0429:
0430: enum v4l2_frmsizetypes {
0431: V4L2_FRMSIZE_TYPE_DISCRETE = 1,
0432: V4L2_FRMSIZE_TYPE_CONTINUOUS = 2,
0433: V4L2_FRMSIZE_TYPE_STEPWISE = 3,
0434: };
0435:
0436: struct v4l2_frmsize_discrete {
0437: __u32 width;
0438: __u32 height;
0439: };
0440:
0441: struct v4l2_frmsize_stepwise {
0442: __u32 min_width;
0443: __u32 max_width;
0444: __u32 step_width;
0445: __u32 min_height;
0446: __u32 max_height;
0447: __u32 step_height;
0448: };
0449:
0450: struct v4l2_frmsizeenum {
0451: __u32 index;
0452: __u32 pixel_format;
0453: __u32 type;
0454:
0455: union {
0456: struct v4l2_frmsize_discrete discrete;
0457: struct v4l2_frmsize_stepwise stepwise;
0458: };
0459:
0460: __u32 reserved[2];
0461: };
0462:
0463:
0464:
0465:
0466: enum v4l2_frmivaltypes {
0467: V4L2_FRMIVAL_TYPE_DISCRETE = 1,
0468: V4L2_FRMIVAL_TYPE_CONTINUOUS = 2,
0469: V4L2_FRMIVAL_TYPE_STEPWISE = 3,
0470: };
0471:
0472: struct v4l2_frmival_stepwise {
0473: struct v4l2_fract min;
0474: struct v4l2_fract max;
0475: struct v4l2_fract step;
0476: };
0477:
0478: struct v4l2_frmivalenum {
0479: __u32 index;
0480: __u32 pixel_format;
0481: __u32 width;
0482: __u32 height;
0483: __u32 type;
0484:
0485: union {
0486: struct v4l2_fract discrete;
0487: struct v4l2_frmival_stepwise stepwise;
0488: };
0489:
0490: __u32 reserved[2];
0491: };
0492: #endif
0493:
0494:
0495:
0496:
0497: struct v4l2_timecode {
0498: __u32 type;
0499: __u32 flags;
0500: __u8 frames;
0501: __u8 seconds;
0502: __u8 minutes;
0503: __u8 hours;
0504: __u8 userbits[4];
0505: };
0506:
0507:
0508: #define V4L2_TC_TYPE_24FPS 1
0509: #define V4L2_TC_TYPE_25FPS 2
0510: #define V4L2_TC_TYPE_30FPS 3
0511: #define V4L2_TC_TYPE_50FPS 4
0512: #define V4L2_TC_TYPE_60FPS 5
0513:
0514:
0515: #define V4L2_TC_FLAG_DROPFRAME 0x0001
0516: #define V4L2_TC_FLAG_COLORFRAME 0x0002
0517: #define V4L2_TC_USERBITS_field 0x000C
0518: #define V4L2_TC_USERBITS_USERDEFINED 0x0000
0519: #define V4L2_TC_USERBITS_8BITCHARS 0x0008
0520:
0521:
0522: struct v4l2_jpegcompression {
0523: int quality;
0524:
0525: int APPn;
0526:
0527: int APP_len;
0528: char APP_data[60];
0529:
0530: int COM_len;
0531: char COM_data[60];
0532:
0533: __u32 jpeg_markers;
0534:
0535:
0536:
0537:
0538:
0539:
0540:
0541:
0542:
0543: #define V4L2_JPEG_MARKER_DHT (1<<3)
0544: #define V4L2_JPEG_MARKER_DQT (1<<4)
0545: #define V4L2_JPEG_MARKER_DRI (1<<5)
0546: #define V4L2_JPEG_MARKER_COM (1<<6)
0547: #define V4L2_JPEG_MARKER_APP (1<<7)
0548:
0549: };
0550:
0551:
0552:
0553:
0554: struct v4l2_requestbuffers {
0555: __u32 count;
0556: enum v4l2_buf_type type;
0557: enum v4l2_memory memory;
0558: __u32 reserved[2];
0559: };
0560:
0561:
0562:
0563: @bytesused
0564: @length
0565: @mem
0566:
0567:
0568:
0569: @userptr
0570:
0571: @data
0572:
0573:
0574:
0575:
0576:
0577:
0578:
0579: struct v4l2_plane {
0580: __u32 bytesused;
0581: __u32 length;
0582: union {
0583: __u32 mem_offset;
0584: unsigned long userptr;
0585: } m;
0586: __u32 data_offset;
0587: __u32 reserved[11];
0588: };
0589:
0590:
0591:
0592: @index
0593: @type
0594: @bytesused
0595:
0596: @flags
0597: @field
0598: @timestamp
0599: @timecode
0600: @sequence
0601: @memory
0602: @offset
0603:
0604:
0605: @userptr
0606:
0607: @planes
0608:
0609: @length
0610:
0611:
0612: @input
0613:
0614:
0615:
0616:
0617: struct v4l2_buffer {
0618: __u32 index;
0619: enum v4l2_buf_type type;
0620: __u32 bytesused;
0621: __u32 flags;
0622: enum v4l2_field field;
0623: struct timeval timestamp;
0624: struct v4l2_timecode timecode;
0625: __u32 sequence;
0626:
0627:
0628: enum v4l2_memory memory;
0629: union {
0630: __u32 offset;
0631: unsigned long userptr;
0632: struct v4l2_plane *planes;
0633: } m;
0634: __u32 length;
0635: __u32 input;
0636: __u32 reserved;
0637: };
0638:
0639:
0640: #define V4L2_BUF_FLAG_MAPPED 0x0001
0641: #define V4L2_BUF_FLAG_QUEUED 0x0002
0642: #define V4L2_BUF_FLAG_DONE 0x0004
0643: #define V4L2_BUF_FLAG_KEYFRAME 0x0008
0644: #define V4L2_BUF_FLAG_PFRAME 0x0010
0645: #define V4L2_BUF_FLAG_BFRAME 0x0020
0646:
0647: #define V4L2_BUF_FLAG_ERROR 0x0040
0648: #define V4L2_BUF_FLAG_TIMECODE 0x0100
0649: #define V4L2_BUF_FLAG_INPUT 0x0200
0650: #define V4L2_BUF_FLAG_PREPARED 0x0400
0651:
0652: #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x0800
0653: #define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x1000
0654:
0655:
0656:
0657:
0658: struct v4l2_framebuffer {
0659: __u32 capability;
0660: __u32 flags;
0661: FIXME:
0662:
0663: void *base;
0664: struct v4l2_pix_format fmt;
0665: };
0666:
0667: #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
0668: #define V4L2_FBUF_CAP_CHROMAKEY 0x0002
0669: #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
0670: #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
0671: #define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
0672: #define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
0673: #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
0674: #define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080
0675:
0676: #define V4L2_FBUF_FLAG_PRIMARY 0x0001
0677: #define V4L2_FBUF_FLAG_OVERLAY 0x0002
0678: #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
0679: #define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008
0680: #define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010
0681: #define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020
0682: #define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040
0683:
0684: struct v4l2_clip {
0685: struct v4l2_rect c;
0686: struct v4l2_clip *next;
0687: };
0688:
0689: struct v4l2_window {
0690: struct v4l2_rect w;
0691: enum v4l2_field field;
0692: __u32 chromakey;
0693: struct v4l2_clip *clips;
0694: __u32 clipcount;
0695: void *bitmap;
0696: __u8 global_alpha;
0697: };
0698:
0699:
0700:
0701:
0702: struct v4l2_captureparm {
0703: __u32 capability;
0704: __u32 capturemode;
0705: struct v4l2_fract timeperframe;
0706: __u32 extendedmode;
0707: __u32 readbuffers;
0708: __u32 reserved[4];
0709: };
0710:
0711:
0712: #define V4L2_MODE_HIGHQUALITY 0x0001
0713: #define V4L2_CAP_TIMEPERFRAME 0x1000
0714:
0715: struct v4l2_outputparm {
0716: __u32 capability;
0717: __u32 outputmode;
0718: struct v4l2_fract timeperframe;
0719: __u32 extendedmode;
0720: __u32 writebuffers;
0721: __u32 reserved[4];
0722: };
0723:
0724:
0725:
0726:
0727: struct v4l2_cropcap {
0728: enum v4l2_buf_type type;
0729: struct v4l2_rect bounds;
0730: struct v4l2_rect defrect;
0731: struct v4l2_fract pixelaspect;
0732: };
0733:
0734: struct v4l2_crop {
0735: enum v4l2_buf_type type;
0736: struct v4l2_rect c;
0737: };
0738:
0739:
0740:
0741:
0742:
0743: typedef __u64 v4l2_std_id;
0744:
0745:
0746: #define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
0747: #define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
0748: #define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
0749: #define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
0750: #define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
0751: #define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
0752: #define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
0753: #define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
0754:
0755: #define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
0756: #define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
0757: #define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
0758: #define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
0759:
0760: #define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
0761: #define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
0762: #define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000)
0763: #define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000)
0764:
0765: #define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
0766: #define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
0767: #define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
0768: #define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
0769: #define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
0770: #define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
0771: #define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
0772: #define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000)
0773:
0774:
0775: #define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
0776: #define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
0777:
0778: FIXME:
0779:
0780:
0781:
0782:
0783:
0784:
0785:
0786:
0787:
0788:
0789:
0790:
0791:
0792:
0793:
0794:
0795:
0796: #define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\
0797: V4L2_STD_NTSC_M_JP |\
0798: V4L2_STD_NTSC_M_KR)
0799:
0800: #define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\
0801: V4L2_STD_SECAM_K |\
0802: V4L2_STD_SECAM_K1)
0803:
0804: #define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\
0805: V4L2_STD_SECAM_G |\
0806: V4L2_STD_SECAM_H |\
0807: V4L2_STD_SECAM_DK |\
0808: V4L2_STD_SECAM_L |\
0809: V4L2_STD_SECAM_LC)
0810:
0811: #define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\
0812: V4L2_STD_PAL_B1 |\
0813: V4L2_STD_PAL_G)
0814: #define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
0815: V4L2_STD_PAL_D1 |\
0816: V4L2_STD_PAL_K)
0817:
0818:
0819:
0820:
0821:
0822: #define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
0823: V4L2_STD_PAL_DK |\
0824: V4L2_STD_PAL_H |\
0825: V4L2_STD_PAL_I)
0826:
0827: #define V4L2_STD_B (V4L2_STD_PAL_B |\
0828: V4L2_STD_PAL_B1 |\
0829: V4L2_STD_SECAM_B)
0830: #define V4L2_STD_G (V4L2_STD_PAL_G |\
0831: V4L2_STD_SECAM_G)
0832: #define V4L2_STD_H (V4L2_STD_PAL_H |\
0833: V4L2_STD_SECAM_H)
0834: #define V4L2_STD_L (V4L2_STD_SECAM_L |\
0835: V4L2_STD_SECAM_LC)
0836: #define V4L2_STD_GH (V4L2_STD_G |\
0837: V4L2_STD_H)
0838: #define V4L2_STD_DK (V4L2_STD_PAL_DK |\
0839: V4L2_STD_SECAM_DK)
0840: #define V4L2_STD_BG (V4L2_STD_B |\
0841: V4L2_STD_G)
0842: #define V4L2_STD_MN (V4L2_STD_PAL_M |\
0843: V4L2_STD_PAL_N |\
0844: V4L2_STD_PAL_Nc |\
0845: V4L2_STD_NTSC)
0846:
0847:
0848: #define V4L2_STD_MTS (V4L2_STD_NTSC_M |\
0849: V4L2_STD_PAL_M |\
0850: V4L2_STD_PAL_N |\
0851: V4L2_STD_PAL_Nc)
0852:
0853:
0854: #define V4L2_STD_525_60 (V4L2_STD_PAL_M |\
0855: V4L2_STD_PAL_60 |\
0856: V4L2_STD_NTSC |\
0857: V4L2_STD_NTSC_443)
0858:
0859: #define V4L2_STD_625_50 (V4L2_STD_PAL |\
0860: V4L2_STD_PAL_N |\
0861: V4L2_STD_PAL_Nc |\
0862: V4L2_STD_SECAM)
0863:
0864: #define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\
0865: V4L2_STD_ATSC_16_VSB)
0866:
0867: #define V4L2_STD_UNKNOWN 0
0868: #define V4L2_STD_ALL (V4L2_STD_525_60 |\
0869: V4L2_STD_625_50)
0870:
0871: struct v4l2_standard {
0872: __u32 index;
0873: v4l2_std_id id;
0874: __u8 name[24];
0875: struct v4l2_fract frameperiod;
0876: __u32 framelines;
0877: __u32 reserved[4];
0878: };
0879:
0880:
0881:
0882:
0883: struct v4l2_dv_preset {
0884: __u32 preset;
0885: __u32 reserved[4];
0886: };
0887:
0888:
0889:
0890:
0891: struct v4l2_dv_enum_preset {
0892: __u32 index;
0893: __u32 preset;
0894: __u8 name[32];
0895: __u32 width;
0896: __u32 height;
0897: __u32 reserved[4];
0898: };
0899:
0900:
0901:
0902:
0903: #define V4L2_DV_INVALID 0
0904: #define V4L2_DV_480P59_94 1
0905: #define V4L2_DV_576P50 2
0906: #define V4L2_DV_720P24 3
0907: #define V4L2_DV_720P25 4
0908: #define V4L2_DV_720P30 5
0909: #define V4L2_DV_720P50 6
0910: #define V4L2_DV_720P59_94 7
0911: #define V4L2_DV_720P60 8
0912: #define V4L2_DV_1080I29_97 9
0913: #define V4L2_DV_1080I30 10
0914: #define V4L2_DV_1080I25 11
0915: #define V4L2_DV_1080I50 12
0916: #define V4L2_DV_1080I60 13
0917: #define V4L2_DV_1080P24 14
0918: #define V4L2_DV_1080P25 15
0919: #define V4L2_DV_1080P30 16
0920: #define V4L2_DV_1080P50 17
0921: #define V4L2_DV_1080P60 18
0922:
0923:
0924:
0925:
0926:
0927:
0928: struct v4l2_bt_timings {
0929: __u32 width;
0930: __u32 height;
0931: __u32 interlaced;
0932: __u32 polarities;
0933: __u64 pixelclock;
0934: __u32 hfrontporch;
0935: __u32 hsync;
0936: __u32 hbackporch;
0937: __u32 vfrontporch;
0938: __u32 vsync;
0939: __u32 vbackporch;
0940: __u32 il_vfrontporch;
0941:
0942:
0943: __u32 il_vsync;
0944:
0945:
0946: __u32 il_vbackporch;
0947:
0948:
0949: __u32 reserved[16];
0950: } __attribute__ ((packed));
0951:
0952:
0953: #define V4L2_DV_PROGRESSIVE 0
0954: #define V4L2_DV_INTERLACED 1
0955:
0956:
0957: #define V4L2_DV_VSYNC_POS_POL 0x00000001
0958: #define V4L2_DV_HSYNC_POS_POL 0x00000002
0959:
0960:
0961:
0962: struct v4l2_dv_timings {
0963: __u32 type;
0964: union {
0965: struct v4l2_bt_timings bt;
0966: __u32 reserved[32];
0967: };
0968: } __attribute__ ((packed));
0969:
0970:
0971: #define V4L2_DV_BT_656_1120 0
0972:
0973:
0974:
0975:
0976: struct v4l2_input {
0977: __u32 index;
0978: __u8 name[32];
0979: __u32 type;
0980: __u32 audioset;
0981: __u32 tuner;
0982: v4l2_std_id std;
0983: __u32 status;
0984: __u32 capabilities;
0985: __u32 reserved[3];
0986: };
0987:
0988:
0989: #define V4L2_INPUT_TYPE_TUNER 1
0990: #define V4L2_INPUT_TYPE_CAMERA 2
0991:
0992:
0993: #define V4L2_IN_ST_NO_POWER 0x00000001
0994: #define V4L2_IN_ST_NO_SIGNAL 0x00000002
0995: #define V4L2_IN_ST_NO_COLOR 0x00000004
0996:
0997:
0998:
0999: #define V4L2_IN_ST_HFLIP 0x00000010
1000: #define V4L2_IN_ST_VFLIP 0x00000020
1001:
1002:
1003: #define V4L2_IN_ST_NO_H_LOCK 0x00000100
1004: #define V4L2_IN_ST_COLOR_KILL 0x00000200
1005:
1006:
1007: #define V4L2_IN_ST_NO_SYNC 0x00010000
1008: #define V4L2_IN_ST_NO_EQU 0x00020000
1009: #define V4L2_IN_ST_NO_CARRIER 0x00040000
1010:
1011:
1012: #define V4L2_IN_ST_MACROVISION 0x01000000
1013: #define V4L2_IN_ST_NO_ACCESS 0x02000000
1014: #define V4L2_IN_ST_VTR 0x04000000
1015:
1016:
1017: #define V4L2_IN_CAP_PRESETS 0x00000001
1018: #define V4L2_IN_CAP_CUSTOM_TIMINGS 0x00000002
1019: #define V4L2_IN_CAP_STD 0x00000004
1020:
1021:
1022:
1023:
1024: struct v4l2_output {
1025: __u32 index;
1026: __u8 name[32];
1027: __u32 type;
1028: __u32 audioset;
1029: __u32 modulator;
1030: v4l2_std_id std;
1031: __u32 capabilities;
1032: __u32 reserved[3];
1033: };
1034:
1035: #define V4L2_OUTPUT_TYPE_MODULATOR 1
1036: #define V4L2_OUTPUT_TYPE_ANALOG 2
1037: #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
1038:
1039:
1040: #define V4L2_OUT_CAP_PRESETS 0x00000001
1041: #define V4L2_OUT_CAP_CUSTOM_TIMINGS 0x00000002
1042: #define V4L2_OUT_CAP_STD 0x00000004
1043:
1044:
1045:
1046:
1047: struct v4l2_control {
1048: __u32 id;
1049: __s32 value;
1050: };
1051:
1052: struct v4l2_ext_control {
1053: __u32 id;
1054: __u32 size;
1055: __u32 reserved2[1];
1056: union {
1057: __s32 value;
1058: __s64 value64;
1059: char *string;
1060: };
1061: } __attribute__ ((packed));
1062:
1063: struct v4l2_ext_controls {
1064: __u32 ctrl_class;
1065: __u32 count;
1066: __u32 error_idx;
1067: __u32 reserved[2];
1068: struct v4l2_ext_control *controls;
1069: };
1070:
1071:
1072: #define V4L2_CTRL_CLASS_USER 0x00980000
1073: #define V4L2_CTRL_CLASS_MPEG 0x00990000
1074: #define V4L2_CTRL_CLASS_CAMERA 0x009a0000
1075: #define V4L2_CTRL_CLASS_FM_TX 0x009b0000
1076: #define V4L2_CTRL_CLASS_FLASH 0x009c0000
1077:
1078: #define V4L2_CTRL_ID_MASK (0x0fffffff)
1079: #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
1080: #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
1081:
1082: enum v4l2_ctrl_type {
1083: V4L2_CTRL_TYPE_INTEGER = 1,
1084: V4L2_CTRL_TYPE_BOOLEAN = 2,
1085: V4L2_CTRL_TYPE_MENU = 3,
1086: V4L2_CTRL_TYPE_BUTTON = 4,
1087: V4L2_CTRL_TYPE_INTEGER64 = 5,
1088: V4L2_CTRL_TYPE_CTRL_CLASS = 6,
1089: V4L2_CTRL_TYPE_STRING = 7,
1090: V4L2_CTRL_TYPE_BITMASK = 8,
1091: };
1092:
1093:
1094: struct v4l2_queryctrl {
1095: __u32 id;
1096: enum v4l2_ctrl_type type;
1097: __u8 name[32];
1098: __s32 minimum;
1099: __s32 maximum;
1100: __s32 step;
1101: __s32 default_value;
1102: __u32 flags;
1103: __u32 reserved[2];
1104: };
1105:
1106:
1107: struct v4l2_querymenu {
1108: __u32 id;
1109: __u32 index;
1110: __u8 name[32];
1111: __u32 reserved;
1112: };
1113:
1114:
1115: #define V4L2_CTRL_FLAG_DISABLED 0x0001
1116: #define V4L2_CTRL_FLAG_GRABBED 0x0002
1117: #define V4L2_CTRL_FLAG_READ_ONLY 0x0004
1118: #define V4L2_CTRL_FLAG_UPDATE 0x0008
1119: #define V4L2_CTRL_FLAG_INACTIVE 0x0010
1120: #define V4L2_CTRL_FLAG_SLIDER 0x0020
1121: #define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040
1122: #define V4L2_CTRL_FLAG_VOLATILE 0x0080
1123:
1124:
1125: #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
1126:
1127:
1128: #define V4L2_CID_MAX_CTRLS 1024
1129: #define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
1130: #define V4L2_CID_USER_BASE V4L2_CID_BASE
1131:
1132: #define V4L2_CID_PRIVATE_BASE 0x08000000
1133:
1134: #define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)
1135: #define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
1136: #define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
1137: #define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
1138: #define V4L2_CID_HUE (V4L2_CID_BASE+3)
1139: #define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)
1140: #define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)
1141: #define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)
1142: #define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)
1143: #define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)
1144: #define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)
1145: #define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11)
1146: #define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
1147: #define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)
1148: #define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)
1149: #define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)
1150: #define V4L2_CID_GAMMA (V4L2_CID_BASE+16)
1151: #define V4L2_CID_WHITENESS (V4L2_CID_GAMMA)
1152: #define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)
1153: #define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)
1154: #define V4L2_CID_GAIN (V4L2_CID_BASE+19)
1155: #define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
1156: #define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
1157:
1158:
1159: #define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
1160: #define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
1161:
1162: #define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
1163: enum v4l2_power_line_frequency {
1164: V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
1165: V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1,
1166: V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2,
1167: V4L2_CID_POWER_LINE_FREQUENCY_AUTO = 3,
1168: };
1169: #define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25)
1170: #define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26)
1171: #define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27)
1172: #define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28)
1173: #define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
1174: #define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30)
1175: #define V4L2_CID_COLORFX (V4L2_CID_BASE+31)
1176: enum v4l2_colorfx {
1177: V4L2_COLORFX_NONE = 0,
1178: V4L2_COLORFX_BW = 1,
1179: V4L2_COLORFX_SEPIA = 2,
1180: V4L2_COLORFX_NEGATIVE = 3,
1181: V4L2_COLORFX_EMBOSS = 4,
1182: V4L2_COLORFX_SKETCH = 5,
1183: V4L2_COLORFX_SKY_BLUE = 6,
1184: V4L2_COLORFX_GRASS_GREEN = 7,
1185: V4L2_COLORFX_SKIN_WHITEN = 8,
1186: V4L2_COLORFX_VIVID = 9,
1187: };
1188: #define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32)
1189: #define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33)
1190:
1191: #define V4L2_CID_ROTATE (V4L2_CID_BASE+34)
1192: #define V4L2_CID_BG_COLOR (V4L2_CID_BASE+35)
1193:
1194: #define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE+36)
1195:
1196: #define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE+37)
1197: #define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE+38)
1198:
1199: #define V4L2_CID_MIN_BUFFERS_FOR_CAPTURE (V4L2_CID_BASE+39)
1200: #define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT (V4L2_CID_BASE+40)
1201:
1202:
1203: #define V4L2_CID_LASTP1 (V4L2_CID_BASE+41)
1204:
1205:
1206:
1207:
1208: #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
1209: #define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
1210:
1211:
1212: #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0)
1213: enum v4l2_mpeg_stream_type {
1214: V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0,
1215: V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1,
1216: V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2,
1217: V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3,
1218: V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4,
1219: V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5,
1220: };
1221: #define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)
1222: #define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)
1223: #define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)
1224: #define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)
1225: #define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)
1226: #define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)
1227: #define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7)
1228: enum v4l2_mpeg_stream_vbi_fmt {
1229: V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,
1230: V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,
1231: };
1232:
1233:
1234: #define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100)
1235: enum v4l2_mpeg_audio_sampling_freq {
1236: V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
1237: V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
1238: V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
1239: };
1240: #define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)
1241: enum v4l2_mpeg_audio_encoding {
1242: V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
1243: V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
1244: V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
1245: V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
1246: V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
1247: };
1248: #define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)
1249: enum v4l2_mpeg_audio_l1_bitrate {
1250: V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
1251: V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
1252: V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2,
1253: V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
1254: V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
1255: V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
1256: V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
1257: V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
1258: V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
1259: V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
1260: V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
1261: V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
1262: V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
1263: V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
1264: };
1265: #define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103)
1266: enum v4l2_mpeg_audio_l2_bitrate {
1267: V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
1268: V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
1269: V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2,
1270: V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3,
1271: V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4,
1272: V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5,
1273: V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
1274: V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
1275: V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
1276: V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
1277: V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
1278: V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
1279: V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
1280: V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
1281: };
1282: #define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104)
1283: enum v4l2_mpeg_audio_l3_bitrate {
1284: V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
1285: V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
1286: V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2,
1287: V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3,
1288: V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4,
1289: V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5,
1290: V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6,
1291: V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
1292: V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
1293: V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
1294: V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
1295: V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
1296: V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
1297: V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
1298: };
1299: #define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105)
1300: enum v4l2_mpeg_audio_mode {
1301: V4L2_MPEG_AUDIO_MODE_STEREO = 0,
1302: V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
1303: V4L2_MPEG_AUDIO_MODE_DUAL = 2,
1304: V4L2_MPEG_AUDIO_MODE_MONO = 3,
1305: };
1306: #define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106)
1307: enum v4l2_mpeg_audio_mode_extension {
1308: V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
1309: V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
1310: V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
1311: V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
1312: };
1313: #define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107)
1314: enum v4l2_mpeg_audio_emphasis {
1315: V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
1316: V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
1317: V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
1318: };
1319: #define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108)
1320: enum v4l2_mpeg_audio_crc {
1321: V4L2_MPEG_AUDIO_CRC_NONE = 0,
1322: V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
1323: };
1324: #define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109)
1325: #define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE+110)
1326: #define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+111)
1327: enum v4l2_mpeg_audio_ac3_bitrate {
1328: V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
1329: V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
1330: V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2,
1331: V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3,
1332: V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4,
1333: V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5,
1334: V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6,
1335: V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
1336: V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
1337: V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
1338: V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
1339: V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
1340: V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
1341: V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
1342: V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
1343: V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
1344: V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
1345: V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
1346: V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
1347: };
1348:
1349:
1350: #define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)
1351: enum v4l2_mpeg_video_encoding {
1352: V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
1353: V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
1354: V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
1355: };
1356: #define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201)
1357: enum v4l2_mpeg_video_aspect {
1358: V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
1359: V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
1360: V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
1361: V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
1362: };
1363: #define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202)
1364: #define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203)
1365: #define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204)
1366: #define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205)
1367: #define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206)
1368: enum v4l2_mpeg_video_bitrate_mode {
1369: V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
1370: V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
1371: };
1372: #define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207)
1373: #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208)
1374: #define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
1375: #define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210)
1376: #define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211)
1377: #define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_MPEG_BASE+212)
1378: #define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_MPEG_BASE+213)
1379: #define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_MPEG_BASE+214)
1380: #define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_MPEG_BASE+215)
1381: #define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_MPEG_BASE+216)
1382: enum v4l2_mpeg_video_header_mode {
1383: V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,
1384: V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,
1385:
1386: };
1387: #define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_MPEG_BASE+217)
1388: #define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_MPEG_BASE+218)
1389: #define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_MPEG_BASE+219)
1390: #define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_MPEG_BASE+220)
1391: #define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_MPEG_BASE+221)
1392: enum v4l2_mpeg_video_multi_slice_mode {
1393: V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
1394: V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1,
1395: V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
1396: };
1397: #define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222)
1398: #define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300)
1399: #define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301)
1400: #define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_MPEG_BASE+302)
1401: #define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_MPEG_BASE+303)
1402: #define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_MPEG_BASE+304)
1403: #define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_MPEG_BASE+350)
1404: #define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_MPEG_BASE+351)
1405: #define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_MPEG_BASE+352)
1406: #define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_MPEG_BASE+353)
1407: #define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_MPEG_BASE+354)
1408: #define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_MPEG_BASE+355)
1409: #define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_MPEG_BASE+356)
1410: #define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_MPEG_BASE+357)
1411: enum v4l2_mpeg_video_h264_entropy_mode {
1412: V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
1413: V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
1414: };
1415: #define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_MPEG_BASE+358)
1416: #define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_MPEG_BASE+359)
1417: enum v4l2_mpeg_video_h264_level {
1418: V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,
1419: V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,
1420: V4L2_MPEG_VIDEO_H264_LEVEL_1_1 = 2,
1421: V4L2_MPEG_VIDEO_H264_LEVEL_1_2 = 3,
1422: V4L2_MPEG_VIDEO_H264_LEVEL_1_3 = 4,
1423: V4L2_MPEG_VIDEO_H264_LEVEL_2_0 = 5,
1424: V4L2_MPEG_VIDEO_H264_LEVEL_2_1 = 6,
1425: V4L2_MPEG_VIDEO_H264_LEVEL_2_2 = 7,
1426: V4L2_MPEG_VIDEO_H264_LEVEL_3_0 = 8,
1427: V4L2_MPEG_VIDEO_H264_LEVEL_3_1 = 9,
1428: V4L2_MPEG_VIDEO_H264_LEVEL_3_2 = 10,
1429: V4L2_MPEG_VIDEO_H264_LEVEL_4_0 = 11,
1430: V4L2_MPEG_VIDEO_H264_LEVEL_4_1 = 12,
1431: V4L2_MPEG_VIDEO_H264_LEVEL_4_2 = 13,
1432: V4L2_MPEG_VIDEO_H264_LEVEL_5_0 = 14,
1433: V4L2_MPEG_VIDEO_H264_LEVEL_5_1 = 15,
1434: };
1435: #define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_MPEG_BASE+360)
1436: #define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_MPEG_BASE+361)
1437: #define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE+362)
1438: enum v4l2_mpeg_video_h264_loop_filter_mode {
1439: V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,
1440: V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,
1441: V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
1442: };
1443: #define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_MPEG_BASE+363)
1444: enum v4l2_mpeg_video_h264_profile {
1445: V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,
1446: V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,
1447: V4L2_MPEG_VIDEO_H264_PROFILE_MAIN = 2,
1448: V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED = 3,
1449: V4L2_MPEG_VIDEO_H264_PROFILE_HIGH = 4,
1450: V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10 = 5,
1451: V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422 = 6,
1452: V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE = 7,
1453: V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA = 8,
1454: V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA = 9,
1455: V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA = 10,
1456: V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA = 11,
1457: V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE = 12,
1458: V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH = 13,
1459: V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA = 14,
1460: V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH = 15,
1461: V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,
1462: };
1463: #define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_MPEG_BASE+364)
1464: #define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_MPEG_BASE+365)
1465: #define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_MPEG_BASE+366)
1466: #define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_MPEG_BASE+367)
1467: enum v4l2_mpeg_video_h264_vui_sar_idc {
1468: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,
1469: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,
1470: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11 = 2,
1471: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11 = 3,
1472: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11 = 4,
1473: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33 = 5,
1474: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11 = 6,
1475: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11 = 7,
1476: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11 = 8,
1477: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33 = 9,
1478: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11 = 10,
1479: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11 = 11,
1480: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33 = 12,
1481: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99 = 13,
1482: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3 = 14,
1483: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2 = 15,
1484: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,
1485: V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,
1486: };
1487: #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400)
1488: #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401)
1489: #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402)
1490: #define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_MPEG_BASE+403)
1491: #define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_MPEG_BASE+404)
1492: #define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_MPEG_BASE+405)
1493: enum v4l2_mpeg_video_mpeg4_level {
1494: V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,
1495: V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,
1496: V4L2_MPEG_VIDEO_MPEG4_LEVEL_1 = 2,
1497: V4L2_MPEG_VIDEO_MPEG4_LEVEL_2 = 3,
1498: V4L2_MPEG_VIDEO_MPEG4_LEVEL_3 = 4,
1499: V4L2_MPEG_VIDEO_MPEG4_LEVEL_3B = 5,
1500: V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,
1501: V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,
1502: };
1503: #define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_MPEG_BASE+406)
1504: enum v4l2_mpeg_video_mpeg4_profile {
1505: V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,
1506: V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,
1507: V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE = 2,
1508: V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,
1509: V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,
1510: };
1511: #define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_MPEG_BASE+407)
1512:
1513:
1514: #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
1515: #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)
1516: enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
1517: V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
1518: V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
1519: };
1520: #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1)
1521: #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2)
1522: enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
1523: V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
1524: V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
1525: V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2,
1526: V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
1527: V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
1528: };
1529: #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3)
1530: enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
1531: V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
1532: V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
1533: };
1534: #define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4)
1535: enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
1536: V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
1537: V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
1538: };
1539: #define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5)
1540: #define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6)
1541: enum v4l2_mpeg_cx2341x_video_median_filter_type {
1542: V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
1543: V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
1544: V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2,
1545: V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
1546: V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
1547: };
1548: #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7)
1549: #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8)
1550: #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
1551: #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10)
1552: #define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11)
1553:
1554:
1555: #define V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100)
1556:
1557: #define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_MPEG_MFC51_BASE+0)
1558: #define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_MPEG_MFC51_BASE+1)
1559: #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_MFC51_BASE+2)
1560: enum v4l2_mpeg_mfc51_video_frame_skip_mode {
1561: V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
1562: V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
1563: V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
1564: };
1565: #define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_MPEG_MFC51_BASE+3)
1566: enum v4l2_mpeg_mfc51_video_force_frame_type {
1567: V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,
1568: V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,
1569: V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,
1570: };
1571: #define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_MPEG_MFC51_BASE+4)
1572: #define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_MPEG_MFC51_BASE+5)
1573: #define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_MPEG_MFC51_BASE+6)
1574: #define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_MPEG_MFC51_BASE+7)
1575: #define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_MPEG_MFC51_BASE+50)
1576: #define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_MPEG_MFC51_BASE+51)
1577: #define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_MPEG_MFC51_BASE+52)
1578: #define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_MPEG_MFC51_BASE+53)
1579: #define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_MPEG_MFC51_BASE+54)
1580:
1581:
1582: #define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
1583: #define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
1584:
1585: #define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1)
1586: enum v4l2_exposure_auto_type {
1587: V4L2_EXPOSURE_AUTO = 0,
1588: V4L2_EXPOSURE_MANUAL = 1,
1589: V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
1590: V4L2_EXPOSURE_APERTURE_PRIORITY = 3
1591: };
1592: #define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2)
1593: #define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3)
1594:
1595: #define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4)
1596: #define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5)
1597: #define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6)
1598: #define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7)
1599:
1600: #define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8)
1601: #define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9)
1602:
1603: #define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)
1604: #define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)
1605: #define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12)
1606:
1607: #define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)
1608: #define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)
1609: #define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE+15)
1610:
1611: #define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16)
1612:
1613: #define V4L2_CID_IRIS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+17)
1614: #define V4L2_CID_IRIS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+18)
1615:
1616:
1617: #define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
1618: #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
1619:
1620: #define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1)
1621: #define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2)
1622: #define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3)
1623: #define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5)
1624: #define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6)
1625:
1626: #define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64)
1627: #define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65)
1628: #define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66)
1629:
1630: #define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80)
1631: #define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81)
1632: #define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82)
1633: #define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83)
1634: #define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84)
1635:
1636: #define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96)
1637: #define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97)
1638: #define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98)
1639:
1640: #define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112)
1641: enum v4l2_preemphasis {
1642: V4L2_PREEMPHASIS_DISABLED = 0,
1643: V4L2_PREEMPHASIS_50_uS = 1,
1644: V4L2_PREEMPHASIS_75_uS = 2,
1645: };
1646: #define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113)
1647: #define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114)
1648:
1649:
1650: #define V4L2_CID_FLASH_CLASS_BASE (V4L2_CTRL_CLASS_FLASH | 0x900)
1651: #define V4L2_CID_FLASH_CLASS (V4L2_CTRL_CLASS_FLASH | 1)
1652:
1653: #define V4L2_CID_FLASH_LED_MODE (V4L2_CID_FLASH_CLASS_BASE + 1)
1654: enum v4l2_flash_led_mode {
1655: V4L2_FLASH_LED_MODE_NONE,
1656: V4L2_FLASH_LED_MODE_FLASH,
1657: V4L2_FLASH_LED_MODE_TORCH,
1658: };
1659:
1660: #define V4L2_CID_FLASH_STROBE_SOURCE (V4L2_CID_FLASH_CLASS_BASE + 2)
1661: enum v4l2_flash_strobe_source {
1662: V4L2_FLASH_STROBE_SOURCE_SOFTWARE,
1663: V4L2_FLASH_STROBE_SOURCE_EXTERNAL,
1664: };
1665:
1666: #define V4L2_CID_FLASH_STROBE (V4L2_CID_FLASH_CLASS_BASE + 3)
1667: #define V4L2_CID_FLASH_STROBE_STOP (V4L2_CID_FLASH_CLASS_BASE + 4)
1668: #define V4L2_CID_FLASH_STROBE_STATUS (V4L2_CID_FLASH_CLASS_BASE + 5)
1669:
1670: #define V4L2_CID_FLASH_TIMEOUT (V4L2_CID_FLASH_CLASS_BASE + 6)
1671: #define V4L2_CID_FLASH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 7)
1672: #define V4L2_CID_FLASH_TORCH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 8)
1673: #define V4L2_CID_FLASH_INDICATOR_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 9)
1674:
1675: #define V4L2_CID_FLASH_FAULT (V4L2_CID_FLASH_CLASS_BASE + 10)
1676: #define V4L2_FLASH_FAULT_OVER_VOLTAGE (1 << 0)
1677: #define V4L2_FLASH_FAULT_TIMEOUT (1 << 1)
1678: #define V4L2_FLASH_FAULT_OVER_TEMPERATURE (1 << 2)
1679: #define V4L2_FLASH_FAULT_SHORT_CIRCUIT (1 << 3)
1680:
1681: #define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11)
1682: #define V4L2_CID_FLASH_READY (V4L2_CID_FLASH_CLASS_BASE + 12)
1683:
1684:
1685:
1686:
1687: struct v4l2_tuner {
1688: __u32 index;
1689: __u8 name[32];
1690: enum v4l2_tuner_type type;
1691: __u32 capability;
1692: __u32 rangelow;
1693: __u32 rangehigh;
1694: __u32 rxsubchans;
1695: __u32 audmode;
1696: __s32 signal;
1697: __s32 afc;
1698: __u32 reserved[4];
1699: };
1700:
1701: struct v4l2_modulator {
1702: __u32 index;
1703: __u8 name[32];
1704: __u32 capability;
1705: __u32 rangelow;
1706: __u32 rangehigh;
1707: __u32 txsubchans;
1708: __u32 reserved[4];
1709: };
1710:
1711:
1712: #define V4L2_TUNER_CAP_LOW 0x0001
1713: #define V4L2_TUNER_CAP_NORM 0x0002
1714: #define V4L2_TUNER_CAP_STEREO 0x0010
1715: #define V4L2_TUNER_CAP_LANG2 0x0020
1716: #define V4L2_TUNER_CAP_SAP 0x0020
1717: #define V4L2_TUNER_CAP_LANG1 0x0040
1718: #define V4L2_TUNER_CAP_RDS 0x0080
1719: #define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100
1720: #define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200
1721:
1722:
1723: #define V4L2_TUNER_SUB_MONO 0x0001
1724: #define V4L2_TUNER_SUB_STEREO 0x0002
1725: #define V4L2_TUNER_SUB_LANG2 0x0004
1726: #define V4L2_TUNER_SUB_SAP 0x0004
1727: #define V4L2_TUNER_SUB_LANG1 0x0008
1728: #define V4L2_TUNER_SUB_RDS 0x0010
1729:
1730:
1731: #define V4L2_TUNER_MODE_MONO 0x0000
1732: #define V4L2_TUNER_MODE_STEREO 0x0001
1733: #define V4L2_TUNER_MODE_LANG2 0x0002
1734: #define V4L2_TUNER_MODE_SAP 0x0002
1735: #define V4L2_TUNER_MODE_LANG1 0x0003
1736: #define V4L2_TUNER_MODE_LANG1_LANG2 0x0004
1737:
1738: struct v4l2_frequency {
1739: __u32 tuner;
1740: enum v4l2_tuner_type type;
1741: __u32 frequency;
1742: __u32 reserved[8];
1743: };
1744:
1745: struct v4l2_hw_freq_seek {
1746: __u32 tuner;
1747: enum v4l2_tuner_type type;
1748: __u32 seek_upward;
1749: __u32 wrap_around;
1750: __u32 spacing;
1751: __u32 reserved[7];
1752: };
1753:
1754:
1755:
1756:
1757:
1758: struct v4l2_rds_data {
1759: __u8 lsb;
1760: __u8 msb;
1761: __u8 block;
1762: } __attribute__ ((packed));
1763:
1764: #define V4L2_RDS_BLOCK_MSK 0x7
1765: #define V4L2_RDS_BLOCK_A 0
1766: #define V4L2_RDS_BLOCK_B 1
1767: #define V4L2_RDS_BLOCK_C 2
1768: #define V4L2_RDS_BLOCK_D 3
1769: #define V4L2_RDS_BLOCK_C_ALT 4
1770: #define V4L2_RDS_BLOCK_INVALID 7
1771:
1772: #define V4L2_RDS_BLOCK_CORRECTED 0x40
1773: #define V4L2_RDS_BLOCK_ERROR 0x80
1774:
1775:
1776:
1777:
1778: struct v4l2_audio {
1779: __u32 index;
1780: __u8 name[32];
1781: __u32 capability;
1782: __u32 mode;
1783: __u32 reserved[2];
1784: };
1785:
1786:
1787: #define V4L2_AUDCAP_STEREO 0x00001
1788: #define V4L2_AUDCAP_AVL 0x00002
1789:
1790:
1791: #define V4L2_AUDMODE_AVL 0x00001
1792:
1793: struct v4l2_audioout {
1794: __u32 index;
1795: __u8 name[32];
1796: __u32 capability;
1797: __u32 mode;
1798: __u32 reserved[2];
1799: };
1800:
1801:
1802:
1803:
1804:
1805:
1806: #if 1
1807: #define V4L2_ENC_IDX_FRAME_I (0)
1808: #define V4L2_ENC_IDX_FRAME_P (1)
1809: #define V4L2_ENC_IDX_FRAME_B (2)
1810: #define V4L2_ENC_IDX_FRAME_MASK (0xf)
1811:
1812: struct v4l2_enc_idx_entry {
1813: __u64 offset;
1814: __u64 pts;
1815: __u32 length;
1816: __u32 flags;
1817: __u32 reserved[2];
1818: };
1819:
1820: #define V4L2_ENC_IDX_ENTRIES (64)
1821: struct v4l2_enc_idx {
1822: __u32 entries;
1823: __u32 entries_cap;
1824: __u32 reserved[4];
1825: struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
1826: };
1827:
1828:
1829: #define V4L2_ENC_CMD_START (0)
1830: #define V4L2_ENC_CMD_STOP (1)
1831: #define V4L2_ENC_CMD_PAUSE (2)
1832: #define V4L2_ENC_CMD_RESUME (3)
1833:
1834:
1835: #define V4L2_ENC_CMD_STOP_AT_GOP_END (1 << 0)
1836:
1837: struct v4l2_encoder_cmd {
1838: __u32 cmd;
1839: __u32 flags;
1840: union {
1841: struct {
1842: __u32 data[8];
1843: } raw;
1844: };
1845: };
1846:
1847: #endif
1848:
1849:
1850:
1851:
1852:
1853:
1854:
1855:
1856:
1857: struct v4l2_vbi_format {
1858: __u32 sampling_rate;
1859: __u32 offset;
1860: __u32 samples_per_line;
1861: __u32 sample_format;
1862: __s32 start[2];
1863: __u32 count[2];
1864: __u32 flags;
1865: __u32 reserved[2];
1866: };
1867:
1868:
1869: #define V4L2_VBI_UNSYNC (1 << 0)
1870: #define V4L2_VBI_INTERLACED (1 << 1)
1871:
1872:
1873:
1874:
1875:
1876:
1877:
1878:
1879: struct v4l2_sliced_vbi_format {
1880: __u16 service_set;
1881:
1882:
1883:
1884:
1885: __u16 service_lines[2][24];
1886: __u32 io_size;
1887: __u32 reserved[2];
1888: };
1889:
1890:
1891:
1892: #define V4L2_SLICED_TELETEXT_B (0x0001)
1893:
1894: #define V4L2_SLICED_VPS (0x0400)
1895:
1896: #define V4L2_SLICED_CAPTION_525 (0x1000)
1897:
1898: #define V4L2_SLICED_WSS_625 (0x4000)
1899:
1900: #define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525)
1901: #define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
1902:
1903: struct v4l2_sliced_vbi_cap {
1904: __u16 service_set;
1905:
1906:
1907:
1908:
1909: __u16 service_lines[2][24];
1910: enum v4l2_buf_type type;
1911: __u32 reserved[3];
1912: };
1913:
1914: struct v4l2_sliced_vbi_data {
1915: __u32 id;
1916: __u32 field;
1917: __u32 line;
1918: __u32 reserved;
1919: __u8 data[48];
1920: };
1921:
1922:
1923:
1924:
1925:
1926:
1927:
1928:
1929:
1930:
1931:
1932:
1933:
1934:
1935:
1936:
1937:
1938:
1939: #define V4L2_MPEG_VBI_IVTV_TELETEXT_B (1)
1940: #define V4L2_MPEG_VBI_IVTV_CAPTION_525 (4)
1941: #define V4L2_MPEG_VBI_IVTV_WSS_625 (5)
1942: #define V4L2_MPEG_VBI_IVTV_VPS (7)
1943:
1944: struct v4l2_mpeg_vbi_itv0_line {
1945: __u8 id;
1946: __u8 data[42];
1947: } __attribute__ ((packed));
1948:
1949: struct v4l2_mpeg_vbi_itv0 {
1950: __le32 linemask[2];
1951: struct v4l2_mpeg_vbi_itv0_line line[35];
1952: } __attribute__ ((packed));
1953:
1954: struct v4l2_mpeg_vbi_ITV0 {
1955: struct v4l2_mpeg_vbi_itv0_line line[36];
1956: } __attribute__ ((packed));
1957:
1958: #define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0"
1959: #define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0"
1960:
1961: struct v4l2_mpeg_vbi_fmt_ivtv {
1962: __u8 magic[4];
1963: union {
1964: struct v4l2_mpeg_vbi_itv0 itv0;
1965: struct v4l2_mpeg_vbi_ITV0 ITV0;
1966: };
1967: } __attribute__ ((packed));
1968:
1969:
1970:
1971:
1972:
1973:
1974:
1975: @sizeimage
1976:
1977: @bytesperline
1978:
1979:
1980: struct v4l2_plane_pix_format {
1981: __u32 sizeimage;
1982: __u16 bytesperline;
1983: __u16 reserved[7];
1984: } __attribute__ ((packed));
1985:
1986:
1987:
1988: @width
1989: @height
1990: @pixelformat
1991: @field
1992: @colorspace
1993: @plane
1994: @num
1995:
1996: struct v4l2_pix_format_mplane {
1997: __u32 width;
1998: __u32 height;
1999: __u32 pixelformat;
2000: enum v4l2_field field;
2001: enum v4l2_colorspace colorspace;
2002:
2003: struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES];
2004: __u8 num_planes;
2005: __u8 reserved[11];
2006: } __attribute__ ((packed));
2007:
2008:
2009:
2010: @type
2011: @pix
2012: @pix
2013: @win
2014: @vbi
2015: @sliced
2016: @raw
2017:
2018: struct v4l2_format {
2019: enum v4l2_buf_type type;
2020: union {
2021: struct v4l2_pix_format pix;
2022: struct v4l2_pix_format_mplane pix_mp;
2023: struct v4l2_window win;
2024: struct v4l2_vbi_format vbi;
2025: struct v4l2_sliced_vbi_format sliced;
2026: __u8 raw_data[200];
2027: } fmt;
2028: };
2029:
2030:
2031:
2032: struct v4l2_streamparm {
2033: enum v4l2_buf_type type;
2034: union {
2035: struct v4l2_captureparm capture;
2036: struct v4l2_outputparm output;
2037: __u8 raw_data[200];
2038: } parm;
2039: };
2040:
2041:
2042:
2043:
2044:
2045: #define V4L2_EVENT_ALL 0
2046: #define V4L2_EVENT_VSYNC 1
2047: #define V4L2_EVENT_EOS 2
2048: #define V4L2_EVENT_CTRL 3
2049: #define V4L2_EVENT_FRAME_SYNC 4
2050: #define V4L2_EVENT_PRIVATE_START 0x08000000
2051:
2052:
2053: struct v4l2_event_vsync {
2054:
2055: __u8 field;
2056: } __attribute__ ((packed));
2057:
2058:
2059: #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
2060: #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
2061:
2062: struct v4l2_event_ctrl {
2063: __u32 changes;
2064: __u32 type;
2065: union {
2066: __s32 value;
2067: __s64 value64;
2068: };
2069: __u32 flags;
2070: __s32 minimum;
2071: __s32 maximum;
2072: __s32 step;
2073: __s32 default_value;
2074: };
2075:
2076: struct v4l2_event_frame_sync {
2077: __u32 frame_sequence;
2078: };
2079:
2080: struct v4l2_event {
2081: __u32 type;
2082: union {
2083: struct v4l2_event_vsync vsync;
2084: struct v4l2_event_ctrl ctrl;
2085: struct v4l2_event_frame_sync frame_sync;
2086: __u8 data[64];
2087: } u;
2088: __u32 pending;
2089: __u32 sequence;
2090: struct timespec timestamp;
2091: __u32 id;
2092: __u32 reserved[8];
2093: };
2094:
2095: #define V4L2_EVENT_SUB_FL_SEND_INITIAL (1 << 0)
2096: #define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK (1 << 1)
2097:
2098: struct v4l2_event_subscription {
2099: __u32 type;
2100: __u32 id;
2101: __u32 flags;
2102: __u32 reserved[5];
2103: };
2104:
2105:
2106:
2107:
2108:
2109: BUG
2110:
2111:
2112:
2113:
2114: #define V4L2_CHIP_MATCH_HOST 0
2115: #define V4L2_CHIP_MATCH_I2C_DRIVER 1
2116: #define V4L2_CHIP_MATCH_I2C_ADDR 2
2117: #define V4L2_CHIP_MATCH_AC97 3
2118:
2119: struct v4l2_dbg_match {
2120: __u32 type;
2121: union {
2122: __u32 addr;
2123: char name[32];
2124: };
2125: } __attribute__ ((packed));
2126:
2127: struct v4l2_dbg_register {
2128: struct v4l2_dbg_match match;
2129: __u32 size;
2130: __u64 reg;
2131: __u64 val;
2132: } __attribute__ ((packed));
2133:
2134:
2135: struct v4l2_dbg_chip_ident {
2136: struct v4l2_dbg_match match;
2137: __u32 ident;
2138: __u32 revision;
2139: } __attribute__ ((packed));
2140:
2141:
2142:
2143: @index
2144: @count
2145:
2146: @memory
2147: @format
2148: @reserved
2149:
2150: struct v4l2_create_buffers {
2151: __u32 index;
2152: __u32 count;
2153: enum v4l2_memory memory;
2154: struct v4l2_format format;
2155: __u32 reserved[8];
2156: };
2157:
2158:
2159:
2160:
2161:
2162: #define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability)
2163: #define VIDIOC_RESERVED _IO('V', 1)
2164: #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc)
2165: #define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format)
2166: #define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format)
2167: #define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers)
2168: #define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer)
2169: #define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer)
2170: #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer)
2171: #define VIDIOC_OVERLAY _IOW('V', 14, int)
2172: #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer)
2173: #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer)
2174: #define VIDIOC_STREAMON _IOW('V', 18, int)
2175: #define VIDIOC_STREAMOFF _IOW('V', 19, int)
2176: #define VIDIOC_G_PARM _IOWR('V', 21, struct v4l2_streamparm)
2177: #define VIDIOC_S_PARM _IOWR('V', 22, struct v4l2_streamparm)
2178: #define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id)
2179: #define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id)
2180: #define VIDIOC_ENUMSTD _IOWR('V', 25, struct v4l2_standard)
2181: #define VIDIOC_ENUMINPUT _IOWR('V', 26, struct v4l2_input)
2182: #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
2183: #define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
2184: #define VIDIOC_G_TUNER _IOWR('V', 29, struct v4l2_tuner)
2185: #define VIDIOC_S_TUNER _IOW('V', 30, struct v4l2_tuner)
2186: #define VIDIOC_G_AUDIO _IOR('V', 33, struct v4l2_audio)
2187: #define VIDIOC_S_AUDIO _IOW('V', 34, struct v4l2_audio)
2188: #define VIDIOC_QUERYCTRL _IOWR('V', 36, struct v4l2_queryctrl)
2189: #define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu)
2190: #define VIDIOC_G_INPUT _IOR('V', 38, int)
2191: #define VIDIOC_S_INPUT _IOWR('V', 39, int)
2192: #define VIDIOC_G_OUTPUT _IOR('V', 46, int)
2193: #define VIDIOC_S_OUTPUT _IOWR('V', 47, int)
2194: #define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output)
2195: #define VIDIOC_G_AUDOUT _IOR('V', 49, struct v4l2_audioout)
2196: #define VIDIOC_S_AUDOUT _IOW('V', 50, struct v4l2_audioout)
2197: #define VIDIOC_G_MODULATOR _IOWR('V', 54, struct v4l2_modulator)
2198: #define VIDIOC_S_MODULATOR _IOW('V', 55, struct v4l2_modulator)
2199: #define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct v4l2_frequency)
2200: #define VIDIOC_S_FREQUENCY _IOW('V', 57, struct v4l2_frequency)
2201: #define VIDIOC_CROPCAP _IOWR('V', 58, struct v4l2_cropcap)
2202: #define VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop)
2203: #define VIDIOC_S_CROP _IOW('V', 60, struct v4l2_crop)
2204: #define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct v4l2_jpegcompression)
2205: #define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct v4l2_jpegcompression)
2206: #define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id)
2207: #define VIDIOC_TRY_FMT _IOWR('V', 64, struct v4l2_format)
2208: #define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct v4l2_audio)
2209: #define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct v4l2_audioout)
2210: #define VIDIOC_G_PRIORITY _IOR('V', 67, enum v4l2_priority)
2211: #define VIDIOC_S_PRIORITY _IOW('V', 68, enum v4l2_priority)
2212: #define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)
2213: #define VIDIOC_LOG_STATUS _IO('V', 70)
2214: #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
2215: #define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct v4l2_ext_controls)
2216: #define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct v4l2_ext_controls)
2217: #if 1
2218: #define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct v4l2_frmsizeenum)
2219: #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
2220: #define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct v4l2_enc_idx)
2221: #define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct v4l2_encoder_cmd)
2222: #define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct v4l2_encoder_cmd)
2223: #endif
2224:
2225: #if 1
2226:
2227: BUG
2228:
2229: #define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)
2230: #define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct v4l2_dbg_register)
2231:
2232:
2233:
2234: #define VIDIOC_DBG_G_CHIP_IDENT _IOWR('V', 81, struct v4l2_dbg_chip_ident)
2235: #endif
2236:
2237: #define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
2238: #define VIDIOC_ENUM_DV_PRESETS _IOWR('V', 83, struct v4l2_dv_enum_preset)
2239: #define VIDIOC_S_DV_PRESET _IOWR('V', 84, struct v4l2_dv_preset)
2240: #define VIDIOC_G_DV_PRESET _IOWR('V', 85, struct v4l2_dv_preset)
2241: #define VIDIOC_QUERY_DV_PRESET _IOR('V', 86, struct v4l2_dv_preset)
2242: #define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
2243: #define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
2244: #define VIDIOC_DQEVENT _IOR('V', 89, struct v4l2_event)
2245: #define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct v4l2_event_subscription)
2246: #define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)
2247:
2248:
2249:
2250: #define VIDIOC_CREATE_BUFS _IOWR('V', 92, struct v4l2_create_buffers)
2251: #define VIDIOC_PREPARE_BUF _IOWR('V', 93, struct v4l2_buffer)
2252:
2253:
2254:
2255:
2256: #define BASE_VIDIOC_PRIVATE 192
2257:
2258: #endif
2259:
© Andrew Scott 2006 -
2025,
All Rights Reserved