Impact Acquire SDK C
GenICam™ GenDC Format

Since version 2.50 Impact Acquire supports the GenICam™ GenDC format developed by the GenICam working group. This format was triggered by the need to allow various vendors to transfer specific payload without the need to standardize a new payload format all the time. By using this format devices have an interoperable way to transfer e.g. 3D data which typically consists of several independent parts of data belonging together. So the main idea was to be able to report a single block of memory to the user that contains all this information and to have an interface that can access each part of this block of memory. A typical example where the GenDC format could be used is with a 3D camera or a dual head stereo camera where either multiple images that logically belong together (left sensor and right sensor or 3D image and confidence mask). But there are other use cases as well like e.g. when a device supports a hardware JPEG encoder an application might want to access both the raw data and the compressed data for different purposes like perform image processing on the raw data while streaming the compressed data via the network.

The API for accessing GenDC or multi-part data belonging to a request object basically consists of properties residing in a separate list BufferParts within each request.

When GenDC data is reported all the properties residing in the Image list of a request are don't care thus have the cfInvisible flag set. If normal (thus non-multi-part or GenDC) data is reported all properties residing in the BufferParts list of a request are don't care thus have the cfInvisible flag set.

When ptGenDC data is reported by the PayloadType property and the GenDCParserEnable property residing in the SystemSettings list is set to bTrue (the default) all the properties residing in the Image list of a request are don't care thus have the cfInvisible flag set. If normal (thus non-multi-part or GenDC) data is reported or GenDCParserEnable is switched off all properties residing in the BufferParts list of a request are don't care thus have the cfInvisible flag set. For GenDC data then the value of the ImageData property points to the start of the container descriptor. Details on how to parse a GenICam™ GenDC descriptor can be found in the GenDC specification

The memory layout of a GenDC buffer can roughly be described like this:

Limitations

For ptGenDC payload currently the same limitations as described here will apply: Limitations