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