第一部分 - Linux 视频 API

本部分描述了 Linux 视频 API 版本 2 (V4L2 API) 规范。

修订版 4.5

目录

修订历史

修订:

4.10 / 2016-07-15 (rr)

引入 HSV 格式。

修订:

4.5 / 2015-10-29 (rr)

扩展 VIDIOC_G_EXT_CTRLS;。将 ctrl_class 替换为一个新的联合,其中包含 ctrl_class 和 which。Which 用于选择控件的当前值或默认值。

修订:

4.4 / 2015-05-26 (ap)

将 V4L2_TUNER_ADC 重命名为 V4L2_TUNER_SDR。添加 V4L2_CID_RF_TUNER_RF_GAIN 控制。为软件定义无线电 (SDR) 接口添加发射器支持。

修订:

4.1 / 2015-02-13 (mcc)

修复媒体控制器设备节点的文档,并添加对 DVB 设备节点的支持。添加对调谐器子设备的支持。

修订:

3.19 / 2014-12-05 (hv)

重写颜色空间章节,在结构体 v4l2_ycbcr_encoding 和枚举 v4l2_quantization 字段中添加新的枚举 v4l2_pix_format、结构体 v4l2_pix_format_mplane 和结构体 v4l2_mbus_framefmt

修订:

3.17 / 2014-08-04 (lp, hv)

扩展了结构体 v4l2_pix_format。添加格式标志。添加复合控制类型和 VIDIOC_QUERY_EXT_CTRL。

修订:

3.15 / 2014-02-03 (hv, ap)

更新了“通用 API 元素”的几个部分:“打开和关闭设备”、“查询功能”、“应用程序优先级”、“视频输入和输出”、“音频输入和输出”、“调谐器和调制器”、“视频标准”和“数字视频 (DV) 时序”。添加 SDR API。

修订:

3.14 / 2013-11-25 (rr)

将 v4l2_rect 上的宽度和高度设置为无符号。

修订:

3.11 / 2013-05-26 (hv)

删除过时的 VIDIOC_DBG_G_CHIP_IDENT ioctl。

修订:

3.10 / 2013-03-25 (hv)

删除过时且未使用的 DV_PRESET ioctl:VIDIOC_G_DV_PRESET、VIDIOC_S_DV_PRESET、VIDIOC_QUERY_DV_PRESET 和 VIDIOC_ENUM_DV_PRESET。删除相关的 v4l2_input/output 功能标志 V4L2_IN_CAP_PRESETS 和 V4L2_OUT_CAP_PRESETS。添加 VIDIOC_DBG_G_CHIP_INFO。

修订:

3.9 / 2012-12-03 (sa, sn)

将时间戳类型添加到 v4l2_buffer。添加 V4L2_EVENT_CTRL_CH_RANGE 控制事件更改标志。

修订:

3.6 / 2012-07-02 (hv)

添加 VIDIOC_ENUM_FREQ_BANDS。

修订:

3.5 / 2012-05-07 (sa, sn, hv)

添加 V4L2_CTRL_TYPE_INTEGER_MENU 和 V4L2 子设备选择 API。改进了 V4L2_CID_COLORFX 控件的描述,添加了 V4L2_CID_COLORFX_CBCR 控件。添加相机控制 V4L2_CID_AUTO_EXPOSURE_BIAS、V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE、V4L2_CID_IMAGE_STABILIZATION、V4L2_CID_ISO_SENSITIVITY、V4L2_CID_ISO_SENSITIVITY_AUTO、V4L2_CID_EXPOSURE_METERING、V4L2_CID_SCENE_MODE、V4L2_CID_3A_LOCK、V4L2_CID_AUTO_FOCUS_START、V4L2_CID_AUTO_FOCUS_STOP、V4L2_CID_AUTO_FOCUS_STATUS 和 V4L2_CID_AUTO_FOCUS_RANGE。添加 VIDIOC_ENUM_DV_TIMINGS、VIDIOC_QUERY_DV_TIMINGS 和 VIDIOC_DV_TIMINGS_CAP。

修订:

3.4 / 2012-01-25 (sn)

添加 JPEG 压缩控制类。

修订:

3.3 / 2012-01-11 (hv)

向结构体 v4l2_capabilities 添加 device_caps 字段。

修订:

3.2 / 2011-08-26 (hv)

添加 V4L2_CTRL_FLAG_VOLATILE。

修订:

3.1 / 2011-06-27 (mcc, po, hv)

记录了 VIDIOC_QUERYCAP 现在返回每个子系统的版本,而不是每个驱动程序的版本。为无效的 ioctl 标准化一个错误代码。添加 V4L2_CTRL_TYPE_BITMASK。

修订:

2.6.39 / 2011-03-01 (mcc, po)

从 videodev2.h 标头中删除 VIDIOC_*_OLD,并对其进行更新以反映最新的更改。添加了 多平面 API

修订:

2.6.37 / 2010-08-06 (hv)

删除过时的 vtx (视频文本) API。

修订:

2.6.33 / 2009-12-03 (mk)

添加了数字视频时序 API 的文档。

修订:

2.6.32 / 2009-08-31 (mcc)

现在,修订将与 Linux 内核将使用 V4L2 API 更改的内核版本相匹配。还添加了遥控器章节。

修订:

0.29 / 2009-08-26 (ev)

添加了字符串控件和 FM 发射器控件的文档。

修订:

0.28 / 2009-08-26 (gl)

添加了 V4L2_CID_BAND_STOP_FILTER 文档。

修订:

0.27 / 2009-08-15 (mcc)

添加 libv4l 和遥控器文档;添加 v4l2grab 和 keytable 应用程序示例。

修订:

0.26 / 2009-07-23 (hv)

最终确定了 RDS 捕获 API。添加了调制器和 RDS 编码器功能。添加了对字符串控件的支持。

修订:

0.25 / 2009-01-18 (hv)

添加了像素格式 VYUY、NV16 和 NV61,并更改了调试 ioctl VIDIOC_DBG_G/S_REGISTER 和 VIDIOC_DBG_G_CHIP_IDENT。添加了相机控制 V4L2_CID_ZOOM_ABSOLUTE、V4L2_CID_ZOOM_RELATIVE、V4L2_CID_ZOOM_CONTINUOUS 和 V4L2_CID_PRIVACY。

修订:

0.24 / 2008-03-04 (mhs)

添加了像素格式 Y16 和 SBGGR16,新控件和相机控件类。删除了 VIDIOC_G/S_MPEGCOMP。

修订:

0.23 / 2007-08-30 (mhs)

修复了 VIDIOC_DBG_G/S_REGISTER 中的拼写错误。澄清了打包像素格式的字节顺序。

修订:

0.22 / 2007-08-29 (mhs)

添加了视频输出覆盖接口、新的 MPEG 控件、V4L2_FIELD_INTERLACED_TB 和 V4L2_FIELD_INTERLACED_BT、VIDIOC_DBG_G/S_REGISTER、VIDIOC_(TRY_)ENCODER_CMD、VIDIOC_G_CHIP_IDENT、VIDIOC_G_ENC_INDEX、新的像素格式。澄清了有关 RGB 像素格式、mmap()、poll()、select()、read() 和 write() 函数的裁剪章节。排版修复。

修订:

0.21 / 2006-12-19 (mhs)

修复了 VIDIOC_G_EXT_CTRLS 部分中的链接。

修订:

0.20 / 2006-11-24 (mhs)

澄清了结构体 v4l2_input 和 v4l2_output 中 audioset 字段的目的。

修订:

0.19 / 2006-10-19 (mhs)

记录了 V4L2_PIX_FMT_RGB444。

修订:

0.18 / 2006-10-18 (mhs)

添加了 Hans Verkuil 对扩展控件的描述。将 V4L2_PIX_FMT_MPEG 链接到 V4L2_CID_MPEG_STREAM_TYPE。

修订:

0.17 / 2006-10-12 (mhs)

更正了 V4L2_PIX_FMT_HM12 的描述。

修订:

0.16 / 2006-10-08 (mhs)

VIDIOC_ENUM_FRAMESIZES 和 VIDIOC_ENUM_FRAMEINTERVALS 现在是 API 的一部分。

修订:

0.15 / 2006-09-23 (mhs)

清理了参考书目,添加了 BT.653 和 BT.1119。用于用户指针 I/O 的 capture.c/start_capturing() 未初始化缓冲区索引。记录了 V4L MPEG 和 MJPEG VID_TYPE 以及 V4L2_PIX_FMT_SBGGR8。更新了保留像素格式的列表。有关 API 更改,请参阅历史记录章节。

修订:

0.14 / 2006-09-14 (mr)

为数字设备的帧格式枚举添加了 VIDIOC_ENUM_FRAMESIZES 和 VIDIOC_ENUM_FRAMEINTERVALS 提案。

修订:

0.13 / 2006-04-07 (mhs)

更正了 struct v4l2_window 剪辑的描述。新的 V4L2_STD_ 和 V4L2_TUNER_MODE_LANG1_LANG2 定义。

修订:

0.12 / 2006-02-03 (mhs)

更正了结构体 v4l2_captureparm 和 v4l2_outputparm 的描述。

修订:

0.11 / 2006-01-27 (mhs)

改进了结构体 v4l2_tuner 的描述。

修订:

0.10 / 2006-01-10 (mhs)

VIDIOC_G_INPUT 和 VIDIOC_S_PARM 的澄清。

修订:

0.9 / 2005-11-27 (mhs)

改进了 525 行的行号图。Hans Verkuil 和我重写了切片 VBI 部分。他还贡献了 VIDIOC_LOG_STATUS 页面。修复了视频标准选择示例中的 VIDIOC_S_STD 调用。各种更新。

修订:

0.8 / 2004-10-04 (mhs)

不知何故,一段垃圾代码溜进了捕获示例,已删除。

修订:

0.7 / 2004-09-19 (mhs)

修复了视频标准选择、控制枚举、缩小和宽高比示例。向视频捕获示例添加了读取和用户指针 i/o。

修订:

0.6 / 2004-08-01 (mhs)

v4l2_buffer 更改,添加了视频捕获示例,各种更正。

修订:

0.5 / 2003-11-05 (mhs)

像素格式勘误。

修订:

0.4 / 2003-09-17 (mhs)

更正了源文件和 Makefile 以生成 PDF。SGML 修复。添加了最新的 API 更改。弥补了历史章节中的空白。

修订:

0.3 / 2003-02-05 (mhs)

另一个草案,更多更正。

修订:

0.2 / 2003-01-15 (mhs)

第二个草案,包含 Gerd Knorr 指出的更正。

修订:

0.1 / 2002-12-01 (mhs)

第一个草案,基于 Bill Dirks 的文档和 V4L 邮件列表上的讨论。