GenApi addresses the problem of configuring cameras. The way this is achieved is generic, and applies to different kinds of devices, including frame grabbers. In this chapter, everything we say about cameras also applies to frame grabbers.

GenApi requires two things to work: a register description, and a GenApi implementation.

Register description

A register description is an XML file that can be thought of as a computer-readable datasheet of the camera. It defines camera settings (such as PixelFormat and TriggerSource), and instructions on how to configure them (e.g., to set ExposureMode to Timed, write value 0x12 to register 0xE0140). It can also contain camera documentation.

GenApi implementation

A GenApi implementation is a software module that can read and interpret register description files.

The EMVA provides a reference implementation, but it is fairly difficult to use, and logging is very poor. Instead, we recommend using the Euresys implementation bundled with the eGrabber software package. This implementation also allows writing powerful configuration scripts.


What the user gets from GenApi is a bunch of named features, organized in categories.

Set/get features

Set/get features are simple settings (called parameters in MultiCam), and can be of different types:

integer (e.g., Width)
float (e.g., AcquisitionFrameRate)
enumeration (e.g., PixelFormat)
boolean (e.g., LUTEnable)
string (e.g., DeviceVendorName)

The value of features can be retrieved/modified using get/set functions. Some features are read-only and some are write-only, but most allow read/write access.


There is also another kind of features: commands (e.g., AcquisitionStart). Commands are special: they don't have any associated value; they have side effects. Command features are meant to be executed. When a command is executed, some action happens in the camera (e.g., a software trigger is generated). Obviously, get/set functions don't make sense for commands and can't be used.