Pleora Technologies Inc. eBUS SDK v6.4.0.6670 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 #include <PvPleoraCompressed.h>
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  class AcquisitionManager;
37 }
38 
39 class PvPipeline;
40 class PvStream;
41 class PvBufferConverter;
43 class PvDeInterlacer;
44 class PvImage;
45 class PvTransmitterGEV;
46 
95 class PV_BUFFER_API PvBuffer
96  : public IPvChunkData
97 {
98 public:
104  PvBuffer( PvPayloadType aPayloadType = PvPayloadTypeImage );
105 
109  virtual ~PvBuffer();
110 
119  PvPayloadType GetPayloadType() const;
120 
135  PvImage *GetImage();
136 
144  const PvImage *GetImage() const;
145 
160  PvRawData *GetRawData();
161 
169  const PvRawData *GetRawData() const;
170 
185  PvPleoraCompressed *GetPleoraCompressed();
186 
194  const PvPleoraCompressed *GetPleoraCompressed() const;
195 
210  PvChunkData *GetChunkData();
211 
219  const PvChunkData *GetChunkData() const;
220 
235  IPvMultiPartContainer *GetMultiPartContainer();
236 
244  const IPvMultiPartContainer *GetMultiPartContainer() const;
245 
260  IPvH264AccessUnit *GetH264AccessUnit();
261 
269  const IPvH264AccessUnit *GetH264AccessUnit() const;
270 
281  const uint8_t *GetDataPointer() const;
282 
288  uint8_t *GetDataPointer();
289 
297  uint64_t GetID() const;
298 
310  void SetID( uint64_t aValue );
311 
326  bool IsExtendedID() const;
327 
333  bool IsAttached() const;
334 
340  bool IsAllocated() const;
341 
347  uint32_t GetAcquiredSize() const;
348 
354  uint32_t GetRequiredSize() const;
355 
361  uint32_t GetSize() const;
362 
370  PvResult Reset( PvPayloadType aPayloadType = PvPayloadTypeImage );
371 
382  PvResult Alloc( uint32_t aSize );
383 
399  PvResult AllocChunk( uint32_t aSize );
400 
406  void Free();
407 
413  void FreeChunk();
414 
430  PvResult Attach( void * aBuffer, uint32_t aSize );
431 
441  uint8_t *Detach();
442 
454  uint64_t GetBlockID() const;
455 
481  PvResult GetOperationResult() const;
482 
498  uint64_t GetTimestamp() const;
499 
505  uint64_t GetReceptionTime() const;
506 
515  uint64_t GetDuration() const;
516 
527  PvResult SetTimestamp( uint64_t aTimestamp );
528 
536  PvResult SetDuration( uint64_t aDuration );
537 
548  PvResult SetBlockID( uint64_t aBlockID );
549 
560  PvResult SetReceptionTime( uint64_t aReceptionTime );
561 
567  uint32_t GetPacketsRecoveredCount() const;
568 
574  uint32_t GetPacketsRecoveredSingleResendCount() const;
575 
581  uint32_t GetResendGroupRequestedCount() const;
582 
588  uint32_t GetResendPacketRequestedCount() const;
589 
595  uint32_t GetLostPacketCount() const;
596 
602  uint32_t GetIgnoredPacketCount() const;
603 
609  uint32_t GetRedundantPacketCount() const;
610 
616  uint32_t GetPacketOutOfOrderCount() const;
617 
647  PvResult GetMissingPacketIdsCount( uint32_t& aCount );
648 
664  PvResult GetMissingPacketIds( uint32_t aIndex, uint32_t& aPacketIdLow, uint32_t& aPacketIdHigh );
665 
681  void ResetChunks();
682 
700  PvResult AddChunk( uint32_t aID, const uint8_t *aData, uint32_t aLength );
701 
707  void SetChunkLayoutID( uint32_t aChunkLayoutID );
708 
717  bool HasChunks() const;
718 
733  uint32_t GetChunkCount();
734 
748  PvResult GetChunkIDByIndex( uint32_t aIndex, uint32_t &aID );
749 
761  uint32_t GetChunkSizeByIndex( uint32_t aIndex );
762 
773  uint32_t GetChunkSizeByID( uint32_t aID );
774 
786  const uint8_t *GetChunkRawDataByIndex( uint32_t aIndex );
787 
798  const uint8_t *GetChunkRawDataByID( uint32_t aID );
799 
816  uint32_t GetPayloadSize() const;
817 
823  uint32_t GetChunkLayoutID();
824 
838  uint32_t GetChunkDataSize() const;
839 
856  uint32_t GetChunkDataCapacity() const;
857 
872  bool IsHeaderValid() const;
873 
886  bool IsTrailerValid() const;
887 
896  bool IsLargeLeaderTrailerEnabled() const;
897 
898 private:
899 
900  // Not implemented
901  PvBuffer( const PvBuffer & );
902  const PvBuffer &operator=( const PvBuffer & );
903 
904  friend class PvStreamLib::Pipeline;
905  friend class PvPipeline;
906  friend class PvStream;
907  friend class PvBufferConverter;
908  friend class PvBufferConverterRGBFilter;
909  friend class PvDeInterlacer;
910  friend class PvTransmitterGEV;
911  friend class PvVirtualDeviceLib::PacketizerGVSP;
912  friend class PvVirtualDeviceLib::PacketizerGVSPMultiPart;
913  friend class PvVirtualDeviceLib::PacketizerRTPUncompressed;
914  friend class PvVirtualDeviceLib::PacketizerRTPH264;
915  friend class PvVirtualDeviceLib::Transmitter;
916  friend class PvVirtualDeviceLib::AcquisitionManager;
917 
918  PvBufferLib::Buffer * mThis;
919 };
920 
921 
922 #endif
Receive data from a GigE Vision or USB3 Vision transmitter.
Definition: PvStream.h:50
Helper class for receiving data from a GigE Vision or USB3 Vision transmitter.
Definition: PvPipeline.h:32
Used to convert a PvBuffer to another pixel type.
Definition: PvBufferConverter.h:63
Definition: PvBuffer.h:24
Generic chunk data interface.
Definition: PvChunkData.h:17
Raw data interface to a PvBuffer.
Definition: PvChunkData.h:197
Result information.
Definition: PvResult.h:29
Pleora compressed interface to a PvBuffer.
Definition: PvPleoraCompressed.h:26
Raw data interface to a PvBuffer.
Definition: PvRawData.h:24
Interface to a multi-part container.
Definition: PvMultiPartContainer.h:352
Contains a RGB filter configuration that can be used with a PvBufferConverter.
Definition: PvBufferConverterRGBFilter.h:34
Definition: PvBuffer.h:29
Generic, read-only H264 access unit interface.
Definition: PvH264AccessUnit.h:31
De-interlacing filter.
Definition: PvDeInterlacer.h:39
GVSP payload type constants.
PvPayloadType
GVSP payload type.
Definition: PvPayloadType.h:66
Represents a block of GigE Vision or USB3 Vision data in memory.
Definition: PvBuffer.h:95
Image interface to a PvBuffer.
Definition: PvImage.h:181
Class for transmitting blocks using the GigE Vision streaming protocol.
Definition: PvTransmitterGEV.h:24
Definition: PvBuffer.h:19
Definition: PvPayloadType.h:70

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