xiAPI allows to process already captured images from camera those are stored in memory or loaded from disk.
Application calls processing functions which are implemented in API library, such as unpacking or RAW color processing (de-bayering). All processing functions can be called independently to currently opened camera.
Offline processing converts transport or RAW formats into other image data formats. It supports unpacking, debayering, Crop and Shift image processing blocks. See image data flow
Source code for capturing 10 frames then processing 10 captured frames is available for download - xiProcSample.cpp
Defect Correction in offline processing - xiProcSample_DefectCorr.cpp - supported with newer camera families (xiC, xiB, xiX, xiT) which can save and load defect lists.
There are the following 5 functions, which allow to control Offline Processing.
// Open processing instance
XI_RETURN xiProcOpen(xiProcessingHandle_t* h);
// Set the parameter to processing
// Same parameters can be set like in xiSetParam.
// Example: XI_PRM_WB_KR for Red channel correction
XI_RETURN xiProcSetParam(xiProcessingHandle_t h, const char* prm, void* val, DWORD size, XI_PRM_TYPE type);
// Set unprocessed image to processing chain
XI_RETURN xiProcPushImage(xiProcessingHandle_t h, unsigned char* first_pixel);
// Set unprocessed XI_IMG image to processing chain
XI_RETURN xiProcPushXiImg(xiProcessingHandle_t h, XI_IMG * xi_image);
// Gets next processed image from processing chain
XI_RETURN xiProcPullImage(xiProcessingHandle_t h, int timeout_ms, XI_IMG* new_image);
// Closes instance for Image Processing entity
XI_RETURN xiProcClose(xiProcessingHandle_t h);
Functions return codes of xiAPI (0..999) combined with specific codes of Processing (1000-1999).
List of specific Image Processing codes:
Result code | Meaning |
1001 | Invalid argument detected (out of range). |
1002 | Implementation is not yet done. |
1003 | This value is not supported. |
1004 | Using of unknown parameter |
1005 | Input buffer is not allocated |
1006 | Output buffer is not allocated |
1007 | Output buffer allocation error |
1008 | There are no processors in chain |
1009 | Some requirement is not met. |
1010 | Processors chain is full. |
1011 | Processor is not initialized yet. |
1012 | Processor generates error. |
1013 | Unknown data format. |
1014 | Unknown color filter array pattern type. |
Offline processing is available since release V4_01_76.