|
VLink
2.1.0
A high-performance communication middleware
|
Zero-copy container for a single image / video frame plus pixel-format metadata. More...
Go to the source code of this file.
Namespaces | |
| vlink | |
| vlink::zerocopy | |
Functions | |
| struct | vlink::zerocopy::VLINK_EXPORT_AND_ALIGNED (8) AudioFrame final |
Zero-copy container for a single image / video frame plus pixel-format metadata.
CameraFrame is the canonical conduit for camera capture, ISP outputs, and compressed video streams in the VLink autonomous-driving stack. One frame carries pixel data (raw or codec-encoded), resolution, pixel format, camera channel id, capture frequency, video stream-frame type (I/P/B), plus a 40-byte Header for sequencing and dual-timestamp latency measurement.
| Enum | Family | Description |
|---|---|---|
kFormatYuv420 | Planar YUV | 4:2:0 (I420) |
kFormatYuv422 | Planar YUV | 4:2:2 |
kFormatYuv444 | Planar YUV | 4:4:4 |
kFormatNv12 | Semi-planar YUV | Y plane + interleaved UV (4:2:0) |
kFormatNv21 | Semi-planar YUV | Y plane + interleaved VU (4:2:0) |
kFormatYuyv | Packed YUV | YUYV 4:2:2 |
kFormatYvyu | Packed YUV | YVYU 4:2:2 |
kFormatUyvy | Packed YUV | UYVY 4:2:2 |
kFormatVyuy | Packed YUV | VYUY 4:2:2 |
kFormatBgr888Packed | Packed RGB | 24-bit BGR, 3 bytes per pixel |
kFormatRgb888Packed | Packed RGB | 24-bit RGB, 3 bytes per pixel |
kFormatRgb888Planar | Planar RGB | Separate R, G, B planes |
kFormatMono8, kFormatMono16 | Grayscale | 8/16-bit mono image |
kFormatRgba8888Packed, kFormatBgra8888Packed | Packed RGB | 32-bit RGBA / BGRA |
kFormatUint8C1 .. kFormatFloat64C4 | OpenCV/ROS | Generic numeric images |
kFormatBayerRggb8 .. kFormatBayerGrbg16 | Bayer | RGGB/BGGR/GBRG/GRBG, 8/16-bit |
kFormatJpeg, kFormatMjpeg | Compressed image | JPEG / Motion-JPEG |
kFormatPng, kFormatWebp | Compressed image | PNG / WebP |
kFormatH264, kFormatH265 | Compressed video | H.264 / H.265 |
kFormatH266, kFormatAv1 | Compressed video | H.266 / AV1 |
CameraFrame is POD; the canonical serialiser is memcpy. The sizeof value is locked by static_assert and forms a permanent contract: vlink::zerocopy::* containers offer NO forward and NO backward binary compatibility – every field, including reserved bytes, is wire-locked. reserved_buf_ is exposed through get_reserved() and persists through both clear() and the copy / move helpers so application bridges can stash minor identifiers. It is part of the wire contract and MUST NOT be redefined: future library revisions may bind the slot to a real field.