Pleora Technologies Inc. eBUS SDK v7.0.1.7536 API



Loading...
Searching...
No Matches
PvBuffer.h
1// *****************************************************************************
2//
3// Copyright (c) 2007, Pleora Technologies Inc., All rights reserved.
4//
5// *****************************************************************************
6
7#ifndef __PVBUFFER_H__
8#define __PVBUFFER_H__
9
10#include <PvBufferLib.h>
11#include <PvPayloadType.h>
12#include <PvImage.h>
13#include <PvMultiPartContainer.h>
14#include <PvRawData.h>
15#include <PvH264AccessUnit.h>
16#include <PvPleoraCompressed.h>
18#include <PvGenDCInterfaces.h>
19
20namespace PvBufferLib
21{
22class Buffer;
23}
24
25
26namespace PvGenDCLib
27{
28class GenericDataPart;
29}
30
31namespace PvStreamLib
32{
33class Pipeline;
34}
35
36namespace PvSoftDeviceGEVLib
37{
38class PacketizerGVSP;
39class PacketizerGVSPMultiPart;
40class PacketizerGVSPGenDC;
41class PacketizerRTPUncompressed;
42class PacketizerRTPH264;
43class Transmitter;
44class AcquisitionManager;
45}
46
47class PvPipeline;
48class PvStream;
51class PvDeInterlacer;
52class PvImage;
54
110class PV_BUFFER_API PvBuffer : public IPvChunkData
111{
112public:
118 PvBuffer( PvPayloadType aPayloadType = PvPayloadTypeImage );
119
123 virtual ~PvBuffer();
124
133 PvPayloadType GetPayloadType() const;
134
149 PvImage* GetImage();
150
158 const PvImage* GetImage() const;
159
174 PvRawData* GetRawData();
175
183 const PvRawData* GetRawData() const;
184
199 PvPleoraCompressed* GetPleoraCompressed();
200
208 const PvPleoraCompressed* GetPleoraCompressed() const;
209
224 PvChunkData* GetChunkData();
225
233 const PvChunkData* GetChunkData() const;
234
249 IPvMultiPartContainer* GetMultiPartContainer();
250
258 const IPvMultiPartContainer* GetMultiPartContainer() const;
259
274 IPvH264AccessUnit* GetH264AccessUnit();
275
283 const IPvH264AccessUnit* GetH264AccessUnit() const;
284
299 IPvGenericDataContainer* GetGenDC();
300
308 const IPvGenericDataContainer* GetGenDC() const;
309
320 const uint8_t* GetDataPointer() const;
321
327 uint8_t* GetDataPointer();
328
336 uint64_t GetID() const;
337
349 void SetID( uint64_t aValue );
350
365 bool IsExtendedID() const;
366
372 bool IsAttached() const;
373
379 bool IsAllocated() const;
380
387 uint32_t GetAcquiredSize() const;
388
395 uint32_t GetRequiredSize() const;
396
402 uint32_t GetSize() const;
403
411 PvResult Reset( PvPayloadType aPayloadType = PvPayloadTypeImage );
412
423 PvResult Alloc( uint32_t aSize );
424
440 PvResult AllocChunk( uint32_t aSize );
441
447 void Free();
448
454 void FreeChunk();
455
471 PvResult Attach( void* aBuffer, uint32_t aSize );
472
482 uint8_t* Detach();
483
495 uint64_t GetBlockID() const;
496
525 PvResult GetOperationResult() const;
526
545 uint64_t GetTimestamp() const;
546
553 uint64_t GetReceptionTime() const;
554
563 uint64_t GetDuration() const;
564
576 PvResult SetTimestamp( uint64_t aTimestamp );
577
585 PvResult SetDuration( uint64_t aDuration );
586
597 PvResult SetBlockID( uint64_t aBlockID );
598
609 PvResult SetReceptionTime( uint64_t aReceptionTime );
610
617 uint32_t GetPacketsRecoveredCount() const;
618
625 uint32_t GetPacketsRecoveredSingleResendCount() const;
626
632 uint32_t GetResendGroupRequestedCount() const;
633
639 uint32_t GetResendPacketRequestedCount() const;
640
647 uint32_t GetLostPacketCount() const;
648
654 uint32_t GetIgnoredPacketCount() const;
655
661 uint32_t GetRedundantPacketCount() const;
662
668 uint32_t GetPacketOutOfOrderCount() const;
669
708 PvResult GetMissingPacketIdsCount( uint32_t& aCount );
709
729 PvResult GetMissingPacketIds( uint32_t aIndex,
730 uint32_t& aPacketIdLow,
731 uint32_t& aPacketIdHigh );
732
748 void ResetChunks();
749
769 PvResult AddChunk( uint32_t aID, const uint8_t* aData, uint32_t aLength );
770
776 void SetChunkLayoutID( uint32_t aChunkLayoutID );
777
786 bool HasChunks() const;
787
802 uint32_t GetChunkCount();
803
819 PvResult GetChunkIDByIndex( uint32_t aIndex, uint32_t& aID );
820
832 uint32_t GetChunkSizeByIndex( uint32_t aIndex );
833
844 uint32_t GetChunkSizeByID( uint32_t aID );
845
857 const uint8_t* GetChunkRawDataByIndex( uint32_t aIndex );
858
869 const uint8_t* GetChunkRawDataByID( uint32_t aID );
870
887 uint32_t GetPayloadSize() const;
888
894 uint32_t GetChunkLayoutID();
895
909 uint32_t GetChunkDataSize() const;
910
927 uint32_t GetChunkDataCapacity() const;
928
943 bool IsHeaderValid() const;
944
957 bool IsTrailerValid() const;
958
968 bool IsLargeLeaderTrailerEnabled() const;
969
990 PvResult AttachGenDCManager( IPvGenDCManager &aManager );
991
992private:
993 // Not implemented
994 PvBuffer( const PvBuffer& );
995 const PvBuffer& operator=( const PvBuffer& );
996
997 friend class PvStreamLib::Pipeline;
998 friend class PvPipeline;
999 friend class PvStream;
1000 friend class PvBufferConverter;
1001 friend class PvBufferConverterRGBFilter;
1002 friend class PvCudaBufferConverter;
1003 friend class PvDeInterlacer;
1004 friend class PvTransmitterGEV;
1005 friend class PvSoftDeviceGEVLib::PacketizerGVSP;
1006 friend class PvSoftDeviceGEVLib::PacketizerGVSPMultiPart;
1007 friend class PvSoftDeviceGEVLib::PacketizerGVSPGenDC;
1008 friend class PvSoftDeviceGEVLib::PacketizerRTPUncompressed;
1009 friend class PvSoftDeviceGEVLib::PacketizerRTPH264;
1010 friend class PvSoftDeviceGEVLib::Transmitter;
1011 friend class PvSoftDeviceGEVLib::AcquisitionManager;
1012 friend class PvGenDCLib::GenericDataPart;
1013
1014 PvBufferLib::Buffer* mThis;
1015};
1016
1017
1018#endif
Interface definitions for GenDC parts that decouple from PvBuffer library.
GVSP payload type constants.
PvPayloadType
GVSP payload type.
Definition PvPayloadType.h:20
@ PvPayloadTypeImage
Image payload type. Access from PvBuffer using PvBuffer::GetImage.
Definition PvPayloadType.h:27
Generic chunk data interface.
Definition PvChunkData.h:19
virtual void SetChunkLayoutID(uint32_t aChunkLayoutID)=0
Set the chunk data layout ID.
virtual uint32_t GetChunkSizeByIndex(uint32_t aIndex)=0
See PvBuffer::GetChunkSizeByIndex.
virtual const uint8_t * GetChunkRawDataByIndex(uint32_t aIndex)=0
See PvBuffer::GetChunkRawDataByIndex.
virtual PvResult AddChunk(uint32_t aID, const uint8_t *aData, uint32_t aLength)=0
See PvBuffer::AddChunk.
virtual uint32_t GetChunkSizeByID(uint32_t aID)=0
See PvBuffer::GetChunkSizeByID.
virtual uint32_t GetChunkDataCapacity() const =0
Returns the current chunk data capacity.
virtual const uint8_t * GetChunkRawDataByID(uint32_t aID)=0
See PvBuffer::GetChunkRawDataByID.
virtual void ResetChunks()=0
See PvBuffer::ResetChunks.
virtual uint32_t GetChunkLayoutID()=0
Get the chunk data layout ID.
virtual uint32_t GetChunkCount()=0
See PvBuffer::GetChunkCount.
virtual PvResult GetChunkIDByIndex(uint32_t aIndex, uint32_t &aID)=0
See PvBuffer::GetChunkIDByIndex.
virtual uint32_t GetChunkDataSize() const =0
Returns the current chunk data size.
virtual bool HasChunks() const =0
Returns true if the buffer has data chunks.
Interface for managing GenDC (Generic Data Container) operations.
Definition PvGenDCInterfaces.h:265
Interface used to read from a GenDC container.
Definition PvGenericDataContainer.h:648
Generic, read-only H264 access unit interface.
Definition PvH264AccessUnit.h:32
Interface to a multi-part container.
Definition PvMultiPartContainer.h:354
Used to convert a PvBuffer to another pixel type.
Definition PvBufferConverter.h:67
Contains a RGB filter configuration that can be used with a PvBufferConverter.
Definition PvBufferConverterRGBFilter.h:35
Represents a block of GigE Vision or USB3 Vision data in memory.
Definition PvBuffer.h:111
Raw data interface to a PvBuffer.
Definition PvChunkData.h:200
Used to convert a PvBuffer to another pixel type.
Definition PvCudaBufferConverter.h:68
De-interlacing filter.
Definition PvDeInterlacer.h:40
Image interface to a PvBuffer.
Definition PvImage.h:176
Helper class for receiving data from a GigE Vision or USB3 Vision transmitter.
Definition PvPipeline.h:33
Pleora compressed interface to a PvBuffer.
Definition PvPleoraCompressed.h:27
Raw data interface to a PvBuffer.
Definition PvRawData.h:25
Result information.
Definition PvResult.h:30
Receive data from a GigE Vision or USB3 Vision transmitter.
Definition PvStream.h:51
Class for transmitting blocks using the GigE Vision streaming protocol.
Definition PvTransmitterGEV.h:26

Copyright (c) 2002-2026 Pleora Technologies Inc.
www.pleora.com