Hololink CSI to Bayer GPU-Resident Operator#
Authors: Holoscan Team (NVIDIA)
Supported platforms: aarch64
Language: C++
Last modified: March 13, 2026
Latest version: 0.1.0
Minimum Holoscan SDK version: 4.0.0
Tested Holoscan SDK versions: 4.0.0
Contribution metric: Level 1 - Highly Reliable
This operator converts CSI (Camera Serial Interface) packed data to Bayer format using GPU-resident processing. It supports RAW8, RAW10, and RAW12 pixel formats.
Overview#
The CsiToBayerGpuResidentOp is a GPU-resident Holoscan operator that:
- Receives packed CSI data from camera sensors
- Unpacks the data to 16-bit Bayer format
- Operates entirely on GPU memory for low-latency processing
Requirements#
- Holoscan SDK 4.0.0 or later
- Holoscan Sensor Bridge ("Hololink") library installed and available
- CUDA-capable GPU
Usage#
C++#
#include <csi_to_bayer_gpu_resident/csi_to_bayer_gpu_resident.hpp>
// In your application setup:
auto csi_to_bayer = make_operator<hololink::operators::CsiToBayerGpuResidentOp>("csi_to_bayer");
// Configure the operator before initialization
csi_to_bayer->configure(
start_byte, // Offset to first pixel data
bytes_per_line, // Bytes per line in CSI data
pixel_width, // Image width in pixels
pixel_height, // Image height in pixels
pixel_format, // hololink::csi::PixelFormat::RAW_8/RAW_10/RAW_12
trailing_bytes // Trailing bytes after image data
);
// Add to your pipeline
add_flow(receiver, csi_to_bayer, ('out', 'in'));
add_flow(csi_to_bayer, next_operator, ('out', 'in'));
Supported Pixel Formats#
RAW_8: 8-bit raw data, unpacked to 16-bit (upper 8 bits)RAW_10: 10-bit raw data (4 pixels packed in 5 bytes), unpacked to 16-bitRAW_12: 12-bit raw data (2 pixels packed in 3 bytes), unpacked to 16-bit
Build#
This operator is built as part of the HoloHub build system:
./run build csi_to_bayer_gpu_resident
Dependencies#
hololink::core- Core hololink libraryhololink::common- Common hololink utilities (CUDA helpers)holoscan::core- Holoscan SDKfmt- Formatting libraryCUDA- CUDA driver API