Pleora Technologies Inc. eBUS SDK v7.0.1.7536 API



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>
17 #include <PvGenericDataContainer.h>
18 #include <PvGenDCInterfaces.h>
19 
20 namespace PvBufferLib
21 {
22 class Buffer;
23 }
24 
25 
26 namespace PvGenDCLib
27 {
28 class GenericDataPart;
29 }
30 
31 namespace PvStreamLib
32 {
33 class Pipeline;
34 }
35 
36 namespace PvSoftDeviceGEVLib
37 {
38 class PacketizerGVSP;
39 class PacketizerGVSPMultiPart;
40 class PacketizerGVSPGenDC;
41 class PacketizerRTPUncompressed;
42 class PacketizerRTPH264;
43 class Transmitter;
44 class AcquisitionManager;
45 }
46 
47 class PvPipeline;
48 class PvStream;
49 class PvBufferConverter;
51 class PvDeInterlacer;
52 class PvImage;
53 class PvTransmitterGEV;
54 
110 class PV_BUFFER_API PvBuffer : public IPvChunkData
111 {
112 public:
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 
992 private:
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
PvDeInterlacer
De-interlacing filter.
Definition: PvDeInterlacer.h:39
IPvChunkData::GetChunkDataCapacity
virtual uint32_t GetChunkDataCapacity() const =0
Returns the current chunk data capacity.
PvResult
Result information.
Definition: PvResult.h:29
IPvGenDCManager
Interface for managing GenDC (Generic Data Container) operations.
Definition: PvGenDCInterfaces.h:264
PvImage
Image interface to a PvBuffer.
Definition: PvImage.h:174
PvPipeline
Helper class for receiving data from a GigE Vision or USB3 Vision transmitter.
Definition: PvPipeline.h:32
PvRawData
Raw data interface to a PvBuffer.
Definition: PvRawData.h:24
IPvChunkData::SetChunkLayoutID
virtual void SetChunkLayoutID(uint32_t aChunkLayoutID)=0
Set the chunk data layout ID.
IPvChunkData::GetChunkRawDataByIndex
virtual const uint8_t * GetChunkRawDataByIndex(uint32_t aIndex)=0
See PvBuffer::GetChunkRawDataByIndex.
PvStream
Receive data from a GigE Vision or USB3 Vision transmitter.
Definition: PvStream.h:50
PvPayloadType.h
GVSP payload type constants.
PvPleoraCompressed
Pleora compressed interface to a PvBuffer.
Definition: PvPleoraCompressed.h:26
PvBufferConverterRGBFilter
Contains a RGB filter configuration that can be used with a PvBufferConverter.
Definition: PvBufferConverterRGBFilter.h:34
IPvChunkData::HasChunks
virtual bool HasChunks() const =0
Returns true if the buffer has data chunks.
IPvChunkData::GetChunkCount
virtual uint32_t GetChunkCount()=0
See PvBuffer::GetChunkCount.
IPvChunkData::GetChunkLayoutID
virtual uint32_t GetChunkLayoutID()=0
Get the chunk data layout ID.
IPvChunkData::ResetChunks
virtual void ResetChunks()=0
See PvBuffer::ResetChunks.
IPvH264AccessUnit
Generic, read-only H264 access unit interface.
Definition: PvH264AccessUnit.h:31
PvChunkData
Raw data interface to a PvBuffer.
Definition: PvChunkData.h:198
PvBufferConverter
Used to convert a PvBuffer to another pixel type.
Definition: PvBufferConverter.h:66
PvPayloadType
PvPayloadType
GVSP payload type.
Definition: PvPayloadType.h:19
IPvChunkData::AddChunk
virtual PvResult AddChunk(uint32_t aID, const uint8_t *aData, uint32_t aLength)=0
See PvBuffer::AddChunk.
IPvChunkData
Generic chunk data interface.
Definition: PvChunkData.h:18
PvPayloadTypeImage
@ PvPayloadTypeImage
Image payload type. Access from PvBuffer using PvBuffer::GetImage.
Definition: PvPayloadType.h:27
IPvChunkData::GetChunkSizeByIndex
virtual uint32_t GetChunkSizeByIndex(uint32_t aIndex)=0
See PvBuffer::GetChunkSizeByIndex.
PvGenericDataContainer.h
IPvGenericDataContainer
Interface used to read from a GenDC container.
Definition: PvGenericDataContainer.h:647
PvTransmitterGEV
Class for transmitting blocks using the GigE Vision streaming protocol.
Definition: PvTransmitterGEV.h:24
IPvMultiPartContainer
Interface to a multi-part container.
Definition: PvMultiPartContainer.h:352
IPvChunkData::GetChunkDataSize
virtual uint32_t GetChunkDataSize() const =0
Returns the current chunk data size.
PvGenDCInterfaces.h
Interface definitions for GenDC parts that decouple from PvBuffer library.
PvBuffer
Represents a block of GigE Vision or USB3 Vision data in memory.
Definition: PvBuffer.h:110
IPvChunkData::GetChunkIDByIndex
virtual PvResult GetChunkIDByIndex(uint32_t aIndex, uint32_t &aID)=0
See PvBuffer::GetChunkIDByIndex.
PvCudaBufferConverter
Used to convert a PvBuffer to another pixel type.
Definition: PvCudaBufferConverter.h:67
IPvChunkData::GetChunkRawDataByID
virtual const uint8_t * GetChunkRawDataByID(uint32_t aID)=0
See PvBuffer::GetChunkRawDataByID.
IPvChunkData::GetChunkSizeByID
virtual uint32_t GetChunkSizeByID(uint32_t aID)=0
See PvBuffer::GetChunkSizeByID.

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