Skip to content

Compatibility Matrix#

Not all camera features are available on every hardware backend. The tables below show which backend a given camera uses, and which ICamera methods that backend supports. Use the *Available() and *Limits() query methods at runtime to check support before calling setters.

Camera Models and Backends#

Current C7 models use Allied Vision Alvium CSI sensor modules and are driven through the VimbaX SDK. Older C7 models were built around Vision Components camera modules, which use either the Argus or the V4L2 backend depending on the sensor:

C7 model Camera module Backend Factory
all current models Allied Vision Alvium (CSI) VimbaX makeAlviumCamera()
C7-R12-* Vision Components IMX412 (color) Argus makeVcCamera() → Argus
C7-R20-* Vision Components IMX183 VC (V4L2) makeVcCamera() → V4L

The factory column shows which backend a model resolves to — it is not a recommendation to call that factory. Applications should always use makeCamera(), which detects the connected hardware and picks the right backend; the mapping above is only relevant for troubleshooting and for reading the feature table below.

For Vision Components modules the routing is done by sensor model: modules with hardware trigger support (imx183, imx565) take the V4L2 path, all others take the Argus path. This can be overridden explicitly:

auto cam = vl::makeVcCamera(0, vl::VcCameraApi::Auto);   // default — decide by sensor
auto cam = vl::makeVcCamera(0, vl::VcCameraApi::Argus);  // force Argus
auto cam = vl::makeVcCamera(0, vl::VcCameraApi::V4L);    // force V4L2

Feature Support#

Feature Argus (CSI) Alvium (VimbaX) VC (non-trigger) VC (trigger)
Exposure
Manual exposure ✅ ✅ ✅ ✅
Auto exposure ✅ ✅ ✅ ❌
Exposure range limits ✅ ✅ ❌ ❌
Target brightness ✅ ✅ ❌ ❌
Gain
Manual gain ✅ ✅ ✅ ✅
Gain range limits ✅ ✅ ❌ ❌
Trigger
Software trigger ✅ ✅ ✅ ✅
Hardware trigger (edge) ❌ ✅ ❌ ✅
Trigger delay ❌ ✅ ❌ ❌
Flash
Flash output ❌ ✅ ❌ ✅
Image Control
White balance (AWB) ✅ ❌ ❌ ❌
Binning ❌ ✅ ❌ ❌
Gamma ❌ ✅ ❌ ❌
Frame rate control ❌ ✅ ❌ ❌
Rotation ✅ ✅ ✅ ✅
Region of Interest
ROI (crop) ❌ ✅ ❌ ❌
Flip X / Flip Y ❌ ✅ ❌ ❌
Other
Hardware timestamps ❌ FW >= 14.0 ❌ ❌
Settings save/load ✅ ✅ ✅ ✅

Camera Backends#

Alvium (VimbaX)#

Used by makeAlviumCamera() and makeCamera() when an Allied Vision Alvium CSI module is detected. Uses the VimbaX SDK. This is the backend of all current C7 cameras.

Strengths: Most feature-rich backend — hardware trigger with delay, flash sync, ROI, flip, binning, gamma, frame rate control. Hardware timestamps available on firmware >= 14.0.

Limitations: No white balance modes (AWB). Feature availability depends on the specific Alvium module — use *Available() methods to query at runtime.

Argus (Jetson CSI)#

Used by makeArgusCamera(), and by makeVcCamera() for Vision Components modules without hardware trigger support — notably the IMX412 color module of the C7-R12. Uses the Nvidia Argus framework for image acquisition and ISP processing.

Strengths: Full AWB support (9 modes), auto exposure with brightness target, Nvidia ISP processing.

Limitations: No hardware trigger, no flash output, no ROI/flip, no binning, no frame rate control.

VC (Vision Components, V4L2)#

Used by makeVcCamera() for Vision Components modules with hardware trigger support — notably the IMX183 module of the C7-R20. Acquisition and trigger/flash control go through V4L2 controls on the VC driver.

Capabilities: Minimal feature set — manual exposure/gain, software/hardware trigger, flash output. No auto exposure, no ROI, no binning.

Runtime Feature Detection#

Always use the query methods to check feature availability before configuring:

auto cam = vl::makeCamera();

if (cam->roiAvailable())
    cam->setRoi(vl::Rect<int>(0, 0, 640, 480));

if (cam->flipXAvailable())
    cam->setFlipX(true);

if (cam->frameRateAvailable())
    cam->setFrameRate(30.0);

auto triggerModes = cam->triggerModesAvailable();
// Check if hardware trigger is in the list before setting it