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