Pleora Technologies Inc. eBUS SDK v7.0.1.7536 API



PvGenericDataContainer.h
Go to the documentation of this file.
1 // *****************************************************************************
2 //
3 // Copyright (c) 2024, Pleora Technologies Inc., All rights reserved.
4 //
5 // *****************************************************************************
6 
7 #pragma once
8 
9 #include <PvGenDCLib.h>
10 
11 #include <PvGenDCInterfaces.h>
12 #include <PvComponentType.h>
13 
14 #include <vector>
15 
16 // Forward declarations for GenDC headers (definitions are provided by the GenICam GenDC specification).
17 struct GenDCComponentHeader;
18 struct GenDCPartHeader;
19 struct GenDCContainerHeader;
20 
21 
25 
32 
33 typedef enum
34 {
61 
63 
64 
78 typedef enum
79 {
85  PvGenDCPart1D = 0x4100,
87  PvGenDCPart2D = 0x4200,
105 
106 
107 #pragma pack(push)
108 
112 {
113  uint64_t Size; // Size of the 1D metadata part (in number of elements)
114  uint16_t Padding; // Size of the padding at the end of the part (in bytes)
115  uint16_t PaddingReserved; // Reserved for alignment and future use
116  uint32_t InfoReserved; // Reserved for future use
117  uint64_t InfoTypeSpecific; // Reserved for future use or set to the metadata
118  // layout ID for part type GenICam chunk/XML
119 
120 };
121 
122 
126 {
127  uint64_t Size; // Size of the 1D part
128  uint16_t Padding; // Size of the padding at the end of the part
129  uint16_t PaddingReserved; // Reserved for alignement and future use
130  uint32_t InfoReserved; // Reserved for future use
131  uint64_t InfoTypeSpecific; // Reserved for future use
132 
133 };
134 
135 
139 {
140  uint32_t SizeX; // X size of the 2D part (in pixels)
141  uint32_t SizeY; // Y size of the 2D part (in pixels)
142  uint32_t PaddingX; // Size of the padding at the end of each line (in bytes)
143  uint32_t PaddingY; // Size of the padding at the end of each line (in bytes)
144  uint32_t InfoReserved; // Reserved for future use
145 
146 };
147 
148 
151 struct PV_GENDC_API PvGenDCPartH264Fields : public PvGenDCPart2DFields
152 {
153  uint8_t Reserved; // Reserved for future use
154  uint8_t ProfileIDC; // Profile IDC sequence parameter set data attribute
155  struct H264Flags // This struct is identical to the H264Flags struct nested in GenDCInfoTypeSpecificH264
156  {
157  // Constraint set flag sequence
158  uint8_t CS_set0_flag : 1;
159  uint8_t CS_set1_flag : 1;
160  uint8_t CS_set2_flag : 1;
161  uint8_t CS_set3_flag : 1;
162  uint8_t PM : 2; // Packetization mode
163  uint8_t RF : 2; // Reserved flags
164  } Flags;
165  uint8_t LevelIDC; // Level IDC sequence parameter set data
166  uint16_t SpropInterleavingDepth;
167  uint16_t SpropMaxDonDiff;
168  uint32_t SpropDeintBufReq;
169  uint32_t SpropInitBufTime;
170 
171 };
172 
173 #pragma pack(pop)
174 
179 class PV_GENDC_API IPvGenericDataPart
180 {
181 public:
182 
183  virtual ~IPvGenericDataPart() {}
184 
193  virtual const GenDCPartHeader *GetHeader() const = 0;
194 
203  virtual GenDCPartHeader *GetMutableHeader() = 0;
204 
216  virtual uint16_t GetHeaderType() const = 0;
217 
227  virtual PvGenDCPartType GetHeaderTypeEnum() const = 0;
228 
236  virtual uint16_t GetFlags() const = 0;
237 
246  virtual uint32_t GetHeaderSize() const = 0;
247 
255  virtual uint32_t GetFormat() const = 0;
256 
267  virtual uint16_t GetFlowID() const = 0;
268 
277  virtual uint64_t GetFlowOffset() const = 0;
278 
287  virtual uint64_t GetDataSize() const = 0;
288 
296  //virtual const IPvGenDCPartTypeFields * const GetTypeFields() const = 0;
297 
307  virtual uint64_t GetDataOffset() const = 0;
308 
314  virtual const uint8_t *GetDataPointer() const = 0;
315 
321  virtual uint8_t *GetDataPointer() = 0;
322 
333  virtual operator const IPvGenDCImage *() const = 0;
334 
345  virtual operator const IPvGenDCChunkData *() const = 0;
346 
356  virtual const IPvGenDCImage *GetGenDCImage() const = 0;
357 
367  virtual const IPvGenDCChunkData *GetGenDCChunkData() const = 0;
368 
379  virtual const IPvGenDCChunkWriter *GetGenDCChunkWriter() const = 0;
380 
389  virtual uint64_t GetReceptionTime() const = 0;
390 
401  virtual PvResult GetMetadataSpecificFields( PvGenDCPartMetadataFields &aMetadataFields ) const = 0;
402 
413  virtual PvResult Get1DSpecificFields( PvGenDCPart1DFields& aSpecificFields ) const = 0;
414 
425  virtual PvResult Get2DSpecificFields( PvGenDCPart2DFields &aSpecificFields ) const = 0;
426 
436  virtual PvResult GetH264SpecificFields( PvGenDCPartH264Fields &aSpecificFields ) const = 0;
437 
438 };
439 
440 
445 class PV_GENDC_API IPvGenericDataComponent
446 {
447 public:
448  virtual ~IPvGenericDataComponent() {}
449 
458  virtual const GenDCComponentHeader *GetHeader() const = 0;
459 
468  virtual GenDCComponentHeader *GetMutableHeader() = 0;
469 
479  virtual uint16_t GetFlags() const = 0;
480 
489  virtual uint32_t GetHeaderSize() const = 0;
490 
497  virtual uint16_t GetGroupID() const = 0;
498 
504  virtual uint16_t GetSourceID() const = 0;
505 
511  virtual uint16_t GetRegionID() const = 0;
512 
518  virtual uint32_t GetRegionOffsetX() const = 0;
519 
525  virtual uint32_t GetRegionOffsetY() const = 0;
526 
532  virtual uint64_t GetTimestamp() const = 0;
533 
539  virtual uint64_t GetTypeID() const = 0;
540 
549  virtual PvComponentType GetTypeIDEnum() const = 0;
550 
563  virtual uint32_t GetFormat() const = 0;
564 
573  virtual uint64_t GetPartHeaderOffset( uint32_t aIndex ) const = 0;
574 
580  virtual uint32_t GetPartCount() const = 0;
581 
589  virtual const IPvGenericDataPart *GetPart( uint32_t aIndex ) const = 0;
590 
598  virtual IPvGenericDataPart *GetPart( uint32_t aIndex ) = 0;
599 
607  virtual const IPvGenericDataPart *operator[]( uint32_t aIndex ) const = 0;
608 
616  virtual IPvGenericDataPart *operator[]( uint32_t aIndex ) = 0;
617 
630  virtual uint32_t AddPart( PvGenDCPartType aPartType, uint32_t aFlow ) = 0;
631 };
632 
633 
647 class PV_GENDC_API IPvGenericDataContainer
648 {
649 public:
650 
651  virtual ~IPvGenericDataContainer() {}
652 
658  virtual uint32_t GetComponentCount() const = 0;
659 
667  virtual const IPvGenericDataComponent *GetComponent( uint32_t aIndex ) const = 0;
668 
676  virtual IPvGenericDataComponent *GetComponent( uint32_t aIndex ) = 0;
677 
685  virtual const IPvGenericDataComponent *operator[]( uint32_t aIndex ) const = 0;
686 
694  virtual IPvGenericDataComponent *operator[]( uint32_t aIndex ) = 0;
695 
704  virtual uint64_t GetDataSize() const = 0;
705 
711  virtual uint64_t GetDescriptorSize() const = 0;
712 
719  virtual bool IsValid() const = 0;
720 
729  virtual const GenDCContainerHeader *GetHeader() const = 0;
730 
739  virtual GenDCContainerHeader *GetMutableHeader() = 0;
740 
751  virtual uint32_t AddComponent( PvComponentType aComponentType ) = 0;
752 
753 };
PvResult
Result information.
Definition: PvResult.h:29
IPvGenericDataPart
One part in a GenDC component; the smallest unit in a GenDC container.
Definition: PvGenericDataContainer.h:179
PvGenDCVFTimestamp
@ PvGenDCVFTimestamp
If set as a GenDC variable field, the components timestamp can change during transmission.
Definition: PvGenericDataContainer.h:52
IPvGenDCChunkWriter
Generic chunk data writer interface for GenDC parts.
Definition: PvGenDCInterfaces.h:213
PvComponentType.h
PvGenDCPart2DJpeg
@ PvGenDCPart2DJpeg
JPEG compressed image.
Definition: PvGenericDataContainer.h:89
PvGenDCVFReserved
@ PvGenDCVFReserved
If set as a GenDC variable field, the 'Reserved' flag of certain components can change during transmi...
Definition: PvGenericDataContainer.h:60
PvGenDCPart2DH264
@ PvGenDCPart2DH264
H264 compressed image.
Definition: PvGenericDataContainer.h:93
PvGenDCVFComponentInvalid
@ PvGenDCVFComponentInvalid
If set as a GenDC variable field, the 'Invalid' flag of certain components can change during transmis...
Definition: PvGenericDataContainer.h:57
PvGenDCVFComponentCount
@ PvGenDCVFComponentCount
If set as a GenDC variable field, the last components may not be transmitted.
Definition: PvGenericDataContainer.h:54
PvGenDCPartMetadataGenICamChunk
@ PvGenDCPartMetadataGenICamChunk
GenICam chunk metadata.
Definition: PvGenericDataContainer.h:81
PvGenDCPartCustom
@ PvGenDCPartCustom
Custom part.
Definition: PvGenericDataContainer.h:101
PvGenDCVFFormat
@ PvGenDCVFFormat
If set as a GenDC variable field, the components format can change during transmission.
Definition: PvGenericDataContainer.h:49
IPvGenDCChunkData
Generic chunk data interface for GenDC parts.
Definition: PvGenDCInterfaces.h:131
PvGenDCPartH264Fields
Specific part fields for the H.264 compressed image type.
Definition: PvGenericDataContainer.h:151
PvGenDCPartMetadataFields
Specific part fields for the metadata type.
Definition: PvGenericDataContainer.h:111
PvGenDCPart2DFields
Specific part fields for the 2D uncompressed, JPEG and JPEG2000 types.
Definition: PvGenericDataContainer.h:138
PvGenDCPart2DCustom
@ PvGenDCPart2DCustom
Custom 2D image.
Definition: PvGenericDataContainer.h:99
PvGenDCPart1DFields
Specific part fields for the 1D array type.
Definition: PvGenericDataContainer.h:125
PvGenDCPart2DJpeg2000
@ PvGenDCPart2DJpeg2000
JPEG 2000 compressed image.
Definition: PvGenericDataContainer.h:91
PvGenDCPart2D
@ PvGenDCPart2D
Rectangular uncompressed image (monochrome or none planar).
Definition: PvGenericDataContainer.h:87
PvGenDCVFSizeY
@ PvGenDCVFSizeY
If set as a GenDC variable field, the container parts size and padding in the Y axis can change durin...
Definition: PvGenericDataContainer.h:43
PvGenDCPartType
PvGenDCPartType
Definition: PvGenericDataContainer.h:78
PvGenDCPartUnknown
@ PvGenDCPartUnknown
Does not represent a part type.
Definition: PvGenericDataContainer.h:103
IPvGenDCImage
Generic image interface for GenDC parts.
Definition: PvGenDCInterfaces.h:32
PvGenDCVariableField
PvGenDCVariableField
Definition: PvGenericDataContainer.h:33
PvComponentType
PvComponentType
Enumeration representing the data type of a data acquisition component. Component types are associate...
Definition: PvComponentType.h:16
PvGenDCPartH264Fields::H264Flags
Definition: PvGenericDataContainer.h:155
PvGenDCPart1D
@ PvGenDCPart1D
1 dimensional array data.
Definition: PvGenericDataContainer.h:85
PvGenDCPart1DCustom
@ PvGenDCPart1DCustom
Custom 1D image.
Definition: PvGenericDataContainer.h:97
IPvGenericDataComponent
One component in a GenDC container. A container can be formed by one or more components.
Definition: PvGenericDataContainer.h:445
IPvGenericDataContainer
Interface used to read from a GenDC container.
Definition: PvGenericDataContainer.h:647
PvGenDCInterfaces.h
Interface definitions for GenDC parts that decouple from PvBuffer library.
PvGenDCVFSizeX
@ PvGenDCVFSizeX
If set as a GenDC variable field, the container parts size and padding in the X axis can change durin...
Definition: PvGenericDataContainer.h:40
PvGenDCVFDataSize
@ PvGenDCVFDataSize
If set as a GenDC variable field, the container data size can shrink during transmission.
Definition: PvGenericDataContainer.h:37
PvGenDCVFRegionOffset
@ PvGenDCVFRegionOffset
If set as a GenDC variable field, the components offset can change during transmission.
Definition: PvGenericDataContainer.h:46
PvGenDCPartMetadataCustom
@ PvGenDCPartMetadataCustom
Custom metadata.
Definition: PvGenericDataContainer.h:95
PvGenDCPartMetadataGenICamXML
@ PvGenDCPartMetadataGenICamXML
GenICam XML metadata.
Definition: PvGenericDataContainer.h:83

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