3#include "../../pfnc_format.hpp"
4#include "../../shims/stdvariant.hpp"
5#include "../../version.hpp"
6#include "../driver.hpp"
14 inline HandleGuard<Driver::GenDcDescriptor>::HandleGuard(
void *handle) noexcept
15 : HandleGuard<Driver::GenDcDescriptor>(handle, [](
void *handle) { CVB_CALL_CAPI(
ReleaseObject(handle)); })
22 struct GenDcDescriptorPartConfig
40 struct GenDcDescriptorMetadataPartConfig :
public GenDcDescriptorPartConfig
159 friend class GenDcComponent;
160 GenDcPart(
void *handle,
size_t componentIdx,
size_t partIdx);
164 size_t componentIdx_;
170 class GenDcPartMetadata :
public GenDcPart
204 friend class GenDcComponent;
205 GenDcPartMetadata(
void *handle,
size_t componentIdx,
size_t partIdx);
209 class GenDcPartMetadataGenICamChunk :
public GenDcPartMetadata
229 friend class GenDcComponent;
230 GenDcPartMetadataGenICamChunk(
void *handle,
size_t componentIdx,
size_t partIdx);
234 class GenDcPartMetadataGenICamXML :
public GenDcPartMetadata
254 friend class GenDcComponent;
255 GenDcPartMetadataGenICamXML(
void *handle,
size_t componentIdx,
size_t partIdx);
259 class GenDcPart1D :
public GenDcPart
293 friend class GenDcComponent;
294 GenDcPart1D(
void *handle,
size_t componentIdx,
size_t partIdx);
298 class GenDcPart2D :
public GenDcPart
301 virtual ~GenDcPart2D() =
default;
302 GenDcPart2D(
const GenDcPart2D &) =
default;
303 GenDcPart2D(GenDcPart2D &&) =
default;
304 GenDcPart2D &operator=(
const GenDcPart2D &) =
default;
305 GenDcPart2D &operator=(GenDcPart2D &&) =
default;
366 friend class GenDcComponent;
367 GenDcPart2D(
void *handle,
size_t componentIdx,
size_t partIdx);
371 class GenDcPartH264 :
public GenDcPart2D
531 friend class GenDcComponent;
532 GenDcPartH264(
void *handle,
size_t componentIdx,
size_t partIdx);
688 friend class GenDcDescriptor;
689 GenDcComponent(
void *handle,
size_t componentIdx);
692 size_t componentIdx_;
697 class GenDcDescriptor
700 using GuardType = HandleGuard<GenDcDescriptor>;
718 virtual ~GenDcDescriptor() =
default;
719 GenDcDescriptor(
const GenDcDescriptor &) =
delete;
720 GenDcDescriptor(GenDcDescriptor &&) =
default;
721 GenDcDescriptor &operator=(
const GenDcDescriptor &) =
delete;
722 GenDcDescriptor &operator=(GenDcDescriptor &&) =
default;
889 void *
Handle()
const noexcept;
892 explicit GenDcDescriptor(HandleGuard<GenDcDescriptor> &&guard);
895 HandleGuard<GenDcDescriptor> handle_;
Class for a GenDC component descriptor.
Definition decl_gendc_descriptor.hpp:541
std::uint64_t GetTimestamp() const
Return the timestamp of this GenDC component's generation.
Definition detail_gendc_descriptor.hpp:551
std::uint32_t GetHeaderSize() const
Return the size of this GenDC component descriptor.
Definition detail_gendc_descriptor.hpp:515
void SetTimestamp(std::uint64_t timestamp)
Set the timestamp of this GenDC component's generation.
Definition detail_gendc_descriptor.hpp:615
std::uint16_t GetRegionId() const
Return the Source ID of this GenDC component.
Definition detail_gendc_descriptor.hpp:533
ComponentId GetTypeId() const
Return the type identifier of this GenDC component.
Definition detail_gendc_descriptor.hpp:557
const std::vector< GenDCPartVariant > & GetParts() const
Return the part descriptors of this GenDC component.
Definition detail_gendc_descriptor.hpp:569
std::uint32_t GetRegionOffsetX() const
Return the X Offset of this GenDC component's region.
Definition detail_gendc_descriptor.hpp:539
std::size_t GetOffset() const
Return the offset of this component descriptor in the GenDC descriptor.
Definition detail_gendc_descriptor.hpp:503
PfncFormat GetFormat() const
Return the format of the whole GenDC component (including all its parts).
Definition detail_gendc_descriptor.hpp:563
void SetSourceId(std::uint16_t id)
Set the Source ID of this GenDC component.
Definition detail_gendc_descriptor.hpp:591
void SetFlags(GenDcComponentFlags flags)
Set the flags of this GenDC component.
Definition detail_gendc_descriptor.hpp:579
std::uint16_t GetGroupId() const
Return the Group ID of this GenDC component.
Definition detail_gendc_descriptor.hpp:521
GenDcComponentFlags GetFlags() const
Return the flags of this GenDC component.
Definition detail_gendc_descriptor.hpp:509
std::uint32_t GetRegionOffsetY() const
Return the Y Offset of this GenDC component's region.
Definition detail_gendc_descriptor.hpp:545
std::uint16_t GetSourceId() const
Return the Source ID of this GenDC component.
Definition detail_gendc_descriptor.hpp:527
void SetRegionOffsetX(std::uint32_t offset)
Set the X Offset of this GenDC component's region.
Definition detail_gendc_descriptor.hpp:603
void SetRegionId(std::uint16_t id)
Set the Source ID of this GenDC component.
Definition detail_gendc_descriptor.hpp:597
void SetRegionOffsetY(std::uint32_t offset)
Set the Y Offset of this GenDC component's region.
Definition detail_gendc_descriptor.hpp:609
void SetGroupId(std::uint16_t id)
Set the Group ID of this GenDC component.
Definition detail_gendc_descriptor.hpp:585
Class for a GenDC container descriptor.
Definition decl_gendc_descriptor.hpp:698
std::uint32_t GetHeaderSize() const
Return the size of this GenDC container descriptor.
Definition detail_gendc_descriptor.hpp:652
std::size_t GetSerializedSize() const
Get the size in bytes of this GenDC descriptor when serialized.
Definition detail_gendc_descriptor.hpp:759
const std::vector< GenDcComponent > & GetComponents() const
Return the component descriptors of this GenDC container.
Definition detail_gendc_descriptor.hpp:683
GenDcDescriptorFlag GetFlags() const
Return the flags of this GenDC container.
Definition detail_gendc_descriptor.hpp:646
void SetVariableFields(GenDcDescriptorVariableField fields)
Set the flags identifying the variable fields of this GenDC container.
Definition detail_gendc_descriptor.hpp:744
void SetContainerId(std::uint64_t id)
Set the identifier of GenDC container.
Definition detail_gendc_descriptor.hpp:739
std::vector< std::uint8_t > Serialize() const
Serialize this GenDC descriptor into a new buffer.
Definition detail_gendc_descriptor.hpp:770
std::uint64_t GetDataSize() const
Return the size of the GenDC data.
Definition detail_gendc_descriptor.hpp:668
std::uint64_t GetContainerId() const
Return the identifier of GenDC container.
Definition detail_gendc_descriptor.hpp:657
size_t CalculateDataFlowCount() const
Return the number of data flows that are configured in the GenDC container.
Definition detail_gendc_descriptor.hpp:693
void SetFlags(GenDcDescriptorFlag flags)
Set the flags of this GenDC container.
Definition detail_gendc_descriptor.hpp:734
void SetDataSize(std::uint32_t size)
Set the size of the GenDC data.
Definition detail_gendc_descriptor.hpp:749
GenDcDescriptorVariableField GetVariableFields() const
Return the flags identifying the variable fields of this GenDC container.
Definition detail_gendc_descriptor.hpp:662
std::vector< size_t > CalculateDataFlowSizes() const
Return the sizes of data flows that the GenDC container requires.
Definition detail_gendc_descriptor.hpp:711
std::int64_t GetDataOffset() const
Return the offset of the GenDC data.
Definition detail_gendc_descriptor.hpp:673
static std::unique_ptr< GenDcDescriptor > FromHandle(HandleGuard< GenDcDescriptor > &&guard)
Creates a GenDC descriptor from a classic API handle.
Definition detail_gendc_descriptor.hpp:631
std::uint32_t GetDescriptorSize() const
Return the size of the GenDC container descriptor.
Definition detail_gendc_descriptor.hpp:678
void * Handle() const noexcept
Return the Handle to the internal resource.
Definition detail_gendc_descriptor.hpp:754
Version GetVersion() const
Return the GenDC descriptor standards version.
Definition detail_gendc_descriptor.hpp:639
static std::unique_ptr< GenDcDescriptor > Create(const GenDcDescriptorConfig &descriptorConfig)
Create a GenDC descriptor.
Definition detail_gendc_descriptor.hpp:778
Class for a GenDC 1D part descriptor.
Definition decl_gendc_descriptor.hpp:260
void SetPadding(std::uint16_t padding)
Set the padding of this GenDC 1D part.
Definition detail_gendc_descriptor.hpp:266
std::uint16_t GetPadding() const
Return the padding of this GenDC 1D part.
Definition detail_gendc_descriptor.hpp:255
void SetSize(std::uint64_t size)
Set the size of the GenDC 1D part.
Definition detail_gendc_descriptor.hpp:261
std::uint64_t GetSize() const
Return the size of the GenDC 1D part.
Definition detail_gendc_descriptor.hpp:249
Class for a GenDC 2D part descriptor.
Definition decl_gendc_descriptor.hpp:299
virtual void SetSizeY(std::uint32_t size)
Set the Y size of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:305
virtual std::uint32_t GetSizeY() const
Return the Y size of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:282
virtual std::uint16_t GetPaddingY() const
Return the Y padding of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:294
virtual void SetPaddingX(std::uint16_t padding)
Set the X padding of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:310
virtual void SetSizeX(std::uint32_t size)
Set the X size of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:300
virtual std::uint16_t GetPaddingX() const
Return the X padding of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:288
virtual std::uint32_t GetSizeX() const
Return the X size of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:276
virtual void SetPaddingY(std::uint16_t padding)
Set the Y padding of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:316
Class for a GenDC H.264 encoded part descriptor.
Definition decl_gendc_descriptor.hpp:372
std::uint8_t GetLevelIDC() const
Return the level_idc sequence parameter of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:363
void SetSpropMaxDonDiff(std::uint16_t diff)
Set the sprop-max-don-diff of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:442
std::uint16_t GetPaddingY() const override
Return the Y padding of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:345
void SetSizeY(std::uint32_t size) override
Set the Y size of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:401
std::uint32_t GetSizeY() const override
Return the Y size of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:333
std::uint16_t GetSpropMaxDonDiff() const
Return the sprop-max-don-diff of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:375
void SetPaddingX(std::uint16_t padding) override
Set the X padding of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:406
std::uint16_t GetSpropInterleavingDepth() const
Return the sprop-interleaving-depth of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:369
void SetSpropInitBufTime(std::uint32_t time)
Set the sprop-init-buf-time of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:454
std::uint8_t GetProfileIDC() const
Return the profile_idc of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:351
void SetSizeX(std::uint32_t size) override
Set the X size of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:396
void SetH264Flags(H264Flags flags)
Set the Flags of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:424
void SetProfileIDC(std::uint8_t profile)
Set the profile_idc of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:418
void SetSpropInterleavingDepth(std::uint16_t depth)
Set the sprop-interleaving-depth of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:436
void SetLevelIDC(std::uint8_t level)
Set the level_idc sequence parameter of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:430
std::uint32_t GetSizeX() const override
Return the X size of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:327
std::uint16_t GetPaddingX() const override
Return the X padding of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:339
void SetSpropDeintBufReq(std::uint32_t req)
Set the sprop-deint-buf-req of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:448
std::uint32_t GetSpropDeintBufReq() const
Return the sprop-deint-buf-req of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:382
void SetPaddingY(std::uint16_t padding) override
Set the Y padding of the GenDC 2D part.
Definition detail_gendc_descriptor.hpp:412
H264Flags GetH264Flags() const
Return the Flags of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:357
std::uint32_t GetSpropInitBufTime() const
Return the sprop-init-buf-time of the GenDC H.264 part.
Definition detail_gendc_descriptor.hpp:389
Class for a generic GenDC part descriptor.
Definition decl_gendc_descriptor.hpp:72
void SetDataOffset(std::size_t offset)
Set the Data offset of this GenDC part.
Definition detail_gendc_descriptor.hpp:175
std::uint32_t GetHeaderSize() const
Return the size of this GenDC part descriptor.
Definition detail_gendc_descriptor.hpp:134
void SetFlags(GenDcPartFlags flags)
Set the flags of this GenDC part.
Definition detail_gendc_descriptor.hpp:170
std::size_t GetDataOffset() const
Return the Data offset of this GenDC part.
Definition detail_gendc_descriptor.hpp:158
std::uint16_t GetFlowId() const
Return the Flow ID of this GenDC part.
Definition detail_gendc_descriptor.hpp:146
std::size_t GetOffset() const
Return the offset of this part descriptor in the GenDC descriptor.
Definition detail_gendc_descriptor.hpp:116
PfncFormat GetFormat() const
Return the data format of this GenDC part.
Definition detail_gendc_descriptor.hpp:140
GenDCPartType GetType() const
Return the type of this GenDC part descriptor.
Definition detail_gendc_descriptor.hpp:122
std::size_t GetDataSize() const
Return the Data size of this GenDC part.
Definition detail_gendc_descriptor.hpp:164
GenDcPartFlags GetFlags() const
Return the flags of this GenDC part.
Definition detail_gendc_descriptor.hpp:128
void SetDataSize(std::size_t size)
Set the Data size of this GenDC part.
Definition detail_gendc_descriptor.hpp:180
std::size_t GetFlowOffset() const
Return the Flow offset of this GenDC part.
Definition detail_gendc_descriptor.hpp:152
cvbbool_t ReleaseObject(OBJ &Object)
Namespace for driver or device related operations.
Definition decl_composite.hpp:27
ComponentId
Component type identifier,.
Definition driver.hpp:609
@ Undefined
Undefined component id.
Definition driver.hpp:636
GenDcDescriptorVariableField
Flags specifying which type of data information might vary during the Container reception.
Definition driver.hpp:652
H264Flags
Flags specifying the characteristics and format of the H.264 Part.
Definition driver.hpp:690
GenDCPartType
Part Type Header format identifier,.
Definition driver.hpp:581
GenDcDescriptorFlag
Flags specifying the characteristics and format of the Container.
Definition driver.hpp:641
variant< GenDcPart, GenDcPart1D, GenDcPart2D, GenDcPartMetadata, GenDcPartMetadataGenICamChunk, GenDcPartMetadataGenICamXML, GenDcPartH264 > GenDCPartVariant
Variant that can contain the different types of GenDC descriptor parts.
Definition decl_gendc_descriptor.hpp:536
GenDcPartFlags
Flags specifying the characteristics and format of the Part.
Definition driver.hpp:681
GenDcComponentFlags
Flags specifying the characteristics and format of the Component.
Definition driver.hpp:673
PfncFormat
GenICam Pixel Format Naming Convention (PFNC) format values.
Definition pfnc_format.hpp:34
Root namespace for the Image Manager interface.
Definition version.hpp:11
Configuration class for a GenDC component descriptor.
Definition decl_gendc_descriptor.hpp:48
std::vector< GenDcDescriptorPartConfig > Parts
Configurations of the GenDC parts in this GenDC component.
Definition decl_gendc_descriptor.hpp:54
ComponentId TypeId
Type ID of this GenDC component.
Definition decl_gendc_descriptor.hpp:50
PfncFormat Format
PFNC Format of this GenDC component.
Definition decl_gendc_descriptor.hpp:52
Configuration class for a GenDC descriptor.
Definition decl_gendc_descriptor.hpp:65
std::vector< GenDcDescriptorComponentConfig > Components
Configurations of the GenDC components in this GenDC descriptor.
Definition decl_gendc_descriptor.hpp:67
Configuration class for a GenDC part descriptor.
Definition decl_gendc_descriptor.hpp:23
GenDCPartType PartType
Type of this GenDC part.
Definition decl_gendc_descriptor.hpp:28
std::uint64_t DataSize
Data Size of this GenDC part.
Definition decl_gendc_descriptor.hpp:36
std::uint64_t FlowOffset
Flow Offset of this GenDC part.
Definition decl_gendc_descriptor.hpp:34
PfncFormat Format
PFNC Format of this GenDC part.
Definition decl_gendc_descriptor.hpp:30
std::uint16_t FlowId
Flow ID of this GenDC part.
Definition decl_gendc_descriptor.hpp:32
Class representing a Semantic Version in Major.Minor.SubMinor format.
Definition version.hpp:14