162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci.. _v4l2-meta-fmt-d4xx: 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci******************************* 662306a36Sopenharmony_ciV4L2_META_FMT_D4XX ('D4XX') 762306a36Sopenharmony_ci******************************* 862306a36Sopenharmony_ci 962306a36Sopenharmony_ciIntel D4xx UVC Cameras Metadata 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ciDescription 1362306a36Sopenharmony_ci=========== 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciIntel D4xx (D435, D455 and others) cameras include per-frame metadata in their UVC 1662306a36Sopenharmony_cipayload headers, following the Microsoft(R) UVC extension proposal [1_]. That 1762306a36Sopenharmony_cimeans, that the private D4XX metadata, following the standard UVC header, is 1862306a36Sopenharmony_ciorganised in blocks. D4XX cameras implement several standard block types, 1962306a36Sopenharmony_ciproposed by Microsoft, and several proprietary ones. Supported standard metadata 2062306a36Sopenharmony_citypes are MetadataId_CaptureStats (ID 3), MetadataId_CameraExtrinsics (ID 4), 2162306a36Sopenharmony_ciand MetadataId_CameraIntrinsics (ID 5). For their description see [1_]. This 2262306a36Sopenharmony_cidocument describes proprietary metadata types, used by D4xx cameras. 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ciV4L2_META_FMT_D4XX buffers follow the metadata buffer layout of 2562306a36Sopenharmony_ciV4L2_META_FMT_UVC with the only difference, that it also includes proprietary 2662306a36Sopenharmony_cipayload header data. D4xx cameras use bulk transfers and only send one payload 2762306a36Sopenharmony_ciper frame, therefore their headers cannot be larger than 255 bytes. 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ciThis document implements Intel Configuration version 3 [9_]. 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ciBelow are proprietary Microsoft style metadata types, used by D4xx cameras, 3262306a36Sopenharmony_ciwhere all fields are in little endian order: 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci.. tabularcolumns:: |p{5.0cm}|p{12.5cm}| 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci.. flat-table:: D4xx metadata 3862306a36Sopenharmony_ci :widths: 1 2 3962306a36Sopenharmony_ci :header-rows: 1 4062306a36Sopenharmony_ci :stub-columns: 0 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci * - **Field** 4362306a36Sopenharmony_ci - **Description** 4462306a36Sopenharmony_ci * - :cspan:`1` *Depth Control* 4562306a36Sopenharmony_ci * - __u32 ID 4662306a36Sopenharmony_ci - 0x80000000 4762306a36Sopenharmony_ci * - __u32 Size 4862306a36Sopenharmony_ci - Size in bytes, include ID (all protocol versions: 60) 4962306a36Sopenharmony_ci * - __u32 Version 5062306a36Sopenharmony_ci - Version of this structure. The documentation herein covers versions 1, 5162306a36Sopenharmony_ci 2 and 3. The version number will be incremented when new fields are 5262306a36Sopenharmony_ci added. 5362306a36Sopenharmony_ci * - __u32 Flags 5462306a36Sopenharmony_ci - A bitmask of flags: see [2_] below 5562306a36Sopenharmony_ci * - __u32 Gain 5662306a36Sopenharmony_ci - Gain value in internal units, same as the V4L2_CID_GAIN control, used to 5762306a36Sopenharmony_ci capture the frame 5862306a36Sopenharmony_ci * - __u32 Exposure 5962306a36Sopenharmony_ci - Exposure time (in microseconds) used to capture the frame 6062306a36Sopenharmony_ci * - __u32 Laser power 6162306a36Sopenharmony_ci - Power of the laser LED 0-360, used for depth measurement 6262306a36Sopenharmony_ci * - __u32 AE mode 6362306a36Sopenharmony_ci - 0: manual; 1: automatic exposure 6462306a36Sopenharmony_ci * - __u32 Exposure priority 6562306a36Sopenharmony_ci - Exposure priority value: 0 - constant frame rate 6662306a36Sopenharmony_ci * - __u32 AE ROI left 6762306a36Sopenharmony_ci - Left border of the AE Region of Interest (all ROI values are in pixels 6862306a36Sopenharmony_ci and lie between 0 and maximum width or height respectively) 6962306a36Sopenharmony_ci * - __u32 AE ROI right 7062306a36Sopenharmony_ci - Right border of the AE Region of Interest 7162306a36Sopenharmony_ci * - __u32 AE ROI top 7262306a36Sopenharmony_ci - Top border of the AE Region of Interest 7362306a36Sopenharmony_ci * - __u32 AE ROI bottom 7462306a36Sopenharmony_ci - Bottom border of the AE Region of Interest 7562306a36Sopenharmony_ci * - __u32 Preset 7662306a36Sopenharmony_ci - Preset selector value, default: 0, unless changed by the user 7762306a36Sopenharmony_ci * - __u8 Emitter mode (v3 only) (__u32 Laser mode for v1) [8_] 7862306a36Sopenharmony_ci - 0: off, 1: on, same as __u32 Laser mode for v1 7962306a36Sopenharmony_ci * - __u8 RFU byte (v3 only) 8062306a36Sopenharmony_ci - Spare byte for future use 8162306a36Sopenharmony_ci * - __u16 LED Power (v3 only) 8262306a36Sopenharmony_ci - Led power value 0-360 (F416 SKU) 8362306a36Sopenharmony_ci * - :cspan:`1` *Capture Timing* 8462306a36Sopenharmony_ci * - __u32 ID 8562306a36Sopenharmony_ci - 0x80000001 8662306a36Sopenharmony_ci * - __u32 Size 8762306a36Sopenharmony_ci - Size in bytes, include ID (all protocol versions: 40) 8862306a36Sopenharmony_ci * - __u32 Version 8962306a36Sopenharmony_ci - Version of this structure. The documentation herein corresponds to 9062306a36Sopenharmony_ci version xxx. The version number will be incremented when new fields are 9162306a36Sopenharmony_ci added. 9262306a36Sopenharmony_ci * - __u32 Flags 9362306a36Sopenharmony_ci - A bitmask of flags: see [3_] below 9462306a36Sopenharmony_ci * - __u32 Frame counter 9562306a36Sopenharmony_ci - Monotonically increasing counter 9662306a36Sopenharmony_ci * - __u32 Optical time 9762306a36Sopenharmony_ci - Time in microseconds from the beginning of a frame till its middle 9862306a36Sopenharmony_ci * - __u32 Readout time 9962306a36Sopenharmony_ci - Time, used to read out a frame in microseconds 10062306a36Sopenharmony_ci * - __u32 Exposure time 10162306a36Sopenharmony_ci - Frame exposure time in microseconds 10262306a36Sopenharmony_ci * - __u32 Frame interval 10362306a36Sopenharmony_ci - In microseconds = 1000000 / framerate 10462306a36Sopenharmony_ci * - __u32 Pipe latency 10562306a36Sopenharmony_ci - Time in microseconds from start of frame to data in USB buffer 10662306a36Sopenharmony_ci * - :cspan:`1` *Configuration* 10762306a36Sopenharmony_ci * - __u32 ID 10862306a36Sopenharmony_ci - 0x80000002 10962306a36Sopenharmony_ci * - __u32 Size 11062306a36Sopenharmony_ci - Size in bytes, include ID (v1:36, v3:40) 11162306a36Sopenharmony_ci * - __u32 Version 11262306a36Sopenharmony_ci - Version of this structure. The documentation herein corresponds to 11362306a36Sopenharmony_ci version xxx. The version number will be incremented when new fields are 11462306a36Sopenharmony_ci added. 11562306a36Sopenharmony_ci * - __u32 Flags 11662306a36Sopenharmony_ci - A bitmask of flags: see [4_] below 11762306a36Sopenharmony_ci * - __u8 Hardware type 11862306a36Sopenharmony_ci - Camera hardware version [5_] 11962306a36Sopenharmony_ci * - __u8 SKU ID 12062306a36Sopenharmony_ci - Camera hardware configuration [6_] 12162306a36Sopenharmony_ci * - __u32 Cookie 12262306a36Sopenharmony_ci - Internal synchronisation 12362306a36Sopenharmony_ci * - __u16 Format 12462306a36Sopenharmony_ci - Image format code [7_] 12562306a36Sopenharmony_ci * - __u16 Width 12662306a36Sopenharmony_ci - Width in pixels 12762306a36Sopenharmony_ci * - __u16 Height 12862306a36Sopenharmony_ci - Height in pixels 12962306a36Sopenharmony_ci * - __u16 Framerate 13062306a36Sopenharmony_ci - Requested frame rate per second 13162306a36Sopenharmony_ci * - __u16 Trigger 13262306a36Sopenharmony_ci - Byte 0: bit 0: depth and RGB are synchronised, bit 1: external trigger 13362306a36Sopenharmony_ci * - __u16 Calibration count (v3 only) 13462306a36Sopenharmony_ci - Calibration counter, see [4_] below 13562306a36Sopenharmony_ci * - __u8 GPIO input data (v3 only) 13662306a36Sopenharmony_ci - GPIO readout, see [4_] below (Supported from FW 5.12.7.0) 13762306a36Sopenharmony_ci * - __u32 Sub-preset info (v3 only) 13862306a36Sopenharmony_ci - Sub-preset choice information, see [4_] below 13962306a36Sopenharmony_ci * - __u8 reserved (v3 only) 14062306a36Sopenharmony_ci - RFU byte. 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci.. _1: 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/uvc-extensions-1-5 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci.. _2: 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci[2] Depth Control flags specify which fields are valid: :: 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci 0x00000001 Gain 15162306a36Sopenharmony_ci 0x00000002 Exposure 15262306a36Sopenharmony_ci 0x00000004 Laser power 15362306a36Sopenharmony_ci 0x00000008 AE mode 15462306a36Sopenharmony_ci 0x00000010 Exposure priority 15562306a36Sopenharmony_ci 0x00000020 AE ROI 15662306a36Sopenharmony_ci 0x00000040 Preset 15762306a36Sopenharmony_ci 0x00000080 Emitter mode 15862306a36Sopenharmony_ci 0x00000100 LED Power 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci.. _3: 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci[3] Capture Timing flags specify which fields are valid: :: 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_ci 0x00000001 Frame counter 16562306a36Sopenharmony_ci 0x00000002 Optical time 16662306a36Sopenharmony_ci 0x00000004 Readout time 16762306a36Sopenharmony_ci 0x00000008 Exposure time 16862306a36Sopenharmony_ci 0x00000010 Frame interval 16962306a36Sopenharmony_ci 0x00000020 Pipe latency 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci.. _4: 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci[4] Configuration flags specify which fields are valid: :: 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci 0x00000001 Hardware type 17662306a36Sopenharmony_ci 0x00000002 SKU ID 17762306a36Sopenharmony_ci 0x00000004 Cookie 17862306a36Sopenharmony_ci 0x00000008 Format 17962306a36Sopenharmony_ci 0x00000010 Width 18062306a36Sopenharmony_ci 0x00000020 Height 18162306a36Sopenharmony_ci 0x00000040 Framerate 18262306a36Sopenharmony_ci 0x00000080 Trigger 18362306a36Sopenharmony_ci 0x00000100 Cal count 18462306a36Sopenharmony_ci 0x00000200 GPIO Input Data 18562306a36Sopenharmony_ci 0x00000400 Sub-preset Info 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ci.. _5: 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci[5] Camera model: :: 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci 0 DS5 19262306a36Sopenharmony_ci 1 IVCAM2 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci.. _6: 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ci[6] 8-bit camera hardware configuration bitfield: :: 19762306a36Sopenharmony_ci 19862306a36Sopenharmony_ci [1:0] depthCamera 19962306a36Sopenharmony_ci 00: no depth 20062306a36Sopenharmony_ci 01: standard depth 20162306a36Sopenharmony_ci 10: wide depth 20262306a36Sopenharmony_ci 11: reserved 20362306a36Sopenharmony_ci [2] depthIsActive - has a laser projector 20462306a36Sopenharmony_ci [3] RGB presence 20562306a36Sopenharmony_ci [4] Inertial Measurement Unit (IMU) presence 20662306a36Sopenharmony_ci [5] projectorType 20762306a36Sopenharmony_ci 0: HPTG 20862306a36Sopenharmony_ci 1: Princeton 20962306a36Sopenharmony_ci [6] 0: a projector, 1: an LED 21062306a36Sopenharmony_ci [7] reserved 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci.. _7: 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ci[7] Image format codes per video streaming interface: 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ciDepth: :: 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci 1 Z16 21962306a36Sopenharmony_ci 2 Z 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ciLeft sensor: :: 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci 1 Y8 22462306a36Sopenharmony_ci 2 UYVY 22562306a36Sopenharmony_ci 3 R8L8 22662306a36Sopenharmony_ci 4 Calibration 22762306a36Sopenharmony_ci 5 W10 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_ciFish Eye sensor: :: 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci 1 RAW8 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ci.. _8: 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ci[8] The "Laser mode" has been replaced in version 3 by three different fields. 23662306a36Sopenharmony_ci"Laser" has been renamed to "Emitter" as there are multiple technologies for 23762306a36Sopenharmony_cicamera projectors. As we have another field for "Laser Power" we introduced 23862306a36Sopenharmony_ci"LED Power" for extra emitter. 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ciThe "Laser mode" __u32 fields has been split into: :: 24162306a36Sopenharmony_ci 1 __u8 Emitter mode 24262306a36Sopenharmony_ci 2 __u8 RFU byte 24362306a36Sopenharmony_ci 3 __u16 LED Power 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ciThis is a change between versions 1 and 3. All versions 1, 2 and 3 are backward 24662306a36Sopenharmony_cicompatible with the same data format and they are supported. See [2_] for which 24762306a36Sopenharmony_ciattributes are valid. 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ci.. _9: 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_ci[9] LibRealSense SDK metadata source: 25262306a36Sopenharmony_cihttps://github.com/IntelRealSense/librealsense/blob/master/src/metadata.h 253