221 lines
6.2 KiB
ReStructuredText
221 lines
6.2 KiB
ReStructuredText
.. Permission is granted to copy, distribute and/or modify this
|
|
.. document under the terms of the GNU Free Documentation License,
|
|
.. Version 1.1 or any later version published by the Free Software
|
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
|
.. and no Back-Cover Texts. A copy of the license is included at
|
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
|
..
|
|
.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
|
|
|
|
.. _v4l2-meta-fmt-d4xx:
|
|
|
|
*******************************
|
|
V4L2_META_FMT_D4XX ('D4XX')
|
|
*******************************
|
|
|
|
Intel D4xx UVC Cameras Metadata
|
|
|
|
|
|
Description
|
|
===========
|
|
|
|
Intel D4xx (D435 and other) 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.
|
|
|
|
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 (currently 56)
|
|
* - __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 [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
|
|
* - __u32 Laser mode
|
|
- 0: off, 1: on
|
|
* - :cspan:`1` *Capture Timing*
|
|
* - __u32 ID
|
|
- 0x80000001
|
|
* - __u32 Size
|
|
- Size in bytes (currently 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 (currently 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
|
|
|
|
.. _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
|
|
|
|
.. _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
|
|
|
|
.. _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
|