Skip to content

Pylon::IChunkParser#

Module: Low Level API

Low Level API: The interface for chunk parsers analyzing a data stream consisting of chunks. More…

#include <pylon/ChunkParser.h>

Inherited by Pylon::ISelfReliantChunkParser

Public Functions#

Name
virtual void AttachBuffer(const void * pBuffer, int64_t BufferLength, GenApi::AttachStatistics_t * pAttachStatistics =NULL) =0
Pass in a buffer and let the chunk parser analyze it.
virtual void DetachBuffer() =0
Detaches a buffer from the chunk parser. The buffer will no longer accessed by the chunk parser.
virtual void UpdateBuffer(const void * pBaseAddress) =0
Pass in a buffer and let the chunk parser update the camera object's parameters.
virtual bool HasCRC() const =0
Checks if buffer has a CRC attached.
virtual bool CheckCRC() const =0
Checks CRC sum of buffer.

Detailed Description#

class Pylon::IChunkParser;

Low Level API: The interface for chunk parsers analyzing a data stream consisting of chunks.

Note Check the payload type of the GrabResult_t before attaching or updating the buffer.

When chunk data is enabled in the camera the stream sends additional data along with the image. This data needs to be extracted with help of a chunk parser. These are created using the camera's member function IPylonDevice::CreateChunkParser().

When an image buffer containing chunked data is passed to a chunk parser, the camera's chunk related parameters are updated. After changing the data layout either by changing the AOI or enabling/disabling chunk features the parser needs to be reinitialized by calling IChunkParser::AttachBuffer(). Thereafter buffers with the same layout are processed with the IChunkParser::UpdateBuffer() method. Chunk related properties remain unchanged until a new buffer is passed in.

After usage return the chunk parser with a call of the camera's IPylonDevice::DestroyChunkParser() member function.

The code snippet below demonstrates the usage of a chunk parser. A complete program is found in the sample AcquireSingleFrame_ChunkImage.

IChunkParser &ChunkParser = *Camera.CreateChunkParser();

// enable Frame Counter chunk
Camera.ChunkModeActive.SetValue( true );
Camera.ChunkSelector.SetValue( ChunkSelector_Framecounter );
Camera.ChunkEnable.SetValue( true );

// retrieve data from the chunk
GrabResult Result;
if (StreamGrabber.RetrieveResult( Result ) &&
    Result.Succeeded() &&
    Result.PayloadType() == PayloadType_ChunkData)
{
    ChunkParser.AttachBuffer( Result.Buffer(), Result.GetPayloadSize() );
    int64_t frameCounter = Camera.ChunkFramecounter.GetValue();
}

Public Functions Documentation#

function AttachBuffer#

virtual void AttachBuffer(
    const void * pBuffer,
    int64_t BufferLength,
    GenApi::AttachStatistics_t * pAttachStatistics =NULL
) =0

Pass in a buffer and let the chunk parser analyze it.

Parameters:

  • pBuffer Pointer to the new buffer
  • BufferLength Size of the new buffer in bytes
  • pAttachStatistics (optional) Pointer to a record taking statistic data of the analyzed buffer

Reimplemented by: Pylon::CChunkParser::AttachBuffer

Corresponding parameters of the camera object reflecting the chunked data will be updated.

function DetachBuffer#

virtual void DetachBuffer() =0

Detaches a buffer from the chunk parser. The buffer will no longer accessed by the chunk parser.

Reimplemented by: Pylon::CChunkParser::DetachBuffer

An attached buffer must be detached before freeing it. When attaching a new buffer, the previous one gets detached automatically.

function UpdateBuffer#

virtual void UpdateBuffer(
    const void * pBaseAddress
) =0

Pass in a buffer and let the chunk parser update the camera object's parameters.

Parameters:

  • pBaseAddress Pointer to the new buffer

Reimplemented by: Pylon::CChunkParser::UpdateBuffer

This method can be used when the layout of the chunk data hasn't changed since a previous buffer has been attached to the chunk parser. In this case UpdateBuffer is slightly faster than AttachBuffer, because the buffer's layout is reused. If you call UpdateBuffer without having called AttachBuffer first, a LogicalErrorException is raised.

function HasCRC#

virtual bool HasCRC() const =0

Checks if buffer has a CRC attached.

Return: true if the buffer contains CRC value.

function CheckCRC#

virtual bool CheckCRC() const =0

Checks CRC sum of buffer.

Return: true if the contained CRC equals the computed value.