4.14. 元資料介面

元資料是指補充影片幀的額外資訊的任何非影像資料。 這可能包括影像上計算的統計資訊、影像源提供的幀捕獲引數或用於指定裝置如何處理影像的裝置特定引數。 此介面旨在用於使用者空間和硬體之間的元資料傳輸以及對該操作的控制。

元資料介面在影片裝置節點上實現。 裝置可以專用於元資料,也可以同時支援影片和元資料,如其報告的功能中所述。

4.14.1. 查詢功能

支援元資料捕獲介面的裝置節點在 V4L2_CAP_META_CAPTURE 中設定標誌 v4l2_capability 結構的 device_caps 欄位由 VIDIOC_QUERYCAP() ioctl 返回。 該標誌表示裝置可以將元資料捕獲到記憶體中。 同樣,支援元資料輸出介面的裝置節點在 v4l2_capability 結構的 device_caps 欄位中設定 V4L2_CAP_META_OUTPUT 標誌。 該標誌表示裝置可以從記憶體中讀取元資料。

必須支援至少一種讀取/寫入或流 I/O 方法。

4.14.2. 資料格式協商

元資料裝置使用 資料格式 ioctl 來選擇捕獲格式。 元資料緩衝區內容格式繫結到所選格式。 除了基本的 資料格式 ioctl 外,還必須支援 VIDIOC_ENUM_FMT() ioctl。

要使用 資料格式 ioctl,應用程式將 v4l2_format 結構的 type 欄位設定為 V4L2_BUF_TYPE_META_CAPTUREV4L2_BUF_TYPE_META_OUTPUT 並根據所需操作使用 v4l2_meta_format meta fmt 聯合成員。 驅動程式和應用程式都必須將其餘 v4l2_format 結構設定為 0。

透過行捕獲元資料的裝置具有 struct v4l2_fmtdesc V4L2_FMT_FLAG_META_LINE_BASEDVIDIOC_ENUM_FMT() 設定的標誌。 此類裝置通常也可以 捕獲影像資料。 這主要涉及從其他裝置(例如相機感測器)接收資料的裝置。

type v4l2_meta_format
struct v4l2_meta_format

__u32

dataformat

資料格式,由應用程式設定。 這是一個小端 四個字元的程式碼。 V4L2 在 元資料格式中定義元資料格式。

__u32

buffersize

資料所需的最大緩衝區大小(以位元組為單位)。 該值由驅動程式設定。

__u32

width

元資料行的寬度,以資料單位為單位。 如果設定了 :c:type`v4l2_fmtdesc` 標誌 V4L2_FMT_FLAG_META_LINE_BASED,則有效,否則為零。 請參閱 VIDIOC_ENUM_FMT()

__u32

height

元資料的行數。 如果設定了 :c:type`v4l2_fmtdesc` 標誌 V4L2_FMT_FLAG_META_LINE_BASED,則有效,否則為零。 請參閱 VIDIOC_ENUM_FMT()

__u32

bytesperline

兩條連續行開頭之間的偏移量(以位元組為單位)。 如果設定了 :c:type`v4l2_fmtdesc` 標誌 V4L2_FMT_FLAG_META_LINE_BASED,則有效,否則為零。 請參閱 VIDIOC_ENUM_FMT()