第一部分 - 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 和 which 的新联合体替换 ctrl_class。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 上将 width 和 height 设置为无符号。

修订版本:

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 (videotext) 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)

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

修订版本:

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)

更正了生成 PDF 的源文件和 Makefile。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 邮件列表上的讨论。