Jump to content

ArgusCameraOp

From RidgeRun Developer Wiki

🚧 Documentation is under development

The Holoscan SDK guide is currently under active development. Some sections may be incomplete or change without notice.

Questions? Contact RidgeRun or email to support@ridgerun.com.

Contents Pin






Preliminary reference
This reference is preliminary. The set of available operators and HSDK applications, along with their APIs and documented behavior, may change in future releases.


ArgusCameraOp

ArgusCameraOp captures a directly connected Jetson CSI camera through libArgus and an EGLStream. Argus supplies NV12 planes as CUDA arrays; the operator reads those arrays directly in CUDA and emits a display-ready BGRA tensor without an intermediate NV12 allocation or camera-to-CUDA copy.


Camera integration
For help connecting your Jetson CSI camera to CUDA processing and display, contact RidgeRun.


Input arguments

Argument Meaning
camera_index Zero-based Argus camera index.
sensor_mode_index Sensor mode selected from the camera's Argus mode list.
width, height Positive output dimensions requested from the selected mode.
fps Positive capture rate used to configure the operator clock.
frame_limit Optional limit used by the RidgeRun applications and validation runs.

Ports and data contract

Port Memory Queue Trigger Contract
frame CUDA device, contiguous N/A OnClock at fps Runtime-pool U8 tensor with shape [height, width, 4] in BGRA order. Frame identity and flow metadata are forwarded.

Build

Follow Holoscan RidgeRun Build and Installation for the module build and installation. The operator-specific include, target, and runtime requirements are listed below.

Include argus_camera/argus_camera.hpp and link the holoscan::argus_camera target. The operator requires Jetson Multimedia API Argus, nvargus_socketclient, CUDA and EGL on Jetson aarch64.

Example

The application must bind the output Tensor to the CUDA device used by the graph. A minimal display graph follows the repository applications:

auto camera = graph.op<ArgusCameraOp>("camera", 0U, 0U, 1920, 1080, 60);
auto display = graph.op<X11DisplayOp>("display", 1920, 1080, "Argus camera");
graph.add_flow(camera->frame, display->input);

compile_options.deployment.bind_tensor_output_device(
    holoscan::TensorOutputDevicePlacement{
        .operator_path = "camera",
        .output_port = "frame",
        .device = holoscan::DeviceId{0}});

The camera index and sensor-mode index are zero based. The selected sensor mode must report exactly the requested resolution, and the requested frame rate must fall within that mode's Argus frame-duration range. Width and height must be even because the EGLStream output is two-plane NV12.


Measurement scope
Argus includes Jetson ISP camera processing and produces NV12 before the CUDA conversion. Its GPU and latency measurements must not be compared as if they represented the same workload as a raw V4L2 Bayer pipeline.


Source reference
You can find the source code at ArgusCameraOp.


Related pages


Cookies help us deliver our services. By using our services, you agree to our use of cookies.