The image buffer header structure is defined as follows:


typedef struct 
{

    UINT32 payload_type;  // Type of payload received (Image(1), Raw(2), (etc..)

    UINT32 state;         // Full/empty state for payload buffer (tag used for buffer cycling)

    INT32  status;        // Frame Status as GEV_FRAME_STATUS_* (see below)

    UINT32 timestamp_hi;  // Most 32 significant bit of the timestamp (for legacy code)

    UINT32 timestamp_lo;  // Least 32 significant bit of the timestamp (for legacy code)

    UINT64 timestamp;     // 64bit version of timestamp for payload

    UINT64 recv_size;     // Received size of entire payload (including all appended "chunk"

                         // (metadata) information) .

    UINT64 id;            // Block id for the payload (starts at 1, may wrap to 1 at 65535).

                           // Image specific payload entries.

    UINT32 h;             // Received height (lines) for an image payload.

    UINT32 w;             // Received width (pixels) for an image payload.

    UINT32 x_offset;      // Received x offset for origin of ROI for an image payload_type.

    UINT32 y_offset;     // Received y offset for origin of ROI for an image payload_type.

    UINT32 x_padding;    // Received x padding bytes for an image payload_type

UINT32 y_padding;     // Received y padding bytes for an image payload_type

    UINT32 d;            // Received pixel depth (bytes per pixel

    UINT32 format;       // Received GigE Vision pixel format for image types.

    PUINT8 address;       // Address of the "payload_type" data

                           //

                           // New entries for non-image payload types

                           //

    PUINT8 chunk_data;   // Address of "chunk" data (metadata) associated with the received                          // payload (NULL if no "chunk" data (metadata) is available).

                           // (The "chunk_data" address is provided here as a shortcut. It is the                      // address immediately following the end of "paylod_type" data)

    UINT32 chunk_size;    // The size of the chunk_data (uncompressed). Zero if no "chunk" data                       //(metadata) is available.

                           // (The "chunk_size" is provided as a helper for decoding raw                              // TurboDrive compressed data in passthru mode)

                           //

   char  filename[256];    // Name of file for payload type "file" (0 terminated string, 255                           // characters maximum system limit in Linux).

} GEVBUF_HEADER, *PGEVBUF_HEADER;

For the various frame reception functions ( GevWaitForNextFrame, GevGetNextFrame) the status of the image data should be checked by looking at the “status” member of the GEVBUF_HEADER to verify if all the data was received.

The actual image data received so far is present in the data buffer pointed to by "address" but the data may be incomplete if the “status” member is not 0.

Related Topics

Image Frame Acquisition