Face Engine SDK  4.6.0
A face detection, recognition and tracking engine.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
fsdk::IDescriptorBatch Struct Referenceabstract

Descriptor batch interface. More...

#include <IDescriptor.h>

Inheritance diagram for fsdk::IDescriptorBatch:
fsdk::IDataStorageObject fsdk::ISerializableObject fsdk::IRefCounted

Public Types

enum  Error : uint32_t {
  Error::Ok, Error::InvalidInput, Error::BatchFull, Error::Incompatible,
  Error::Internal, Error::IoError, Error::OutOfRange
}
 Descriptor batch error enumeration. More...
 
- Public Types inherited from fsdk::ISerializableObject
enum  Error : uint32_t {
  Error::Ok, Error::Size, Error::Signature, Error::ArchiveRead,
  Error::InputArchive, Error::ArchiveWrite
}
 Serialization nerror codes. More...
 
enum  Flags { Default = 0, NoSignature = 1 }
 Serialization flags. More...
 

Public Member Functions

virtual Result< Erroradd (IDescriptor *descriptor) noexcept=0
 Add a descriptor to the batch. More...
 
virtual Result< Erroradd (IDescriptorBatch *batch, uint32_t offset=0) noexcept=0
 Add a descriptor batch content to the batch. Descriptors to copy from the source bath are selected based on offset parameter. More...
 
virtual Result< Erroradd (IDescriptorBatch *batch, uint32_t offset, uint32_t count) noexcept=0
 Add a descriptor batch content to the batch. Descriptors to copy from the source bath are selected based on count and offset parameters. More...
 
virtual Result< ErrorremoveFast (int index) noexcept=0
 Remove a descriptor from batch. More...
 
virtual Result< ErrorremoveSlow (int index) noexcept=0
 Remove a descriptor from batch. More...
 
virtual Result< MultiError
< ISerializableObject::Error,
Error > > 
loadAndAdd (IArchive *archive)=0
 Load a descriptor/descriptors from archive and add it to the batch. More...
 
virtual uint32_t getMaxCount () const noexcept=0
 Get maximum number of descriptors in this batch. More...
 
virtual uint32_t getCount () const noexcept=0
 Get actual number of descriptors in this batch. More...
 
virtual uint32_t getModelVersion () const noexcept=0
 Get algorithm model version the descriptors in this batch were created with. More...
 
virtual DesctiptorType getDescriptorType () const noexcept=0
 Get type of descriptor. More...
 
virtual uint32_t getDescriptorSize () const noexcept=0
 Get length of one descriptor. Specified by version of descriptors in batch. More...
 
virtual IDescriptorgetDescriptorSlow (uint32_t index) const noexcept=0
 Create descriptor from batch by index with copying. More...
 
virtual IDescriptorgetDescriptorFast (uint32_t index) noexcept=0
 Create descriptor from batch by index without copying. More...
 
- Public Member Functions inherited from fsdk::IDataStorageObject
virtual void clear () noexcept=0
 Clear object data. More...
 
virtual IRefCountedgetParentObject () const noexcept=0
 Get parent object (one that has created this). More...
 
- Public Member Functions inherited from fsdk::ISerializableObject
virtual void getSize (Sizer &sizer, uint32_t flags=Default) const noexcept=0
 Estimate size of this object binary data. More...
 
virtual Result< Errorload (IArchive *archive, uint32_t flags=Default)=0
 Load object from archive. More...
 
virtual Result< Errorsave (IArchive *archive, uint32_t flags=Default) const =0
 Save object to archive. More...
 
- Public Member Functions inherited from fsdk::IRefCounted
virtual int32_t retain () noexcept=0
 Increase strong reference count. More...
 
virtual int32_t release () noexcept=0
 Decrease strong reference count. More...
 
virtual int32_t getRefCount () const noexcept=0
 Get actual strong reference count. More...
 
virtual int32_t retainWeak () noexcept=0
 Increase weak reference count. More...
 
virtual int32_t releaseWeak () noexcept=0
 Decrease weak reference count. More...
 
virtual int32_t getWeakRefCount () const noexcept=0
 Get actual weak reference count. More...
 

Detailed Description

Descriptor batch interface.

Used for matching large continous sets of descriptors.

A batch is created with a reserved memory for descriptors that can not be later extended. Thus descriptors can be add()'ed until the memory reservation is exceeded.

Memory reservation size can be obtained via getMaxCount() function. The batch me be reset via clear() function. It does not deallocate memory reservation. Instead, it resets internal counter allowing to re-populate the batch via add() again.

Member Enumeration Documentation

enum fsdk::IDescriptorBatch::Error : uint32_t
strong

Descriptor batch error enumeration.

Used for descriptor batch related errors indication.

Enumerator
Ok 

No error.

InvalidInput 

Invalid input (Ex: null pointer while a valid objects is expected).

BatchFull 

Batch is full.

Incompatible 

Trying to add an incompatible descriptor.

Internal 

An internal processing error (Ex: memopry allocation or misalignment).

IoError 

Error while trying open/read/write file.

OutOfRange 

Error while accessing descriptor out of range.

Member Function Documentation

virtual Result<Error> fsdk::IDescriptorBatch::add ( IDescriptor descriptor)
pure virtualnoexcept

Add a descriptor to the batch.

Parameters
descriptordescriptor to add. Descriptor data is copied and to internal reference is held, thus it is safe to release the source descriptor object later.
Returns
One of the error codes specified by DescriptorBatchError.
virtual Result<Error> fsdk::IDescriptorBatch::add ( IDescriptorBatch batch,
uint32_t  offset = 0 
)
pure virtualnoexcept

Add a descriptor batch content to the batch. Descriptors to copy from the source bath are selected based on offset parameter.

Parameters
batchbatch to add content off. All descriptors from the input batch are copied to the buffer of the current batch. So it is safe to release the source descriptor batch object later.
offsetoffset of descriptors to copy.
Returns
One of the error codes specified by DescriptorBatchError.
Note
Current batch should have enough free space to place all descriptors from the input batch.
All selected descriptors from the source batch will be placed right after all descriptors in the current batch.
All selected descriptors from the input batch are copied to the buffer of the current batch. So it is safe to release the source descriptor batch object later.
virtual Result<Error> fsdk::IDescriptorBatch::add ( IDescriptorBatch batch,
uint32_t  offset,
uint32_t  count 
)
pure virtualnoexcept

Add a descriptor batch content to the batch. Descriptors to copy from the source bath are selected based on count and offset parameters.

Parameters
batchbatch to add content from.
offsetoffset of descriptors to copy.
countcount of descriptors to copy.
Returns
One of the error codes specified by DescriptorBatchError.
Note
Current batch should have enough free space to place all descriptors from the input batch.
All selected descriptors from the source batch will be placed right after all descriptors in the current batch.
All selected descriptors from the input batch are copied to the buffer of the current batch. So it is safe to release the source descriptor batch object later.
virtual uint32_t fsdk::IDescriptorBatch::getCount ( ) const
pure virtualnoexcept

Get actual number of descriptors in this batch.

Returns
actual number of descriptors in this batch.
virtual IDescriptor* fsdk::IDescriptorBatch::getDescriptorFast ( uint32_t  index)
pure virtualnoexcept

Create descriptor from batch by index without copying.

Parameters
indexindex required descriptor in batch
Returns
IDescriptor instance pointer if succeeded, nullptr otherwise
Note
If you change achived descriptor - corresponded descriptor in batch will be changed
virtual uint32_t fsdk::IDescriptorBatch::getDescriptorSize ( ) const
pure virtualnoexcept

Get length of one descriptor. Specified by version of descriptors in batch.

Returns
Length of one descriptor in batch.
virtual IDescriptor* fsdk::IDescriptorBatch::getDescriptorSlow ( uint32_t  index) const
pure virtualnoexcept

Create descriptor from batch by index with copying.

Parameters
indexindex required descriptor in batch
Returns
IDescriptor instance pointer if succeeded, nullptr otherwise
virtual DesctiptorType fsdk::IDescriptorBatch::getDescriptorType ( ) const
pure virtualnoexcept

Get type of descriptor.

Note
This function only makes sense when there is at least one descriptor in the batch.
Returns
type as enum
See Also
DesctiptorType.
virtual uint32_t fsdk::IDescriptorBatch::getMaxCount ( ) const
pure virtualnoexcept

Get maximum number of descriptors in this batch.

Returns
maximum number of descriptors in this batch.
virtual uint32_t fsdk::IDescriptorBatch::getModelVersion ( ) const
pure virtualnoexcept

Get algorithm model version the descriptors in this batch were created with.

Note
This function only makes sense when there is at least one descriptor in the batch. It will return 0 if the batch is empty.
Returns
Version as integral number.
virtual Result<MultiError<ISerializableObject::Error,Error> > fsdk::IDescriptorBatch::loadAndAdd ( IArchive archive)
pure virtual

Load a descriptor/descriptors from archive and add it to the batch.

Note
This method supports both serialized IDescriptorBatch and IDescriptor.
Parameters
archivearchive to read from.
Returns
MultiError result with codes specified by DescriptorBatchError and SerializationError.
Note
This method pass exceptions from user defined IArchive, but doesnt throw its own
See Also
MultiError.
virtual Result<Error> fsdk::IDescriptorBatch::removeFast ( int  index)
pure virtualnoexcept

Remove a descriptor from batch.

Remove descriptor by swapping it with the last descriptor in batch. This breaks descriptor order.

Parameters
indexdescriptor index.
Returns
One of the error codes specified by DescriptorBatchError.
virtual Result<Error> fsdk::IDescriptorBatch::removeSlow ( int  index)
pure virtualnoexcept

Remove a descriptor from batch.

Remove descriptor by shifting all the following descriptors back. This preserves descriptor order.

Parameters
indexdescriptor index.
Returns
One of the error codes specified by DescriptorBatchError.

The documentation for this struct was generated from the following file: