第一部分 - 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 郵件列表上的討論。