Pylon::IChunkParser#
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#
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#
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#
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#
Checks if buffer has a CRC attached.
Return: true if the buffer contains CRC value.
function CheckCRC#
Checks CRC sum of buffer.
Return: true if the contained CRC equals the computed value.