XiAPI Concatenated Images in One Buffer¶
Feature¶
Multiple XIMEA cameras offer the possibility to concatenate multiple images in one buffer.
It allows to decrease the overhead with handling buffers.
This is beneficial, especially at high framerates.
Currently, PCIe cameras (from xiX and xiB lines) provide this feature.
Concept¶
The basic idea of this functionality is following:
- Application sets transport format to disable image processing
XI_PRM_IMAGE_DATA_FORMAT = XI_FRM_TRANSPORT_DATA
- Application sets the number of images to be concatenated. Here is an example for 10 images:
XI_PRM_CONCAT_IMG_COUNT = 10
- Application activates the feature
XI_PRM_CONCAT_IMG_MODE = XI_ON
- Application starts acquisition
StartAcquisition
- Now, the camera delivers data from 10 successive images into one buffer
- Application gets those concatenated data
xiGetImage(&transport_data)
- Application gets byte distance between the beginning of concatenated images by getting XI_PRM_CONCAT_IMG_TRANSPORT_IMG_OFFSET
- The application can process single images by
for(i=0;i<N;i++)
ProcessImage(transport_data + i*transport_img_offset);
Counters¶
- XI_CNT_SEL_TRANSPORT_TRANSFERRED_FRAMES is incremented after each image.
E.g. if N=10, it is incremented by 10 for each buffer.
- GenTL: BUFFER_INFO_FRAMEID is incremented after each image.
E.g. if N=10, it is incremented by 10 for each GenTL-buffer.
- XI_IMG.acq_nframe is incremented after each image.
E.g. if N=10, it is incremented by 10 each xiGetImage.
Example¶
Here is the source code - example_concatenation.cpp