Class Buffer

Class Documentation

class Buffer

The buffer class encapsulates a Genicam buffer that is provided by a stream. A multi-part buffer with one image can be treated like a “normal” buffer.

NOTE: A GenTLException is thrown in case of a severe error.

Public Functions

Buffer(const std::shared_ptr<const GenTLWrapper> &gentl, Stream *parent)

Constructs a buffer class as wrapper around a buffer handle. Buffers must only be constructed by the stream class.

~Buffer()
void setNodemap(const std::shared_ptr<GenApi::CNodeMapRef> nodemap, const std::string &tltype)

Set the device nodemap. If chunks are enabled (i.e. ChunkModeActive is true), the the buffer is automatically attached every time when setHandle() is called in Stream::grab(). This means that chunk values of the last grabbed buffer can be directly accessed through the nodemap.

void setHandle(void *handle)

Set the buffer handle that this object should manage. The handle is used until a new handle is set.

Parameters:

handleBuffer handle that replaces a possibly existing handle.

uint32_t getNumberOfParts() const

Returns the number of parts, excluding chunk data. This is 1 if the buffer is not multipart and the buffer is not chunk only.

Returns:

Number of parts.

void *getGlobalBase() const

Returns the global base address of the buffer memory.

Returns:

Global base address of the buffer memory.

size_t getGlobalSize() const

Returns the global size of the buffer.

Returns:

Global size of the buffer in bytes.

void *getBase(uint32_t part) const

Returns the base address of the specified part of the multi-part buffer.

Returns:

Base address of the buffer memory part.

size_t getSize(uint32_t part) const

Returns the size of the specified part of the mult-part buffer.

Returns:

Size of the buffer part in bytes.

void *getUserPtr() const

Returns the private data pointer of the GenTL Consumer.

Returns:

Private data pointer of the GenTL Consumer.

uint64_t getTimestamp() const

Returns the timestamp of the buffer.

Returns:

Timestamp the buffer was acquired.

bool getNewData() const

Returns if the buffer contains new data.

Returns:

Flag to indicate that the buffer contains new data since the last call.

bool getIsQueued() const

Signals if the buffer is associated to the input or output queue.

Returns:

Flag to indicate if the buffer is in the input pool or output queue.

bool getIsAcquiring() const

Signals if the buffer is currently being filled with data.

Returns:

Flag to indicate that the buffer is currently being filled with data.

bool getIsIncomplete() const

Signals if the buffer is incomplete due to an error.

Returns:

Flag to indicate that a buffer was filled but an error occurred during that process.

std::string getTLType() const

Returns the type the used transport layer.

Returns:

Transport layer type.

size_t getSizeFilled() const

Returns the number of bytes written into the buffer last time it has been filled. This value is reset to 0 when the buffer is placed into the Input Buffer Pool.

Returns:

Fill size of buffer since last call.

size_t getPartDataType(uint32_t part) const

Returns the data type id of the specified part as defined in PARTDATATYPE_IDS. If this buffer is not mult-part, then 0 is returned.

Returns:

One of PARTDATATYPE_IDS.

size_t getWidth(uint32_t part) const

Returns the width of the image in pixel.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

Width of image.

size_t getHeight(uint32_t part) const

Returns the height of the image in pixel.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

Height of image.

size_t getXOffset(uint32_t part) const

Returns the horizontal offset of the data in the buffer in pixels from the image origin to handle areas of interest.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

Horizontal offset of image.

size_t getYOffset(uint32_t part) const

Returns the vertical offset of the data in the buffer in lines from the image origin to handle areas of interest.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

Vertical offset of image.

size_t getXPadding(uint32_t part) const

Returns horizontal padding of the data in the buffer in bytes.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

Horizontal padding of image.

size_t getYPadding() const

Returns vertical padding of the data in the buffer in bytes.

Returns:

Vertical padding of image.

uint64_t getFrameID() const

Returns the sequentially incremented number of the frame. The wrap around depends on the used transport layer technology.

Returns:

Monotonically increasing frame id.

bool getImagePresent(uint32_t part) const

Returns if a 2D, 3D or confidence image is present in the specified part.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

True if image is present.

size_t getPayloadType() const

Returns the payload type according to PAYLOADTYPE_INFO_IDS.

Returns:

One of PAYLOADTYPE_INFO_IDS.

uint64_t getPixelFormat(uint32_t part) const

Returns the pixel format of the specified part as defined in the PFNC. The pixel formats are defined in pixel_formats.h and PFNC.h if getPixelFormatNamespace() returns PIXELFORMAT_NAMESPACE_PFNC_32BIT.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

Pixel format id.

uint64_t getPixelFormatNamespace(uint32_t part) const

Returns the pixel format namespace, which preferably should be PIXELFORMAT_NAMESPACE_PFNC_32BIT.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

One of PIXELFORMAT_NAMESPACE_IDS.

uint64_t getPartSourceID(uint32_t part) const

Returns the source id of the specified part. Images with the same source id are supposed to belong pixelwise together.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

Source id of part or 0 if the buffer is not multi-part.

uint64_t getPartRegionID(uint32_t part) const

Returns the region id of the specified part.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

Region id of part or 0 if the buffer is not multi-part.

uint64_t getPartDataPurposeID(uint32_t part) const

Returns the data purpose id of the specified part.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

Data purpose id of part or 0 if the buffer is not multi-part.

size_t getDeliveredImageHeight(uint32_t part) const

Returns the number of lines that are delivered in this buffer. For areea cameras, this is typically the same as the specified image height. For linescan cameras it can be less.

Parameters:

part – Part index, which is ignored if the buffer is not multi-part.

Returns:

Number of delivered image lines.

size_t getDeliveredChunkPayloadSize() const

Returnes the delivered chung payload size.

Returns:

Chunk payload size.

uint64_t getChunkLayoutID() const

Returns the chunk layout id, which serves as an indicator that the chunk layout has changed and the application should parse the chunk layout again.

Returns:

Chunk layout id.

std::string getFilename() const

Returns the filename in case the payload contains a file.

Returns:

File name.

bool isBigEndian() const

Returns if the data is given as big or little endian.

Returns:

True for big endian and false for little endian.

size_t getDataSize() const

Returns the size of data intended to the written to the buffer the last time it has been filled. If the buffer is incomplete, the number reports the full size of the original data including the lost parts. If the buffer is complete, the number equals getSizeFilled().

Returns:

Data size in bytes.

uint64_t getTimestampNS() const

Returns the acquisition timestamp of the data in this buffer in ns.

Returns:

Timestamp in ns.

bool getDataLargerThanBuffer() const

Signals if the memory that was allocated for this buffer is too small.

Returns:

True if buffer is too small.

bool getContainsChunkdata() const

Returns if the buffer contains chunk data.

Returns:

True if the buffer contains chunk data.

void *getHandle() const

Get internal stream handle.

Returns:

Internal handle.