| .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later |
| |
| .. _v4l2-meta-fmt-d4xx: |
| |
| ******************************* |
| V4L2_META_FMT_D4XX ('D4XX') |
| ******************************* |
| |
| Intel D4xx UVC Cameras Metadata |
| |
| |
| Description |
| =========== |
| |
| Intel D4xx (D435, D455 and others) cameras include per-frame metadata in their UVC |
| payload headers, following the Microsoft(R) UVC extension proposal [1_]. That |
| means, that the private D4XX metadata, following the standard UVC header, is |
| organised in blocks. D4XX cameras implement several standard block types, |
| proposed by Microsoft, and several proprietary ones. Supported standard metadata |
| types are MetadataId_CaptureStats (ID 3), MetadataId_CameraExtrinsics (ID 4), |
| and MetadataId_CameraIntrinsics (ID 5). For their description see [1_]. This |
| document describes proprietary metadata types, used by D4xx cameras. |
| |
| V4L2_META_FMT_D4XX buffers follow the metadata buffer layout of |
| V4L2_META_FMT_UVC with the only difference, that it also includes proprietary |
| payload header data. D4xx cameras use bulk transfers and only send one payload |
| per frame, therefore their headers cannot be larger than 255 bytes. |
| |
| This document implements Intel Configuration version 3 [9_]. |
| |
| Below are proprietary Microsoft style metadata types, used by D4xx cameras, |
| where all fields are in little endian order: |
| |
| .. tabularcolumns:: |p{5.0cm}|p{12.5cm}| |
| |
| |
| .. flat-table:: D4xx metadata |
| :widths: 1 2 |
| :header-rows: 1 |
| :stub-columns: 0 |
| |
| * - **Field** |
| - **Description** |
| * - :cspan:`1` *Depth Control* |
| * - __u32 ID |
| - 0x80000000 |
| * - __u32 Size |
| - Size in bytes, include ID (all protocol versions: 60) |
| * - __u32 Version |
| - Version of this structure. The documentation herein covers versions 1, |
| 2 and 3. The version number will be incremented when new fields are |
| added. |
| * - __u32 Flags |
| - A bitmask of flags: see [2_] below |
| * - __u32 Gain |
| - Gain value in internal units, same as the V4L2_CID_GAIN control, used to |
| capture the frame |
| * - __u32 Exposure |
| - Exposure time (in microseconds) used to capture the frame |
| * - __u32 Laser power |
| - Power of the laser LED 0-360, used for depth measurement |
| * - __u32 AE mode |
| - 0: manual; 1: automatic exposure |
| * - __u32 Exposure priority |
| - Exposure priority value: 0 - constant frame rate |
| * - __u32 AE ROI left |
| - Left border of the AE Region of Interest (all ROI values are in pixels |
| and lie between 0 and maximum width or height respectively) |
| * - __u32 AE ROI right |
| - Right border of the AE Region of Interest |
| * - __u32 AE ROI top |
| - Top border of the AE Region of Interest |
| * - __u32 AE ROI bottom |
| - Bottom border of the AE Region of Interest |
| * - __u32 Preset |
| - Preset selector value, default: 0, unless changed by the user |
| * - __u8 Emitter mode (v3 only) (__u32 Laser mode for v1) [8_] |
| - 0: off, 1: on, same as __u32 Laser mode for v1 |
| * - __u8 RFU byte (v3 only) |
| - Spare byte for future use |
| * - __u16 LED Power (v3 only) |
| - Led power value 0-360 (F416 SKU) |
| * - :cspan:`1` *Capture Timing* |
| * - __u32 ID |
| - 0x80000001 |
| * - __u32 Size |
| - Size in bytes, include ID (all protocol versions: 40) |
| * - __u32 Version |
| - Version of this structure. The documentation herein corresponds to |
| version xxx. The version number will be incremented when new fields are |
| added. |
| * - __u32 Flags |
| - A bitmask of flags: see [3_] below |
| * - __u32 Frame counter |
| - Monotonically increasing counter |
| * - __u32 Optical time |
| - Time in microseconds from the beginning of a frame till its middle |
| * - __u32 Readout time |
| - Time, used to read out a frame in microseconds |
| * - __u32 Exposure time |
| - Frame exposure time in microseconds |
| * - __u32 Frame interval |
| - In microseconds = 1000000 / framerate |
| * - __u32 Pipe latency |
| - Time in microseconds from start of frame to data in USB buffer |
| * - :cspan:`1` *Configuration* |
| * - __u32 ID |
| - 0x80000002 |
| * - __u32 Size |
| - Size in bytes, include ID (v1:36, v3:40) |
| * - __u32 Version |
| - Version of this structure. The documentation herein corresponds to |
| version xxx. The version number will be incremented when new fields are |
| added. |
| * - __u32 Flags |
| - A bitmask of flags: see [4_] below |
| * - __u8 Hardware type |
| - Camera hardware version [5_] |
| * - __u8 SKU ID |
| - Camera hardware configuration [6_] |
| * - __u32 Cookie |
| - Internal synchronisation |
| * - __u16 Format |
| - Image format code [7_] |
| * - __u16 Width |
| - Width in pixels |
| * - __u16 Height |
| - Height in pixels |
| * - __u16 Framerate |
| - Requested frame rate per second |
| * - __u16 Trigger |
| - Byte 0: bit 0: depth and RGB are synchronised, bit 1: external trigger |
| * - __u16 Calibration count (v3 only) |
| - Calibration counter, see [4_] below |
| * - __u8 GPIO input data (v3 only) |
| - GPIO readout, see [4_] below (Supported from FW 5.12.7.0) |
| * - __u32 Sub-preset info (v3 only) |
| - Sub-preset choice information, see [4_] below |
| * - __u8 reserved (v3 only) |
| - RFU byte. |
| |
| .. _1: |
| |
| [1] https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/uvc-extensions-1-5 |
| |
| .. _2: |
| |
| [2] Depth Control flags specify which fields are valid: :: |
| |
| 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: |
| |
| [3] Capture Timing flags specify which fields are valid: :: |
| |
| 0x00000001 Frame counter |
| 0x00000002 Optical time |
| 0x00000004 Readout time |
| 0x00000008 Exposure time |
| 0x00000010 Frame interval |
| 0x00000020 Pipe latency |
| |
| .. _4: |
| |
| [4] Configuration flags specify which fields are valid: :: |
| |
| 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: |
| |
| [5] Camera model: :: |
| |
| 0 DS5 |
| 1 IVCAM2 |
| |
| .. _6: |
| |
| [6] 8-bit camera hardware configuration bitfield: :: |
| |
| [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: |
| |
| [7] Image format codes per video streaming interface: |
| |
| Depth: :: |
| |
| 1 Z16 |
| 2 Z |
| |
| Left sensor: :: |
| |
| 1 Y8 |
| 2 UYVY |
| 3 R8L8 |
| 4 Calibration |
| 5 W10 |
| |
| Fish Eye sensor: :: |
| |
| 1 RAW8 |
| |
| .. _8: |
| |
| [8] The "Laser mode" has been replaced in version 3 by three different fields. |
| "Laser" has been renamed to "Emitter" as there are multiple technologies for |
| camera projectors. As we have another field for "Laser Power" we introduced |
| "LED Power" for extra emitter. |
| |
| The "Laser mode" __u32 fields has been split into: :: |
| 1 __u8 Emitter mode |
| 2 __u8 RFU byte |
| 3 __u16 LED Power |
| |
| This is a change between versions 1 and 3. All versions 1, 2 and 3 are backward |
| compatible with the same data format and they are supported. See [2_] for which |
| attributes are valid. |
| |
| .. _9: |
| |
| [9] LibRealSense SDK metadata source: |
| https://github.com/IntelRealSense/librealsense/blob/master/src/metadata.h |