Pleora Technologies Inc. eBUS SDK v6.2.8.5877 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 <PvImage.h>
14 #include <PvMultiPartContainer.h>
15 #include <PvRawData.h>
16 #include <PvH264AccessUnit.h>
17 
18 
19 namespace PvBufferLib
20 {
21  class Buffer;
22 }
23 
24 namespace PvStreamLib
25 {
26  class Pipeline;
27 }
28 
29 namespace PvVirtualDeviceLib
30 {
31  class PacketizerGVSP;
32  class PacketizerGVSPMultiPart;
33  class PacketizerRTPUncompressed;
34  class PacketizerRTPH264;
35  class Transmitter;
36 }
37 
38 class PvPipeline;
39 class PvStream;
40 class PvBufferConverter;
42 class PvDeInterlacer;
43 class PvImage;
44 class PvTransmitterGEV;
45 
46 
47 class PV_BUFFER_API PvBuffer
48  : public IPvChunkData
49 {
50 public:
51 
52  PvBuffer( PvPayloadType aPayloadType = PvPayloadTypeImage );
53  virtual ~PvBuffer();
54 
55  PvPayloadType GetPayloadType() const;
56 
57  PvImage *GetImage();
58  const PvImage *GetImage() const;
59  PvRawData *GetRawData();
60  const PvRawData *GetRawData() const;
61  PvChunkData *GetChunkData();
62  const PvChunkData *GetChunkData() const;
63  IPvMultiPartContainer *GetMultiPartContainer();
64  const IPvMultiPartContainer *GetMultiPartContainer() const;
65  IPvH264AccessUnit *GetH264AccessUnit();
66  const IPvH264AccessUnit *GetH264AccessUnit() const;
67 
68 #ifdef EBUS_PYTHON_DOXYGEN
69  ndarray GetDataPointer();
70 #else
71  const uint8_t *GetDataPointer() const;
72  uint8_t *GetDataPointer();
73 #endif
74 
75  uint64_t GetID() const;
76  void SetID( uint64_t aValue );
77 
78  bool IsExtendedID() const;
79  bool IsAttached() const;
80  bool IsAllocated() const;
81 
82  uint32_t GetAcquiredSize() const;
83  uint32_t GetRequiredSize() const;
84  uint32_t GetSize() const;
85 
86  PvResult Reset( PvPayloadType aPayloadType = PvPayloadTypeImage );
87 
88  PvResult Alloc( uint32_t aSize );
89  PvResult AllocChunk( uint32_t aSize );
90  void Free();
91  void FreeChunk();
92 
93 #ifdef EBUS_PYTHON_DOXYGEN
94  PvResult Attach( ndarray aBuffer );
95  ndarray Detach();
96 #else
97  PvResult Attach( void * aBuffer, uint32_t aSize );
98  uint8_t *Detach();
99 #endif
100 
101  uint64_t GetBlockID() const;
102  PvResult GetOperationResult() const;
103  uint64_t GetTimestamp() const;
104  uint64_t GetReceptionTime() const;
105  uint64_t GetDuration() const;
106 
107  PvResult SetTimestamp( uint64_t aTimestamp );
108  PvResult SetDuration( uint64_t aDuration );
109  PvResult SetBlockID( uint64_t aBlockID );
110  PvResult SetReceptionTime( uint64_t aReceptionTime );
111 
112  uint32_t GetPacketsRecoveredCount() const;
113  uint32_t GetPacketsRecoveredSingleResendCount() const;
114  uint32_t GetResendGroupRequestedCount() const;
115  uint32_t GetResendPacketRequestedCount() const;
116  uint32_t GetLostPacketCount() const;
117  uint32_t GetIgnoredPacketCount() const;
118  uint32_t GetRedundantPacketCount() const;
119  uint32_t GetPacketOutOfOrderCount() const;
120 
121  PvResult GetMissingPacketIdsCount( uint32_t& aCount );
122  PvResult GetMissingPacketIds( uint32_t aIndex, uint32_t& aPacketIdLow, uint32_t& aPacketIdHigh );
123 
124  void ResetChunks();
125 #ifdef EBUS_PYTHON_DOXYGEN
126  PvResult AddChunk( uint32_t aID, ndarray aData );
127 #else
128  PvResult AddChunk( uint32_t aID, const uint8_t *aData, uint32_t aLength );
129 #endif
130  void SetChunkLayoutID( uint32_t aChunkLayoutID );
131 
132  bool HasChunks() const;
133  uint32_t GetChunkCount();
134  PvResult GetChunkIDByIndex( uint32_t aIndex, uint32_t &aID );
135  uint32_t GetChunkSizeByIndex( uint32_t aIndex );
136  uint32_t GetChunkSizeByID( uint32_t aID );
137 #ifdef EBUS_PYTHON_DOXYGEN
138  ndarray GetChunkRawDataByIndex( int aIndex );
139  ndarray GetChunkRawDataByID( int aID );
140 #else
141  const uint8_t *GetChunkRawDataByIndex( uint32_t aIndex );
142  const uint8_t *GetChunkRawDataByID( uint32_t aID );
143 #endif
144  uint32_t GetPayloadSize() const;
145  uint32_t GetChunkLayoutID();
146 
147  uint32_t GetChunkDataSize() const;
148  uint32_t GetChunkDataCapacity() const;
149 
150  bool IsHeaderValid() const;
151  bool IsTrailerValid() const;
152 
153 private:
154 
155  // Not implemented
156  PvBuffer( const PvBuffer & );
157  const PvBuffer &operator=( const PvBuffer & );
158 
159  friend class PvStreamLib::Pipeline;
160  friend class PvPipeline;
161  friend class PvStream;
162  friend class PvBufferConverter;
163  friend class PvBufferConverterRGBFilter;
164  friend class PvDeInterlacer;
165  friend class PvTransmitterGEV;
166  friend class PvVirtualDeviceLib::PacketizerGVSP;
167  friend class PvVirtualDeviceLib::PacketizerGVSPMultiPart;
168  friend class PvVirtualDeviceLib::PacketizerRTPUncompressed;
169  friend class PvVirtualDeviceLib::PacketizerRTPH264;
170  friend class PvVirtualDeviceLib::Transmitter;
171 
172  PvBufferLib::Buffer * mThis;
173 };
174 
175 
176 #endif
PvDeInterlacer
De-interlacing filter.
Definition: PvDeInterlacer.h:19
PvResult
Result information.
Definition: PvResult.h:13
PvImage
Image interface to a PvBuffer.
Definition: PvImage.h:48
PvPipeline
Helper class for receiving data from a GigE Vision or USB3 Vision transmitter.
Definition: PvPipeline.h:21
PvRawData
Raw data interface to a PvBuffer.
Definition: PvRawData.h:14
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:39
PvPayloadType.h
GVSP payload type constants.
IPvChunkData::AddChunk
virtual PvResult AddChunk(uint32_t aID, const uint8_t *aData, uint32_t aLength)=0
See PvBuffer::AddChunk.
PvBufferConverterRGBFilter
Contains a RGB filter configuration that can be used with a PvBufferConverter.
Definition: PvBufferConverterRGBFilter.h:22
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.
IPvH264AccessUnit
Generic, read-only H264 access unit interface.
Definition: PvH264AccessUnit.h:21
PvChunkData
Raw data interface to a PvBuffer.
Definition: PvChunkData.h:48
PvBufferConverter
Used to convert a PvBuffer to another pixel type.
Definition: PvBufferConverter.h:28
PvPayloadType
PvPayloadType
GVSP payload type.
Definition: PvPayloadType.h:11
IPvChunkData
Generic chunk data interface.
Definition: PvChunkData.h:14
PvPayloadTypeImage
@ PvPayloadTypeImage
Definition: PvPayloadType.h:15
IPvChunkData::GetChunkSizeByIndex
virtual uint32_t GetChunkSizeByIndex(uint32_t aIndex)=0
See PvBuffer::GetChunkSizeByIndex.
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:55
PvBuffer
Represents a block of GigE Vision or USB3 Vision data in memory.
Definition: PvBuffer.h:47
IPvChunkData::GetChunkIDByIndex
virtual PvResult GetChunkIDByIndex(uint32_t aIndex, uint32_t &aID)=0
See PvBuffer::GetChunkIDByIndex.
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-2021 Pleora Technologies Inc.
www.pleora.com