18c2ecf20Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ci.. _v4l2-meta-fmt-d4xx:
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci*******************************
68c2ecf20Sopenharmony_ciV4L2_META_FMT_D4XX ('D4XX')
78c2ecf20Sopenharmony_ci*******************************
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ciIntel D4xx UVC Cameras Metadata
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciDescription
138c2ecf20Sopenharmony_ci===========
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ciIntel D4xx (D435 and other) cameras include per-frame metadata in their UVC
168c2ecf20Sopenharmony_cipayload headers, following the Microsoft(R) UVC extension proposal [1_]. That
178c2ecf20Sopenharmony_cimeans, that the private D4XX metadata, following the standard UVC header, is
188c2ecf20Sopenharmony_ciorganised in blocks. D4XX cameras implement several standard block types,
198c2ecf20Sopenharmony_ciproposed by Microsoft, and several proprietary ones. Supported standard metadata
208c2ecf20Sopenharmony_citypes are MetadataId_CaptureStats (ID 3), MetadataId_CameraExtrinsics (ID 4),
218c2ecf20Sopenharmony_ciand MetadataId_CameraIntrinsics (ID 5). For their description see [1_]. This
228c2ecf20Sopenharmony_cidocument describes proprietary metadata types, used by D4xx cameras.
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ciV4L2_META_FMT_D4XX buffers follow the metadata buffer layout of
258c2ecf20Sopenharmony_ciV4L2_META_FMT_UVC with the only difference, that it also includes proprietary
268c2ecf20Sopenharmony_cipayload header data. D4xx cameras use bulk transfers and only send one payload
278c2ecf20Sopenharmony_ciper frame, therefore their headers cannot be larger than 255 bytes.
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciBelow are proprietary Microsoft style metadata types, used by D4xx cameras,
308c2ecf20Sopenharmony_ciwhere all fields are in little endian order:
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci.. tabularcolumns:: |p{5.0cm}|p{12.5cm}|
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci.. flat-table:: D4xx metadata
368c2ecf20Sopenharmony_ci    :widths: 1 2
378c2ecf20Sopenharmony_ci    :header-rows:  1
388c2ecf20Sopenharmony_ci    :stub-columns: 0
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci    * - **Field**
418c2ecf20Sopenharmony_ci      - **Description**
428c2ecf20Sopenharmony_ci    * - :cspan:`1` *Depth Control*
438c2ecf20Sopenharmony_ci    * - __u32 ID
448c2ecf20Sopenharmony_ci      - 0x80000000
458c2ecf20Sopenharmony_ci    * - __u32 Size
468c2ecf20Sopenharmony_ci      - Size in bytes (currently 56)
478c2ecf20Sopenharmony_ci    * - __u32 Version
488c2ecf20Sopenharmony_ci      - Version of this structure. The documentation herein corresponds to
498c2ecf20Sopenharmony_ci        version xxx. The version number will be incremented when new fields are
508c2ecf20Sopenharmony_ci        added.
518c2ecf20Sopenharmony_ci    * - __u32 Flags
528c2ecf20Sopenharmony_ci      - A bitmask of flags: see [2_] below
538c2ecf20Sopenharmony_ci    * - __u32 Gain
548c2ecf20Sopenharmony_ci      - Gain value in internal units, same as the V4L2_CID_GAIN control, used to
558c2ecf20Sopenharmony_ci	capture the frame
568c2ecf20Sopenharmony_ci    * - __u32 Exposure
578c2ecf20Sopenharmony_ci      - Exposure time (in microseconds) used to capture the frame
588c2ecf20Sopenharmony_ci    * - __u32 Laser power
598c2ecf20Sopenharmony_ci      - Power of the laser LED 0-360, used for depth measurement
608c2ecf20Sopenharmony_ci    * - __u32 AE mode
618c2ecf20Sopenharmony_ci      - 0: manual; 1: automatic exposure
628c2ecf20Sopenharmony_ci    * - __u32 Exposure priority
638c2ecf20Sopenharmony_ci      - Exposure priority value: 0 - constant frame rate
648c2ecf20Sopenharmony_ci    * - __u32 AE ROI left
658c2ecf20Sopenharmony_ci      - Left border of the AE Region of Interest (all ROI values are in pixels
668c2ecf20Sopenharmony_ci	and lie between 0 and maximum width or height respectively)
678c2ecf20Sopenharmony_ci    * - __u32 AE ROI right
688c2ecf20Sopenharmony_ci      - Right border of the AE Region of Interest
698c2ecf20Sopenharmony_ci    * - __u32 AE ROI top
708c2ecf20Sopenharmony_ci      - Top border of the AE Region of Interest
718c2ecf20Sopenharmony_ci    * - __u32 AE ROI bottom
728c2ecf20Sopenharmony_ci      - Bottom border of the AE Region of Interest
738c2ecf20Sopenharmony_ci    * - __u32 Preset
748c2ecf20Sopenharmony_ci      - Preset selector value, default: 0, unless changed by the user
758c2ecf20Sopenharmony_ci    * - __u32 Laser mode
768c2ecf20Sopenharmony_ci      - 0: off, 1: on
778c2ecf20Sopenharmony_ci    * - :cspan:`1` *Capture Timing*
788c2ecf20Sopenharmony_ci    * - __u32 ID
798c2ecf20Sopenharmony_ci      - 0x80000001
808c2ecf20Sopenharmony_ci    * - __u32 Size
818c2ecf20Sopenharmony_ci      - Size in bytes (currently 40)
828c2ecf20Sopenharmony_ci    * - __u32 Version
838c2ecf20Sopenharmony_ci      - Version of this structure. The documentation herein corresponds to
848c2ecf20Sopenharmony_ci        version xxx. The version number will be incremented when new fields are
858c2ecf20Sopenharmony_ci        added.
868c2ecf20Sopenharmony_ci    * - __u32 Flags
878c2ecf20Sopenharmony_ci      - A bitmask of flags: see [3_] below
888c2ecf20Sopenharmony_ci    * - __u32 Frame counter
898c2ecf20Sopenharmony_ci      - Monotonically increasing counter
908c2ecf20Sopenharmony_ci    * - __u32 Optical time
918c2ecf20Sopenharmony_ci      - Time in microseconds from the beginning of a frame till its middle
928c2ecf20Sopenharmony_ci    * - __u32 Readout time
938c2ecf20Sopenharmony_ci      - Time, used to read out a frame in microseconds
948c2ecf20Sopenharmony_ci    * - __u32 Exposure time
958c2ecf20Sopenharmony_ci      - Frame exposure time in microseconds
968c2ecf20Sopenharmony_ci    * - __u32 Frame interval
978c2ecf20Sopenharmony_ci      - In microseconds = 1000000 / framerate
988c2ecf20Sopenharmony_ci    * - __u32 Pipe latency
998c2ecf20Sopenharmony_ci      - Time in microseconds from start of frame to data in USB buffer
1008c2ecf20Sopenharmony_ci    * - :cspan:`1` *Configuration*
1018c2ecf20Sopenharmony_ci    * - __u32 ID
1028c2ecf20Sopenharmony_ci      - 0x80000002
1038c2ecf20Sopenharmony_ci    * - __u32 Size
1048c2ecf20Sopenharmony_ci      - Size in bytes (currently 40)
1058c2ecf20Sopenharmony_ci    * - __u32 Version
1068c2ecf20Sopenharmony_ci      - Version of this structure. The documentation herein corresponds to
1078c2ecf20Sopenharmony_ci        version xxx. The version number will be incremented when new fields are
1088c2ecf20Sopenharmony_ci        added.
1098c2ecf20Sopenharmony_ci    * - __u32 Flags
1108c2ecf20Sopenharmony_ci      - A bitmask of flags: see [4_] below
1118c2ecf20Sopenharmony_ci    * - __u8 Hardware type
1128c2ecf20Sopenharmony_ci      - Camera hardware version [5_]
1138c2ecf20Sopenharmony_ci    * - __u8 SKU ID
1148c2ecf20Sopenharmony_ci      - Camera hardware configuration [6_]
1158c2ecf20Sopenharmony_ci    * - __u32 Cookie
1168c2ecf20Sopenharmony_ci      - Internal synchronisation
1178c2ecf20Sopenharmony_ci    * - __u16 Format
1188c2ecf20Sopenharmony_ci      - Image format code [7_]
1198c2ecf20Sopenharmony_ci    * - __u16 Width
1208c2ecf20Sopenharmony_ci      - Width in pixels
1218c2ecf20Sopenharmony_ci    * - __u16 Height
1228c2ecf20Sopenharmony_ci      - Height in pixels
1238c2ecf20Sopenharmony_ci    * - __u16 Framerate
1248c2ecf20Sopenharmony_ci      - Requested frame rate per second
1258c2ecf20Sopenharmony_ci    * - __u16 Trigger
1268c2ecf20Sopenharmony_ci      - Byte 0: bit 0: depth and RGB are synchronised, bit 1: external trigger
1278c2ecf20Sopenharmony_ci
1288c2ecf20Sopenharmony_ci.. _1:
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_ci[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/uvc-extensions-1-5
1318c2ecf20Sopenharmony_ci
1328c2ecf20Sopenharmony_ci.. _2:
1338c2ecf20Sopenharmony_ci
1348c2ecf20Sopenharmony_ci[2] Depth Control flags specify which fields are valid: ::
1358c2ecf20Sopenharmony_ci
1368c2ecf20Sopenharmony_ci  0x00000001 Gain
1378c2ecf20Sopenharmony_ci  0x00000002 Exposure
1388c2ecf20Sopenharmony_ci  0x00000004 Laser power
1398c2ecf20Sopenharmony_ci  0x00000008 AE mode
1408c2ecf20Sopenharmony_ci  0x00000010 Exposure priority
1418c2ecf20Sopenharmony_ci  0x00000020 AE ROI
1428c2ecf20Sopenharmony_ci  0x00000040 Preset
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci.. _3:
1458c2ecf20Sopenharmony_ci
1468c2ecf20Sopenharmony_ci[3] Capture Timing flags specify which fields are valid: ::
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ci  0x00000001 Frame counter
1498c2ecf20Sopenharmony_ci  0x00000002 Optical time
1508c2ecf20Sopenharmony_ci  0x00000004 Readout time
1518c2ecf20Sopenharmony_ci  0x00000008 Exposure time
1528c2ecf20Sopenharmony_ci  0x00000010 Frame interval
1538c2ecf20Sopenharmony_ci  0x00000020 Pipe latency
1548c2ecf20Sopenharmony_ci
1558c2ecf20Sopenharmony_ci.. _4:
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ci[4] Configuration flags specify which fields are valid: ::
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci  0x00000001 Hardware type
1608c2ecf20Sopenharmony_ci  0x00000002 SKU ID
1618c2ecf20Sopenharmony_ci  0x00000004 Cookie
1628c2ecf20Sopenharmony_ci  0x00000008 Format
1638c2ecf20Sopenharmony_ci  0x00000010 Width
1648c2ecf20Sopenharmony_ci  0x00000020 Height
1658c2ecf20Sopenharmony_ci  0x00000040 Framerate
1668c2ecf20Sopenharmony_ci  0x00000080 Trigger
1678c2ecf20Sopenharmony_ci  0x00000100 Cal count
1688c2ecf20Sopenharmony_ci
1698c2ecf20Sopenharmony_ci.. _5:
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci[5] Camera model: ::
1728c2ecf20Sopenharmony_ci
1738c2ecf20Sopenharmony_ci  0 DS5
1748c2ecf20Sopenharmony_ci  1 IVCAM2
1758c2ecf20Sopenharmony_ci
1768c2ecf20Sopenharmony_ci.. _6:
1778c2ecf20Sopenharmony_ci
1788c2ecf20Sopenharmony_ci[6] 8-bit camera hardware configuration bitfield: ::
1798c2ecf20Sopenharmony_ci
1808c2ecf20Sopenharmony_ci  [1:0] depthCamera
1818c2ecf20Sopenharmony_ci	00: no depth
1828c2ecf20Sopenharmony_ci	01: standard depth
1838c2ecf20Sopenharmony_ci	10: wide depth
1848c2ecf20Sopenharmony_ci	11: reserved
1858c2ecf20Sopenharmony_ci  [2]   depthIsActive - has a laser projector
1868c2ecf20Sopenharmony_ci  [3]   RGB presence
1878c2ecf20Sopenharmony_ci  [4]   Inertial Measurement Unit (IMU) presence
1888c2ecf20Sopenharmony_ci  [5]   projectorType
1898c2ecf20Sopenharmony_ci	0: HPTG
1908c2ecf20Sopenharmony_ci	1: Princeton
1918c2ecf20Sopenharmony_ci  [6]   0: a projector, 1: an LED
1928c2ecf20Sopenharmony_ci  [7]   reserved
1938c2ecf20Sopenharmony_ci
1948c2ecf20Sopenharmony_ci.. _7:
1958c2ecf20Sopenharmony_ci
1968c2ecf20Sopenharmony_ci[7] Image format codes per video streaming interface:
1978c2ecf20Sopenharmony_ci
1988c2ecf20Sopenharmony_ciDepth: ::
1998c2ecf20Sopenharmony_ci
2008c2ecf20Sopenharmony_ci  1 Z16
2018c2ecf20Sopenharmony_ci  2 Z
2028c2ecf20Sopenharmony_ci
2038c2ecf20Sopenharmony_ciLeft sensor: ::
2048c2ecf20Sopenharmony_ci
2058c2ecf20Sopenharmony_ci  1 Y8
2068c2ecf20Sopenharmony_ci  2 UYVY
2078c2ecf20Sopenharmony_ci  3 R8L8
2088c2ecf20Sopenharmony_ci  4 Calibration
2098c2ecf20Sopenharmony_ci  5 W10
2108c2ecf20Sopenharmony_ci
2118c2ecf20Sopenharmony_ciFish Eye sensor: ::
2128c2ecf20Sopenharmony_ci
2138c2ecf20Sopenharmony_ci  1 RAW8
214