2.13.2. V4L2_META_FMT_D4XX (‘D4XX’)

Intel D4xx UVC 攝像頭元資料

2.13.2.1. 描述

Intel D4xx(D435、D455 及其他)攝像頭在其 UVC 有效負載頭部中包含每幀元資料,遵循 Microsoft(R) UVC 擴充套件提案 [1]。這意味著,在標準 UVC 頭部之後的私有 D4XX 元資料以塊的形式組織。D4XX 攝像頭實現了 Microsoft 提出的幾種標準塊型別以及幾種專有塊型別。支援的標準元資料型別包括 MetadataId_CaptureStats(ID 3)、MetadataId_CameraExtrinsics(ID 4)和 MetadataId_CameraIntrinsics(ID 5)。有關其描述,請參閱 [1]。本文件描述了 D4xx 攝像頭使用的專有元資料型別。

V4L2_META_FMT_D4XX 緩衝區遵循 V4L2_META_FMT_UVC 的元資料緩衝區佈局,唯一的區別是它還包含專有的有效負載頭部資料。D4xx 攝像頭使用批次傳輸,每幀只發送一個有效負載,因此它們的頭部不能大於 255 位元組。

本文件實現了 Intel 配置版本 3 [9]。

以下是 D4xx 攝像頭使用的專有 Microsoft 風格元資料型別,所有欄位均為小端序

D4xx 元資料

欄位

描述

深度控制

__u32 ID

0x80000000

__u32 Size

大小(位元組),包含 ID(所有協議版本:60)

__u32 Version

本結構的版本。本文件涵蓋版本 1、2 和 3。新增新欄位時,版本號將遞增。

__u32 Flags

標誌位掩碼:請參閱 [2] 下文

__u32 Gain

增益值(內部單位),與用於捕獲幀的 V4L2_CID_GAIN 控制相同

__u32 Exposure

曝光時間(微秒),用於捕獲幀

__u32 Laser power

雷射 LED 功率 0-360,用於深度測量

__u32 AE mode

0: 手動;1: 自動曝光

__u32 Exposure priority

曝光優先順序值:0 - 恆定幀率

__u32 AE ROI left

AE 感興趣區域的左邊界(所有 ROI 值均以畫素為單位,介於 0 和最大寬度或高度之間)

__u32 AE ROI right

AE 感興趣區域的右邊界

__u32 AE ROI top

AE 感興趣區域的上邊界

__u32 AE ROI bottom

AE 感興趣區域的下邊界

__u32 Preset

預設選擇器值,預設值:0,除非使用者更改

__u8 Emitter mode (v3 only) (__u32 Laser mode for v1) [8]

0: 關,1: 開,與 v1 中的 __u32 Laser 模式相同

__u8 RFU byte (v3 only)

備用位元組,供將來使用

__u16 LED Power (v3 only)

LED 功率值 0-360 (F416 SKU)

捕獲時序

__u32 ID

0x80000001

__u32 Size

大小(位元組),包含 ID(所有協議版本:40)

__u32 Version

本結構的版本。本文件對應版本 xxx。新增新欄位時,版本號將遞增。

__u32 Flags

標誌位掩碼:請參閱 [3] 下文

__u32 Frame counter

單調遞增計數器

__u32 Optical time

從幀開始到幀中間的微秒時間

__u32 Readout time

用於讀取幀的微秒時間

__u32 Exposure time

幀曝光時間(微秒)

__u32 Frame interval

微秒 = 1000000 / 幀率

__u32 Pipe latency

從幀開始到 USB 緩衝區資料寫入的微秒時間

配置

__u32 ID

0x80000002

__u32 Size

大小(位元組),包含 ID (v1:36, v3:40)

__u32 Version

本結構的版本。本文件對應版本 xxx。新增新欄位時,版本號將遞增。

__u32 Flags

標誌位掩碼:請參閱 [4] 下文

__u8 Hardware type

攝像頭硬體版本 [5]

__u8 SKU ID

攝像頭硬體配置 [6]

__u32 Cookie

內部同步

__u16 Format

影像格式程式碼 [7]

__u16 Width

寬度(畫素)

__u16 Height

高度(畫素)

__u16 Framerate

每秒請求幀率

__u16 Trigger

位元組 0:位 0:深度和 RGB 同步,位 1:外部觸發

__u16 Calibration count (v3 only)

校準計數器,請參閱 [4] 下文

__u8 GPIO input data (v3 only)

GPIO 讀取,請參閱 [4] 下文(從 FW 5.12.7.0 開始支援)

__u32 Sub-preset info (v3 only)

子預設選擇資訊,請參閱 [4] 下文

__u8 reserved (v3 only)

RFU 位元組。

[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/uvc-extensions-1-5

[2] 深度控制標誌指定哪些欄位有效

0x00000001 Gain
0x00000002 Exposure
0x00000004 Laser power
0x00000008 AE mode
0x00000010 Exposure priority
0x00000020 AE ROI
0x00000040 Preset
0x00000080 Emitter mode
0x00000100 LED Power

[3] 捕獲時序標誌指定哪些欄位有效

0x00000001 Frame counter
0x00000002 Optical time
0x00000004 Readout time
0x00000008 Exposure time
0x00000010 Frame interval
0x00000020 Pipe latency

[4] 配置標誌指定哪些欄位有效

0x00000001 Hardware type
0x00000002 SKU ID
0x00000004 Cookie
0x00000008 Format
0x00000010 Width
0x00000020 Height
0x00000040 Framerate
0x00000080 Trigger
0x00000100 Cal count
0x00000200 GPIO Input Data
0x00000400 Sub-preset Info

[5] 攝像頭型號

0 DS5
1 IVCAM2

[6] 8 位攝像頭硬體配置位域

[1:0] depthCamera
      00: no depth
      01: standard depth
      10: wide depth
      11: reserved
[2]   depthIsActive - has a laser projector
[3]   RGB presence
[4]   Inertial Measurement Unit (IMU) presence
[5]   projectorType
      0: HPTG
      1: Princeton
[6]   0: a projector, 1: an LED
[7]   reserved

[7] 各影片流介面的影像格式程式碼

深度

1 Z16
2 Z

左側感測器

1 Y8
2 UYVY
3 R8L8
4 Calibration
5 W10

魚眼感測器

1 RAW8

[8] “雷射模式”在版本 3 中被替換為三個不同的欄位。“雷射”已更名為“發射器”,因為攝像頭投影儀有多種技術。由於我們有另一個“雷射功率”欄位,我們引入了“LED 功率”作為額外的發射器。

“雷射模式”__u32 欄位已拆分為::

1 __u8 Emitter mode 2 __u8 RFU byte 3 __u16 LED Power

這是版本 1 和版本 3 之間的更改。所有版本 1、2 和 3 都與相同的資料格式向後相容,並且都受支援。有關哪些屬性有效,請參閱 [2]。

[9] LibRealSense SDK 元資料來源: https://github.com/IntelRealSense/librealsense/blob/master/src/metadata.h