Enrollment 28.2.0
Loading...
Searching...
No Matches
InitializerConfig.h
Go to the documentation of this file.
1
6
7#pragma once
8
11#include "enrollment/Export.h"
12#include <cstddef>
13#include <cstdint>
14#include <memory>
15#include <string>
16#include <vector>
17namespace inno
18{
19 namespace impl
20 {
21 extern "C"
22 {
23 INNO_ENROLLMENT_API void inno_InitializerConfig_GetLicenseContent(void* impl,
24 uint8_t* (*allocator)(void*, size_t),
25 void* container,
26 ErrorCallbacks errorCallbacks);
27 INNO_ENROLLMENT_API void inno_InitializerConfig_GetModelsPath(void* impl,
28 char* (*allocator)(void*, size_t),
29 void* container,
30 ErrorCallbacks errorCallbacks);
31 INNO_ENROLLMENT_API int inno_InitializerConfig_GetFaceIrisOpencvThreads(void* impl,
32 ErrorCallbacks errorCallbacks);
33 INNO_ENROLLMENT_API int inno_InitializerConfig_GetFaceIrisOrtIntraThreads(void* impl,
34 ErrorCallbacks errorCallbacks);
35 INNO_ENROLLMENT_API int inno_InitializerConfig_GetFaceIrisOrtInterThreads(void* impl,
36 ErrorCallbacks errorCallbacks);
37 }
38 } // namespace impl
39
49 */
50 struct InitializerConfig
51 {
55 */
56 [[nodiscard]] std::vector<uint8_t> GetLicenseContent() const
57 {
58 std::vector<uint8_t> content;
59 impl::inno_InitializerConfig_GetLicenseContent(
60 impl.get(),
61 +[](void* container, size_t size) -> uint8_t*
62 {
63 auto* data = static_cast<std::vector<uint8_t>*>(container);
64 data->resize(size);
65 return data->data();
66 },
67 &content,
68 ThrowOnError{});
69 return content;
70 }
71
75 */
76 [[nodiscard]] std::string GetModelsPath() const
77 {
78 std::string content;
79 impl::inno_InitializerConfig_GetModelsPath(
80 impl.get(),
81 +[](void* container, size_t size) -> char*
82 {
83 auto* data = static_cast<std::string*>(container);
84 data->resize(size);
85 return data->data();
86 },
87 &content,
88 ThrowOnError{});
89 return content;
90 }
91
95 */
96 [[nodiscard]] int GetFaceIrisOpencvThreads() const
97 {
98 return impl::inno_InitializerConfig_GetFaceIrisOpencvThreads(impl.get(), ThrowOnError{});
99 }
100
104 */
105 [[nodiscard]] int GetFaceIrisOrtIntraThreads() const
106 {
107 return impl::inno_InitializerConfig_GetFaceIrisOrtIntraThreads(impl.get(), ThrowOnError{});
108 }
109
113 */
114 [[nodiscard]] int GetFaceIrisOrtInterThreads() const
115 {
116 return impl::inno_InitializerConfig_GetFaceIrisOrtInterThreads(impl.get(), ThrowOnError{});
117 }
118
119 InitializerConfig() = delete;
120 InitializerConfig(const InitializerConfig&) = delete;
121 InitializerConfig& operator=(const InitializerConfig&) = delete;
122 InitializerConfig(InitializerConfig&&) noexcept = default;
123 InitializerConfig& operator=(InitializerConfig&&) noexcept = default;
124 ~InitializerConfig() = default;
125
126 private:
127 friend class InitializerConfigBuilder;
128 friend void* GetInitializerConfigPimpl(const InitializerConfig& obj);
129
130 InitializerConfig(void* p, void (*deleter)(void*))
131 : impl(p, deleter)
132 {
133 }
134 std::unique_ptr<void, void (*)(void*)> impl;
135 };
136
137 inline void* GetInitializerConfigPimpl(const InitializerConfig& obj)
138 {
139 return obj.impl.get();
140 }
141
142 namespace impl
143 {
144 extern "C"
145 {
146 INNO_ENROLLMENT_API void inno_InitializerConfigBuilder_UseAllAvailableCores(void* impl,
147 ErrorCallbacks errorCallbacks);
148 INNO_ENROLLMENT_API void inno_InitializerConfigBuilder_UseSingleCore(void* impl,
149 ErrorCallbacks errorCallbacks);
150 INNO_ENROLLMENT_API void inno_InitializerConfigBuilder_SetLicenseContent(void* impl,
151 const uint8_t* data,
152 size_t size,
153 ErrorCallbacks errorCallbacks);
154 INNO_ENROLLMENT_API void inno_InitializerConfigBuilder_SetLicensePath(void* impl,
155 const char* data,
156 size_t size,
157 ErrorCallbacks errorCallbacks);
158 INNO_ENROLLMENT_API void inno_InitializerConfigBuilder_SetModelsPath(void* impl,
159 const char* data,
160 size_t size,
161 ErrorCallbacks errorCallbacks);
162 INNO_ENROLLMENT_API void inno_InitializerConfigBuilder_SetFaceIrisOpencvThreads(
163 void* impl,
164 int count,
165 ErrorCallbacks errorCallbacks);
166 INNO_ENROLLMENT_API void inno_InitializerConfigBuilder_SetFaceIrisOrtIntraThreads(
167 void* impl,
168 int count,
169 ErrorCallbacks errorCallbacks);
170 INNO_ENROLLMENT_API void inno_InitializerConfigBuilder_SetFaceIrisOrtInterThreads(
171 void* impl,
172 int count,
173 ErrorCallbacks errorCallbacks);
174 INNO_ENROLLMENT_API void* inno_InitializerConfigBuilder_Build(void* impl,
175 void (**deleter)(void*),
176 ErrorCallbacks errorCallbacks);
177 INNO_ENROLLMENT_API void* inno_InitializerConfigBuilder_Create(void (**deleter)(void*),
178 ErrorCallbacks errorCallbacks);
179 }
180 } // namespace impl
181
189 */
190 class InitializerConfigBuilder
191 {
192 public:
196 */
197 InitializerConfigBuilder& UseAllAvailableCores()
198 {
199 impl::inno_InitializerConfigBuilder_UseAllAvailableCores(impl.get(), ThrowOnError{});
200 return *this;
201 }
202
206 */
207 InitializerConfigBuilder& UseSingleCore()
208 {
209 impl::inno_InitializerConfigBuilder_UseSingleCore(impl.get(), ThrowOnError{});
210 return *this;
211 }
212
217 */
218 InitializerConfigBuilder& SetLicenseContent(std::vector<uint8_t> content)
219 {
220 impl::inno_InitializerConfigBuilder_SetLicenseContent(
221 impl.get(), content.data(), content.size(), ThrowOnError{});
222 return *this;
223 }
224
229 */
230 InitializerConfigBuilder& SetLicensePath(const std::string& path)
231 {
232 impl::inno_InitializerConfigBuilder_SetLicensePath(impl.get(), path.data(), path.size(), ThrowOnError{});
233 return *this;
234 }
235
240 */
241 InitializerConfigBuilder& SetModelsPath(std::string path)
242 {
243 impl::inno_InitializerConfigBuilder_SetModelsPath(impl.get(), path.data(), path.size(), ThrowOnError{});
244 return *this;
245 }
246
251 */
252 InitializerConfigBuilder& SetFaceIrisOpencvThreads(int count)
253 {
254 impl::inno_InitializerConfigBuilder_SetFaceIrisOpencvThreads(impl.get(), count, ThrowOnError{});
255 return *this;
256 }
257
262 */
263 InitializerConfigBuilder& SetFaceIrisOrtIntraThreads(int count)
264 {
265 impl::inno_InitializerConfigBuilder_SetFaceIrisOrtIntraThreads(impl.get(), count, ThrowOnError{});
266 return *this;
267 }
268
273 */
274 InitializerConfigBuilder& SetFaceIrisOrtInterThreads(int count)
275 {
276 impl::inno_InitializerConfigBuilder_SetFaceIrisOrtInterThreads(impl.get(), count, ThrowOnError{});
277 return *this;
278 }
279
288 */
289 [[nodiscard]] InitializerConfig Build()
290 {
291 void (*deleter)(void*) = nullptr;
292 auto* cfgImpl = impl::inno_InitializerConfigBuilder_Build(impl.get(), &deleter, ThrowOnError{});
293
294 return { cfgImpl, deleter };
295 }
296
298 : impl(Create())
299 {
300 }
301 InitializerConfigBuilder(const InitializerConfigBuilder&) = delete;
302 InitializerConfigBuilder& operator=(const InitializerConfigBuilder&) = delete;
303 InitializerConfigBuilder(InitializerConfigBuilder&&) noexcept = default;
304 InitializerConfigBuilder& operator=(InitializerConfigBuilder&&) noexcept = default;
305 ~InitializerConfigBuilder() = default;
306
307 private:
308 std::unique_ptr<void, void (*)(void*)> impl;
309
310 static std::unique_ptr<void, void (*)(void*)> Create()
311 {
312 void (*deleter)(void*) = nullptr;
313 auto* p = impl::inno_InitializerConfigBuilder_Create(&deleter, ThrowOnError{});
314 return { p, deleter };
315 }
316 };
317} // namespace inno
Fluent builder for InitializerConfig.
Definition InitializerConfig.h:190
InitializerConfigBuilder & SetFaceIrisOpencvThreads(int count)
Sets the OpenCV thread count for face and iris processing.
Definition InitializerConfig.h:251
InitializerConfigBuilder & SetModelsPath(std::string path)
Sets the IFace models directory path.
Definition InitializerConfig.h:240
InitializerConfigBuilder & SetLicensePath(const std::string &path)
Sets license content from given license file.
Definition InitializerConfig.h:229
InitializerConfigBuilder & UseAllAvailableCores()
Use all available CPU cores for each face/iris thread pool.
Definition InitializerConfig.h:196
InitializerConfigBuilder & SetFaceIrisOrtIntraThreads(int count)
Sets the ONNX Runtime intra-op thread count for face and iris processing.
Definition InitializerConfig.h:262
InitializerConfigBuilder & UseSingleCore()
Limit each face/iris thread pool to a single thread.
Definition InitializerConfig.h:206
InitializerConfigBuilder & SetLicenseContent(std::vector< uint8_t > content)
Sets embedded license bytes.
Definition InitializerConfig.h:217
InitializerConfig Build()
Builds and returns the configuration.
Definition InitializerConfig.h:288
InitializerConfigBuilder & SetFaceIrisOrtInterThreads(int count)
Sets the ONNX Runtime inter-op thread count for face and iris processing.
Definition InitializerConfig.h:273
SDK initialisation configuration for manual init.
Definition InitializerConfig.h:50
int GetFaceIrisOrtInterThreads() const
Returns the configured ONNX Runtime inter-op thread count for face and iris processing.
Definition InitializerConfig.h:113
int GetFaceIrisOrtIntraThreads() const
Returns the configured ONNX Runtime intra-op thread count for face and iris processing.
Definition InitializerConfig.h:104
int GetFaceIrisOpencvThreads() const
Returns the configured OpenCV thread count for face and iris processing.
Definition InitializerConfig.h:95
std::string GetModelsPath() const
Returns the IFace models directory path.
Definition InitializerConfig.h:75
std::vector< uint8_t > GetLicenseContent() const
Returns license content.
Definition InitializerConfig.h:55