13#include "enrollment/Export.h"
30 struct INNO_ENROLLMENT_API inno_ICSExtractor_params
36 unsigned int extractOptionsMask;
37 unsigned char* skeletonImage;
38 unsigned char* binarizedImage;
39 unsigned char* filteredImage;
43 int palmQualityLowerBound;
44 int palmQualityUpperBound;
47 struct INNO_ENROLLMENT_API inno_ICSVerifyMatcher_params
49 const uint8_t* probeData;
51 const uint8_t* galleryData;
58 unsigned char* dAngle;
59 int* associationCount;
60 uint16_t* assocProbeMinutiae;
61 uint16_t* assocGalleryMinutiae;
62 unsigned char* assocQuality;
65 struct INNO_ENROLLMENT_API inno_PrintDetector_result
67 static const unsigned int MaxRectangles = 4;
68 int topLeftX[MaxRectangles];
69 int topLeftY[MaxRectangles];
70 int topRightX[MaxRectangles];
71 int topRightY[MaxRectangles];
72 int bottomLeftX[MaxRectangles];
73 int bottomLeftY[MaxRectangles];
74 int bottomRightX[MaxRectangles];
75 int bottomRightY[MaxRectangles];
76 int angle[MaxRectangles];
77 int positions[MaxRectangles];
81 struct INNO_ENROLLMENT_API inno_Minutia_out
86 unsigned char quality;
90 struct INNO_ENROLLMENT_API inno_CriticalPoint_out
98 using inno_AllocateData = uint8_t* (*)(
void*,
size_t);
99 using inno_Deleter = void (*)(
void*);
100 using inno_AllocateCriticalPoints = inno_CriticalPoint_out* (*)(
void*,
size_t);
106 static constexpr size_t MaxErrorMessage = 200;
108 virtual void Extract(inno_ICSExtractor_params* params,
109 LoggerCallBacks logCallbacks,
110 uint8_t** outTemplate,
111 unsigned int* outTemplateSize,
112 ErrorCallbacks errorCallbacks) = 0;
113 virtual void FreeTemplate(
const uint8_t* data,
unsigned int size) = 0;
114 virtual void GetICSTemplateVersion(
const uint8_t* data,
116 unsigned int* majorVersion,
117 unsigned int* minorVersion,
118 ErrorCallbacks errorCallbacks) = 0;
119 virtual void GetICSTemplateQuality(
const uint8_t* data,
122 ErrorCallbacks errorCallbacks) = 0;
123 virtual void GetICSTemplatePosition(
int* position,
126 ErrorCallbacks errorCallbacks)
const = 0;
127 virtual void SetICSTemplatePosition(
int position,
130 ErrorCallbacks errorCallbacks) = 0;
132 virtual void ConvertICSToISO(
const uint8_t* data,
134 unsigned int captureEquipmentID,
139 unsigned int fingerPosition,
140 unsigned int impressionType,
141 uint8_t* isoTemplate,
142 size_t* isoTemplateLength,
143 ErrorCallbacks errorCallbacks) = 0;
144 virtual void ConvertICSToANSI(
const uint8_t* data,
146 unsigned int captureEquipmentID,
151 unsigned int fingerPosition,
152 unsigned int impressionType,
153 uint8_t* ansiTemplate,
154 size_t* ansiTemplateLength,
155 ErrorCallbacks errorCallbacks) = 0;
156 virtual size_t GetMaxISOTemplateSize() = 0;
157 virtual size_t GetMaxANSITemplateSize() = 0;
158 virtual void MatchICS(inno_ICSVerifyMatcher_params* params,
159 LoggerCallBacks logCallbacks,
160 ErrorCallbacks errorCallbacks) = 0;
161 virtual float MatchEmbedding(
void* module,
162 const uint8_t* probeTemplate,
163 unsigned int probeTemplateSize,
164 const uint8_t* galleryTemplate,
165 unsigned int galleryTemplateSize,
166 LoggerCallBacks logCallbacks,
167 ErrorCallbacks errorCallbacks) = 0;
169 virtual void CalculatePresence(
unsigned int width,
171 unsigned int imageResolution,
172 const uint8_t* rawImage,
174 ErrorCallbacks errorCallbacks) = 0;
175 virtual void CalculateNFIQ1(
unsigned int width,
177 unsigned int imageResolution,
178 const uint8_t* rawImage,
180 ErrorCallbacks errorCallbacks) = 0;
181 virtual void CalculateNFIQ2(
unsigned int width,
183 unsigned int imageResolution,
184 const uint8_t* rawImage,
186 ErrorCallbacks errorCallbacks) = 0;
187 virtual void CalculateImageQuality(
unsigned int width,
189 unsigned int imageResolution,
190 const uint8_t* rawImage,
191 uint8_t* imageQuality,
192 ErrorCallbacks errorCallbacks) = 0;
193 virtual void CalculatePlacement(
unsigned int width,
195 unsigned int imageResolution,
196 const uint8_t* rawImage,
198 ErrorCallbacks errorCallbacks) = 0;
199 virtual void GetImageIntensity(
unsigned int width,
201 const uint8_t* rawImage,
203 ErrorCallbacks errorCallbacks) = 0;
204 virtual inno_PrintDetector_result AlgoSegment(
unsigned int height,
206 unsigned int resolution,
208 unsigned int maxRotation,
211 ErrorCallbacks errorCallbacks) = 0;
212 virtual inno_PrintDetector_result NeuralSegment(
unsigned int height,
214 unsigned int resolution,
216 unsigned int maxRotation,
217 unsigned int confidenceThreshold,
219 ErrorCallbacks errorCallbacks) = 0;
220 virtual void GetMinutiae(
const std::shared_ptr<Logger>& logger,
222 unsigned int tmplSize,
223 inno_Minutia_out** minutiae,
224 size_t* minutiaeCount,
225 ErrorCallbacks errorCallbacks) = 0;
226 virtual void FreeMinutiae(inno_Minutia_out* minutiae) = 0;
227 virtual void GetCriticalPoints(
const std::shared_ptr<Logger>& logger,
229 unsigned int tmplSize,
230 inno_CriticalPoint_out** points,
231 size_t* minutiaeCount,
232 inno_AllocateCriticalPoints allocator,
234 ErrorCallbacks errorCallbacks) = 0;
235 virtual void* IFingerCreateIdentificationModule(inno_Deleter* deleter, ErrorCallbacks errorCallbacks) = 0;
236 virtual void* IFingerCreateMatchingModule(inno_Deleter* deleter, ErrorCallbacks errorCallbacks) = 0;
237 virtual void IFingerCreateEmbedding(
void* module,
238 const uint8_t* imageData,
239 inno::RawImage::Type imageType,
243 inno_AllocateData allocator,
245 ErrorCallbacks errorCallbacks)
const = 0;
247 virtual void IFingerGetTemplateVersion(uint32_t* ifingerVersion,
248 uint32_t* enrollmentVersion,
250 unsigned int tmplSize,
251 ErrorCallbacks errorCallbacks)
const = 0;
253 static constexpr uint8_t INNO_ANSI_TEMPLATE = 0;
254 static constexpr uint8_t INNO_ISO_TEMPLATE = 1;
255 static constexpr uint8_t INNO_ILO_SID_TEMPLATE = 2;
256 static constexpr uint8_t INNO_ISO_CC_TEMPLATE = 3;
257 static constexpr uint8_t INNO_ISO_TEMPLATE_V30 = 4;
258 static constexpr uint8_t INNO_ISO_NC_TEMPLATE = 5;
259 static constexpr uint8_t INNO_TT_UNKNOWN_TYPE = 6;
261 virtual void ConvertTemplates(uint8_t inputTemplateType,
262 const uint8_t* inputTemplate,
263 size_t inputTemplateSize,
264 uint8_t outputTemplateType,
265 inno_AllocateData allocator,
267 ErrorCallbacks errorCallbacks)
const = 0;
269 virtual void ConvertIsoToIsoCCTemplate(
const uint8_t* inputTemplate,
270 size_t inputTemplateSize,
271 uint32_t maxMinutiae,
273 uint8_t secondarySort,
274 inno_AllocateData allocator,
276 ErrorCallbacks errorCallbacks)
const = 0;
278 PrintExecutor() =
default;
279 virtual ~PrintExecutor() =
default;
280 PrintExecutor(
const PrintExecutor&) =
delete;
281 PrintExecutor(PrintExecutor&&) =
delete;
282 PrintExecutor& operator=(
const PrintExecutor&) =
delete;
283 PrintExecutor& operator=(PrintExecutor&&) =
delete;
288 INNO_ENROLLMENT_API
void inno_local_ICSTemplate_free(
const uint8_t* data,
unsigned int size);
289 INNO_ENROLLMENT_API
void inno_local_ICSExtractor_CreateFor(inno_ICSExtractor_params* params,
290 LoggerCallBacks logCallbacks,
291 uint8_t** outTemplate,
292 unsigned int* outTemplateSize,
293 ErrorCallbacks errorCallbacks);
294 INNO_ENROLLMENT_API
void inno_local_ICSTemplate_GetVersion(
const uint8_t* data,
296 unsigned int* majorVersion,
297 unsigned int* minorVersion,
298 ErrorCallbacks errorCallbacks);
299 INNO_ENROLLMENT_API
void inno_local_ICSTemplate_GetQuality(
const uint8_t* data,
302 ErrorCallbacks errorCallbacks);
303 INNO_ENROLLMENT_API
void inno_local_ICSTemplate_GetPosition(
int* position,
306 ErrorCallbacks errorCallbacks);
307 INNO_ENROLLMENT_API
void inno_local_ICSTemplate_SetPosition(
int position,
310 ErrorCallbacks errorCallbacks);
311 INNO_ENROLLMENT_API
void inno_local_ICSTemplate_ConvertToISO(
const uint8_t* data,
313 unsigned int captureEquipmentID,
318 unsigned int fingerPosition,
319 unsigned int impressionType,
320 uint8_t* isoTemplate,
321 size_t* isoTemplateLength,
322 ErrorCallbacks errorCallbacks);
323 INNO_ENROLLMENT_API
void inno_local_ICSTemplate_ConvertToANSI(
const uint8_t* data,
325 unsigned int captureEquipmentID,
330 unsigned int fingerPosition,
331 unsigned int impressionType,
332 uint8_t* ansiTemplate,
333 size_t* ansiTemplateLength,
334 ErrorCallbacks errorCallbacks);
335 INNO_ENROLLMENT_API
size_t inno_local_ICSTemplate_GetMaxISOTemplateSize();
336 INNO_ENROLLMENT_API
size_t inno_local_ICSTemplate_GetMaxANSITemplateSize();
337 INNO_ENROLLMENT_API
void inno_local_ICSVerifyMatcher_match(inno_ICSVerifyMatcher_params* params,
338 LoggerCallBacks logCallbacks,
339 ErrorCallbacks errorCallbacks);
340 INNO_ENROLLMENT_API
float inno_local_EmbeddingVerifyMatcher_match(
void* module,
341 const uint8_t* probeTemplate,
342 unsigned int probeTemplateSize,
343 const uint8_t* galleryTemplate,
344 unsigned int galleryTemplateSize,
345 LoggerCallBacks logCallbacks,
346 ErrorCallbacks errorCallbacks);
347 INNO_ENROLLMENT_API
void inno_local_CalculatePresence(
unsigned int width,
349 unsigned int imageResolution,
350 const uint8_t* rawImage,
352 ErrorCallbacks errorCallbacks);
353 INNO_ENROLLMENT_API
void inno_local_CalculateNFIQ1(
unsigned int width,
355 unsigned int imageResolution,
356 const uint8_t* rawImage,
358 ErrorCallbacks errorCallbacks);
359 INNO_ENROLLMENT_API
void inno_local_CalculateNFIQ2(
unsigned int width,
361 unsigned int imageResolution,
362 const uint8_t* rawImage,
364 ErrorCallbacks errorCallbacks);
365 INNO_ENROLLMENT_API
void inno_local_CalculateImageQuality(
unsigned int width,
367 unsigned int imageResolution,
368 const uint8_t* rawImage,
369 uint8_t* imageQuality,
370 ErrorCallbacks errorCallbacks);
371 INNO_ENROLLMENT_API
void inno_local_CalculatePlacement(
unsigned int width,
373 unsigned int imageResolution,
374 const uint8_t* rawImage,
376 ErrorCallbacks errorCallbacks);
377 INNO_ENROLLMENT_API
void inno_local_GetImageIntensity(
unsigned int width,
379 const uint8_t* rawImage,
381 ErrorCallbacks errorCallbacks);
382 INNO_ENROLLMENT_API inno_PrintDetector_result
383 inno_local_PrintDetector_Algo_Segment(
unsigned int height,
385 unsigned int resolution,
387 unsigned int maxRotation,
390 ErrorCallbacks errorCallbacks);
391 INNO_ENROLLMENT_API inno_PrintDetector_result
392 inno_local_PrintDetector_Neural_Segment(
unsigned int height,
394 unsigned int resolution,
396 unsigned int maxRotation,
397 unsigned int confidenceThreshold,
399 ErrorCallbacks errorCallbacks);
401 INNO_ENROLLMENT_API
void inno_local_GetMinutiae(LoggerCallBacks logCallbacks,
403 unsigned int tmplSize,
404 inno_Minutia_out** minutiae,
405 size_t* minutiaeCount,
406 ErrorCallbacks errorCallbacks);
407 INNO_ENROLLMENT_API
void inno_local_FreeMinutiae(inno_Minutia_out* minutiae);
409 INNO_ENROLLMENT_API
void inno_local_GetCriticalPoints(LoggerCallBacks logCallbacks,
411 unsigned int tmplSize,
412 inno_CriticalPoint_out** points,
413 size_t* minutiaeCount,
414 inno_AllocateCriticalPoints allocator,
416 ErrorCallbacks errorCallbacks);
417 INNO_ENROLLMENT_API
void* inno_local_IFingerCreateIdentificationModule(inno_Deleter* deleter,
418 ErrorCallbacks errorCallbacks);
419 INNO_ENROLLMENT_API
void* inno_local_IFingerCreateMatchingModule(inno_Deleter* deleter,
420 ErrorCallbacks errorCallbacks);
422 INNO_ENROLLMENT_API
void inno_local_IFingerCreateEmbedding(
void* module,
423 const uint8_t* imageData,
424 inno::RawImage::Type imageType,
428 inno_AllocateData allocator,
430 ErrorCallbacks errorCallbacks);
432 INNO_ENROLLMENT_API
void inno_local_IFingerGetTemplateVersion(uint32_t* ifingerVersion,
433 uint32_t* enrollmentVersion,
435 unsigned int tmplSize,
436 ErrorCallbacks errorCallbacks);
437 INNO_ENROLLMENT_API
void inno_local_ConvertTemplates(uint8_t inputTemplateType,
438 const uint8_t* inputTemplate,
439 uint8_t outputTemplateType,
440 inno_AllocateData allocator,
442 ErrorCallbacks errorCallbacks);
443 INNO_ENROLLMENT_API
void inno_local_ConvertIsoToIsoCCTemplate(
const uint8_t* inputTemplate,
444 uint32_t maxMinutiae,
446 uint8_t secondarySort,
447 inno_AllocateData allocator,
449 ErrorCallbacks errorCallbacks);
452 class LocalPrintExecutor :
public PrintExecutor
455 void Extract(inno_ICSExtractor_params* params,
456 LoggerCallBacks logCallbacks,
457 uint8_t** outTemplate,
458 unsigned int* outTemplateSize,
459 ErrorCallbacks errorCallbacks)
final
461 inno_local_ICSExtractor_CreateFor(params, logCallbacks, outTemplate, outTemplateSize, errorCallbacks);
463 void FreeTemplate(
const uint8_t* data,
unsigned int size)
final
465 inno_local_ICSTemplate_free(data, size);
468 void GetICSTemplateVersion(
const uint8_t* data,
470 unsigned int* majorVersion,
471 unsigned int* minorVersion,
472 ErrorCallbacks errorCallbacks)
final
474 inno_local_ICSTemplate_GetVersion(data, size, majorVersion, minorVersion, errorCallbacks);
477 void GetICSTemplateQuality(
const uint8_t* data,
480 ErrorCallbacks errorCallbacks)
final
482 inno_local_ICSTemplate_GetQuality(data, size, quality, errorCallbacks);
485 void GetICSTemplatePosition(
int* position,
488 ErrorCallbacks errorCallbacks)
const final
490 inno_local_ICSTemplate_GetPosition(position, data, size, errorCallbacks);
493 void SetICSTemplatePosition(
int position, uint8_t* data, uint32_t size, ErrorCallbacks errorCallbacks)
final
495 inno_local_ICSTemplate_SetPosition(position, data, size, errorCallbacks);
498 void GetMinutiae(
const std::shared_ptr<Logger>& logger,
500 unsigned int tmplSize,
501 inno_Minutia_out** minutiae,
502 size_t* minutiaeCount,
503 ErrorCallbacks errorCallbacks)
final
505 const CallbackLogger slog(logger);
506 inno_local_GetMinutiae(slog.GetCallbacks(), tmpl, tmplSize, minutiae, minutiaeCount, errorCallbacks);
509 void FreeMinutiae(inno_Minutia_out* minutiae)
final
511 inno_local_FreeMinutiae(minutiae);
514 void GetCriticalPoints(
const std::shared_ptr<Logger>& logger,
516 unsigned int tmplSize,
517 inno_CriticalPoint_out** points,
518 size_t* minutiaeCount,
519 inno_AllocateCriticalPoints allocator,
521 ErrorCallbacks errorCallbacks)
final
523 const CallbackLogger slog(logger);
524 inno_local_GetCriticalPoints(
525 slog.GetCallbacks(), tmpl, tmplSize, points, minutiaeCount, allocator, container, errorCallbacks);
528 void ConvertICSToISO(
const uint8_t* data,
530 unsigned int captureEquipmentID,
535 unsigned int fingerPosition,
536 unsigned int impressionType,
537 uint8_t* isoTemplate,
538 size_t* isoTemplateLength,
539 ErrorCallbacks errorCallbacks)
final
541 inno_local_ICSTemplate_ConvertToISO(data,
554 void ConvertICSToANSI(
const uint8_t* data,
556 unsigned int captureEquipmentID,
561 unsigned int fingerPosition,
562 unsigned int impressionType,
563 uint8_t* ansiTemplate,
564 size_t* ansiTemplateLength,
565 ErrorCallbacks errorCallbacks)
final
567 inno_local_ICSTemplate_ConvertToANSI(data,
580 size_t GetMaxISOTemplateSize() final
582 return inno_local_ICSTemplate_GetMaxISOTemplateSize();
584 size_t GetMaxANSITemplateSize() final
586 return inno_local_ICSTemplate_GetMaxANSITemplateSize();
588 void MatchICS(inno_ICSVerifyMatcher_params* params,
589 LoggerCallBacks logCallbacks,
590 ErrorCallbacks errorCallbacks)
final
592 inno_local_ICSVerifyMatcher_match(params, logCallbacks, errorCallbacks);
594 float MatchEmbedding(
void* module,
595 const uint8_t* probeTemplate,
596 unsigned int probeTemplateSize,
597 const uint8_t* galleryTemplate,
598 unsigned int galleryTemplateSize,
599 LoggerCallBacks logCallbacks,
600 ErrorCallbacks errorCallbacks)
final
602 return inno_local_EmbeddingVerifyMatcher_match(module,
610 void CalculatePresence(
unsigned int width,
612 unsigned int imageResolution,
613 const uint8_t* rawImage,
615 ErrorCallbacks errorCallbacks)
final
617 inno_local_CalculatePresence(width, height, imageResolution, rawImage, presence, errorCallbacks);
619 void CalculateNFIQ1(
unsigned int width,
621 unsigned int imageResolution,
622 const uint8_t* rawImage,
624 ErrorCallbacks errorCallbacks)
final
626 inno_local_CalculateNFIQ1(width, height, imageResolution, rawImage, NFIQ1, errorCallbacks);
628 void CalculateNFIQ2(
unsigned int width,
630 unsigned int imageResolution,
631 const uint8_t* rawImage,
633 ErrorCallbacks errorCallbacks)
final
635 inno_local_CalculateNFIQ2(width, height, imageResolution, rawImage, NFIQ2, errorCallbacks);
637 void CalculateImageQuality(
unsigned int width,
639 unsigned int imageResolution,
640 const uint8_t* rawImage,
641 uint8_t* imageQuality,
642 ErrorCallbacks errorCallbacks)
final
644 inno_local_CalculateImageQuality(width, height, imageResolution, rawImage, imageQuality, errorCallbacks);
646 void CalculatePlacement(
unsigned int width,
648 unsigned int imageResolution,
649 const uint8_t* rawImage,
651 ErrorCallbacks errorCallbacks)
final
653 inno_local_CalculatePlacement(width, height, imageResolution, rawImage, placement, errorCallbacks);
655 void GetImageIntensity(
unsigned int width,
657 const uint8_t* rawImage,
659 ErrorCallbacks errorCallbacks)
final
661 inno_local_GetImageIntensity(width, height, rawImage, intensity, errorCallbacks);
663 inno_PrintDetector_result AlgoSegment(
unsigned int height,
665 unsigned int resolution,
667 unsigned int maxRotation,
670 ErrorCallbacks errorCallbacks)
final
672 return inno_local_PrintDetector_Algo_Segment(
673 height, width, resolution, data, maxRotation, reduceNoise, isNarrowFinger, errorCallbacks);
675 inno_PrintDetector_result NeuralSegment(
unsigned int height,
677 unsigned int resolution,
679 unsigned int maxRotation,
680 unsigned int confidenceThreshold,
682 ErrorCallbacks errorCallbacks)
final
684 return inno_local_PrintDetector_Neural_Segment(
685 height, width, resolution, data, maxRotation, confidenceThreshold, isNarrowFinger, errorCallbacks);
688 void* IFingerCreateIdentificationModule(inno_Deleter* deleter, ErrorCallbacks errorCallbacks)
override
690 return inno_local_IFingerCreateIdentificationModule(deleter, errorCallbacks);
693 void* IFingerCreateMatchingModule(inno_Deleter* deleter, ErrorCallbacks errorCallbacks)
override
695 return inno_local_IFingerCreateMatchingModule(deleter, errorCallbacks);
698 void IFingerCreateEmbedding(
void* module,
699 const uint8_t* imageData,
700 inno::RawImage::Type imageType,
704 inno_AllocateData allocator,
706 ErrorCallbacks errorCallbacks)
const override
708 inno_local_IFingerCreateEmbedding(
709 module, imageData, imageType, width, height, dpi, allocator, container, errorCallbacks);
712 void IFingerGetTemplateVersion(uint32_t* ifingerVersion,
713 uint32_t* enrollmentVersion,
715 unsigned int tmplSize,
716 ErrorCallbacks errorCallbacks)
const override
718 inno_local_IFingerGetTemplateVersion(ifingerVersion, enrollmentVersion, tmpl, tmplSize, errorCallbacks);
721 void ConvertTemplates(uint8_t inputTemplateType,
722 const uint8_t* inputTemplate,
724 uint8_t outputTemplateType,
725 inno_AllocateData allocator,
727 ErrorCallbacks errorCallbacks)
const final
729 inno_local_ConvertTemplates(
730 inputTemplateType, inputTemplate, outputTemplateType, allocator, container, errorCallbacks);
733 void ConvertIsoToIsoCCTemplate(
const uint8_t* inputTemplate,
735 uint32_t maxMinutiae,
737 uint8_t secondarySort,
738 inno_AllocateData allocator,
740 ErrorCallbacks errorCallbacks)
const final
742 inno_local_ConvertIsoToIsoCCTemplate(
743 inputTemplate, maxMinutiae, primarySort, secondarySort, allocator, container, errorCallbacks);
746 LocalPrintExecutor() =
default;
747 virtual ~LocalPrintExecutor() =
default;
748 LocalPrintExecutor(
const LocalPrintExecutor&) =
delete;
749 LocalPrintExecutor(LocalPrintExecutor&&) =
delete;
750 LocalPrintExecutor& operator=(
const LocalPrintExecutor&) =
delete;
751 LocalPrintExecutor& operator=(LocalPrintExecutor&&) =
delete;
756 INNO_ENROLLMENT_API
void* inno_grpc_print_Create(
const char* endpoint);
757 INNO_ENROLLMENT_API
void inno_grpc_print_Delete(
void* grpc);
758 INNO_ENROLLMENT_API
void inno_grpc_ICSTemplate_free(
const uint8_t* data,
unsigned int size);
759 INNO_ENROLLMENT_API
void inno_grpc_ICSExtractor_CreateFor(
void* grpc,
760 inno_ICSExtractor_params* params,
761 LoggerCallBacks logCallbacks,
762 uint8_t** outTemplate,
763 unsigned int* outTemplateSize,
764 ErrorCallbacks errorCallbacks);
765 INNO_ENROLLMENT_API
void inno_grpc_ICSTemplate_GetVersion(
void* grpc,
768 unsigned int* majorVersion,
769 unsigned int* minorVersion,
770 ErrorCallbacks errorCallbacks);
771 INNO_ENROLLMENT_API
void inno_grpc_ICSTemplate_GetQuality(
void* grpc,
775 ErrorCallbacks errorCallbacks);
776 INNO_ENROLLMENT_API
void inno_grpc_ICSTemplate_GetPosition(
void* grpc,
780 ErrorCallbacks errorCallbacks);
781 INNO_ENROLLMENT_API
void inno_grpc_ICSTemplate_ConvertToISO(
void* grpc,
784 unsigned int captureEquipmentID,
789 unsigned int fingerPosition,
790 unsigned int impressionType,
791 uint8_t* isoTemplate,
792 size_t* isoTemplateLength,
793 ErrorCallbacks errorCallbacks);
794 INNO_ENROLLMENT_API
void inno_grpc_ICSTemplate_ConvertToANSI(
void* grpc,
797 unsigned int captureEquipmentID,
802 unsigned int fingerPosition,
803 unsigned int impressionType,
804 uint8_t* ansiTemplate,
805 size_t* ansiTemplateLength,
806 ErrorCallbacks errorCallbacks);
807 INNO_ENROLLMENT_API
size_t inno_grpc_ICSTemplate_GetMaxISOTemplateSize();
808 INNO_ENROLLMENT_API
size_t inno_grpc_ICSTemplate_GetMaxANSITemplateSize();
809 INNO_ENROLLMENT_API
void inno_grpc_ICSVerifyMatcher_match(
void* grpc,
810 inno_ICSVerifyMatcher_params* params,
811 LoggerCallBacks logCallbacks,
812 ErrorCallbacks errorCallbacks);
813 INNO_ENROLLMENT_API
float inno_grpc_EmbeddingVerifyMatcher_match(
void* grpc,
815 const uint8_t* probeTemplate,
816 unsigned int probeTemplateSize,
817 const uint8_t* galleryTemplate,
818 unsigned int galleryTemplateSize,
819 LoggerCallBacks logCallbacks,
820 ErrorCallbacks errorCallbacks);
822 INNO_ENROLLMENT_API
void inno_grpc_CalculatePresence(
void* grpc,
825 unsigned int imageResolution,
826 const uint8_t* rawImage,
828 ErrorCallbacks errorCallbacks);
829 INNO_ENROLLMENT_API
void inno_grpc_CalculateNFIQ1(
void* grpc,
832 unsigned int imageResolution,
833 const uint8_t* rawImage,
835 ErrorCallbacks errorCallbacks);
836 INNO_ENROLLMENT_API
void inno_grpc_CalculateNFIQ2(
void* grpc,
839 unsigned int imageResolution,
840 const uint8_t* rawImage,
842 ErrorCallbacks errorCallbacks);
843 INNO_ENROLLMENT_API
void inno_grpc_CalculateImageQuality(
void* grpc,
846 unsigned int imageResolution,
847 const uint8_t* rawImage,
848 uint8_t* imageQuality,
849 ErrorCallbacks errorCallbacks);
850 INNO_ENROLLMENT_API
void inno_grpc_CalculatePlacement(
void* grpc,
853 unsigned int imageResolution,
854 const uint8_t* rawImage,
856 ErrorCallbacks errorCallbacks);
857 INNO_ENROLLMENT_API
void inno_grpc_GetImageIntensity(
void* grpc,
860 const uint8_t* rawImage,
862 ErrorCallbacks errorCallbacks);
863 INNO_ENROLLMENT_API inno_PrintDetector_result
864 inno_grpc_PrintDetector_Algo_Segment(
void* grpc,
867 unsigned int resolution,
869 unsigned int maxRotation,
872 ErrorCallbacks errorCallbacks);
873 INNO_ENROLLMENT_API inno_PrintDetector_result
874 inno_grpc_PrintDetector_Neural_Segment(
void* grpc,
877 unsigned int resolution,
879 unsigned int maxRotation,
880 unsigned int confidenceThreshold,
882 ErrorCallbacks errorCallbacks);
884 INNO_ENROLLMENT_API
void inno_grpc_GetMinutiae(
void* grpc,
885 LoggerCallBacks logCallbacks,
887 unsigned int tmplSize,
888 inno_Minutia_out** minutiae,
889 size_t* minutiaeCount,
890 ErrorCallbacks errorCallbacks);
891 INNO_ENROLLMENT_API
void inno_grpc_FreeMinutiae(inno_Minutia_out* minutiae);
892 INNO_ENROLLMENT_API
int inno_grpc_GetCriticalPoints(
void* grpc,
893 LoggerCallBacks logCallbacks,
895 unsigned int tmplSize,
896 inno_CriticalPoint_out** points,
897 size_t* minutiaeCount,
898 inno_AllocateCriticalPoints allocator,
900 ErrorCallbacks errorCallbacks);
901 INNO_ENROLLMENT_API
void* inno_grpc_IFingerCreateIdentificationModule(
void* grpc,
902 inno_Deleter* deleter,
903 ErrorCallbacks errorCallbacks);
904 INNO_ENROLLMENT_API
void* inno_grpc_IFingerCreateMatchingModule(
void* grpc,
905 inno_Deleter* deleter,
906 ErrorCallbacks errorCallbacks);
907 INNO_ENROLLMENT_API
void inno_grpc_IFingerCreateEmbedding(
void* grpc,
909 const uint8_t* imageData,
910 inno::RawImage::Type imageType,
914 inno_AllocateData allocator,
916 ErrorCallbacks errorCallbacks);
918 INNO_ENROLLMENT_API
void inno_grpc_IFingerGetTemplateVersion(
void* grpc,
919 uint32_t* ifingerVersion,
920 uint32_t* enrollmentVersion,
922 unsigned int tmplSize,
923 ErrorCallbacks errorCallbacks);
924 INNO_ENROLLMENT_API
void inno_grpc_ConvertTemplates(
void* grpc,
925 uint8_t inputTemplateType,
926 const uint8_t* inputTemplate,
927 size_t inputTemplateSize,
928 uint8_t outputTemplateType,
929 inno_AllocateData allocator,
931 ErrorCallbacks errorCallbacks);
933 INNO_ENROLLMENT_API
void inno_grpc_ConvertIsoToIsoCCTemplate(
void* grpc,
934 const uint8_t* inputTemplate,
935 size_t inputTemplateSize,
936 uint32_t maxMinutiae,
938 uint8_t secondarySort,
939 inno_AllocateData allocator,
941 ErrorCallbacks errorCallbacks);
944 class GrpcPrintExecutor :
public PrintExecutor
947 void Extract(inno_ICSExtractor_params* params,
948 LoggerCallBacks logCallbacks,
949 uint8_t** outTemplate,
950 unsigned int* outTemplateSize,
951 ErrorCallbacks errorCallbacks)
final
953 inno_grpc_ICSExtractor_CreateFor(
954 grpc.get(), params, logCallbacks, outTemplate, outTemplateSize, errorCallbacks);
956 void FreeTemplate(
const uint8_t* data,
unsigned int size)
final
958 inno_grpc_ICSTemplate_free(data, size);
961 void GetICSTemplateVersion(
const uint8_t* data,
963 unsigned int* majorVersion,
964 unsigned int* minorVersion,
965 ErrorCallbacks errorCallbacks)
final
967 inno_grpc_ICSTemplate_GetVersion(grpc.get(), data, size, majorVersion, minorVersion, errorCallbacks);
970 void SetICSTemplatePosition(
int position, uint8_t* data, uint32_t size, ErrorCallbacks errorCallbacks)
final
972 inno_local_ICSTemplate_SetPosition(position, data, size, errorCallbacks);
975 void GetICSTemplateQuality(
const uint8_t* data,
978 ErrorCallbacks errorCallbacks)
final
980 inno_grpc_ICSTemplate_GetQuality(grpc.get(), data, size, quality, errorCallbacks);
983 void GetICSTemplatePosition(
int* position,
986 ErrorCallbacks errorCallbacks)
const final
988 inno_grpc_ICSTemplate_GetPosition(grpc.get(), data, size, position, errorCallbacks);
991 void GetMinutiae(
const std::shared_ptr<Logger>& logger,
993 unsigned int tmplSize,
994 inno_Minutia_out** minutiae,
995 size_t* minutiaeCount,
996 ErrorCallbacks errorCallbacks)
final
998 const CallbackLogger slog(logger);
999 inno_grpc_GetMinutiae(
1000 grpc.get(), slog.GetCallbacks(), tmpl, tmplSize, minutiae, minutiaeCount, errorCallbacks);
1003 void FreeMinutiae(inno_Minutia_out* minutiae)
final
1005 inno_grpc_FreeMinutiae(minutiae);
1008 void GetCriticalPoints(
const std::shared_ptr<Logger>& logger,
1009 const uint8_t* tmpl,
1010 unsigned int tmplSize,
1011 inno_CriticalPoint_out** points,
1012 size_t* minutiaeCount,
1013 inno_AllocateCriticalPoints allocator,
1015 ErrorCallbacks errorCallbacks)
final
1017 const CallbackLogger slog(logger);
1018 inno_grpc_GetCriticalPoints(grpc.get(),
1019 slog.GetCallbacks(),
1029 void ConvertICSToISO(
const uint8_t* data,
1031 unsigned int captureEquipmentID,
1035 unsigned int height,
1036 unsigned int fingerPosition,
1037 unsigned int impressionType,
1038 uint8_t* isoTemplate,
1039 size_t* isoTemplateLength,
1040 ErrorCallbacks errorCallbacks)
final
1042 inno_grpc_ICSTemplate_ConvertToISO(grpc.get(),
1056 void ConvertICSToANSI(
const uint8_t* data,
1058 unsigned int captureEquipmentID,
1062 unsigned int height,
1063 unsigned int fingerPosition,
1064 unsigned int impressionType,
1065 uint8_t* ansiTemplate,
1066 size_t* ansiTemplateLength,
1067 ErrorCallbacks errorCallbacks)
final
1069 inno_grpc_ICSTemplate_ConvertToANSI(grpc.get(),
1083 size_t GetMaxISOTemplateSize() final
1085 return inno_grpc_ICSTemplate_GetMaxISOTemplateSize();
1087 size_t GetMaxANSITemplateSize() final
1089 return inno_grpc_ICSTemplate_GetMaxANSITemplateSize();
1091 void MatchICS(inno_ICSVerifyMatcher_params* params,
1092 LoggerCallBacks logCallbacks,
1093 ErrorCallbacks errorCallbacks)
final
1095 inno_grpc_ICSVerifyMatcher_match(grpc.get(), params, logCallbacks, errorCallbacks);
1097 float MatchEmbedding(
void* module,
1098 const uint8_t* probeTemplate,
1099 unsigned int probeTemplateSize,
1100 const uint8_t* galleryTemplate,
1101 unsigned int galleryTemplateSize,
1102 LoggerCallBacks logCallbacks,
1103 ErrorCallbacks errorCallbacks)
final
1105 return inno_grpc_EmbeddingVerifyMatcher_match(grpc.get(),
1110 galleryTemplateSize,
1114 void CalculatePresence(
unsigned int width,
1115 unsigned int height,
1116 unsigned int imageResolution,
1117 const uint8_t* rawImage,
1119 ErrorCallbacks errorCallbacks)
final
1121 inno_grpc_CalculatePresence(grpc.get(), width, height, imageResolution, rawImage, presence, errorCallbacks);
1123 void CalculateNFIQ1(
unsigned int width,
1124 unsigned int height,
1125 unsigned int imageResolution,
1126 const uint8_t* rawImage,
1128 ErrorCallbacks errorCallbacks)
final
1130 inno_grpc_CalculateNFIQ1(grpc.get(), width, height, imageResolution, rawImage, NFIQ1, errorCallbacks);
1132 void CalculateNFIQ2(
unsigned int width,
1133 unsigned int height,
1134 unsigned int imageResolution,
1135 const uint8_t* rawImage,
1137 ErrorCallbacks errorCallbacks)
final
1139 inno_grpc_CalculateNFIQ2(grpc.get(), width, height, imageResolution, rawImage, NFIQ2, errorCallbacks);
1141 void CalculateImageQuality(
unsigned int width,
1142 unsigned int height,
1143 unsigned int imageResolution,
1144 const uint8_t* rawImage,
1145 uint8_t* imageQuality,
1146 ErrorCallbacks errorCallbacks)
final
1148 inno_grpc_CalculateImageQuality(
1149 grpc.get(), width, height, imageResolution, rawImage, imageQuality, errorCallbacks);
1151 void CalculatePlacement(
unsigned int width,
1152 unsigned int height,
1153 unsigned int imageResolution,
1154 const uint8_t* rawImage,
1156 ErrorCallbacks errorCallbacks)
final
1158 inno_grpc_CalculatePlacement(
1159 grpc.get(), width, height, imageResolution, rawImage, placement, errorCallbacks);
1161 void GetImageIntensity(
unsigned int width,
1162 unsigned int height,
1163 const uint8_t* rawImage,
1165 ErrorCallbacks errorCallbacks)
final
1167 inno_grpc_GetImageIntensity(grpc.get(), width, height, rawImage, intensity, errorCallbacks);
1169 inno_PrintDetector_result AlgoSegment(
unsigned int height,
1171 unsigned int resolution,
1172 const uint8_t* data,
1173 unsigned int maxRotation,
1175 bool isNarrowFinger,
1176 ErrorCallbacks errorCallbacks)
final
1178 return inno_grpc_PrintDetector_Algo_Segment(
1179 grpc.get(), height, width, resolution, data, maxRotation, reduceNoise, isNarrowFinger, errorCallbacks);
1181 inno_PrintDetector_result NeuralSegment(
unsigned int height,
1183 unsigned int resolution,
1184 const uint8_t* data,
1185 unsigned int maxRotation,
1186 unsigned int confidenceThreshold,
1187 bool isNarrowFinger,
1188 ErrorCallbacks errorCallbacks)
final
1190 return inno_grpc_PrintDetector_Neural_Segment(grpc.get(),
1196 confidenceThreshold,
1201 void* IFingerCreateIdentificationModule(inno_Deleter* deleter, ErrorCallbacks errorCallbacks)
override
1203 return inno_grpc_IFingerCreateIdentificationModule(grpc.get(), deleter, errorCallbacks);
1206 void* IFingerCreateMatchingModule(inno_Deleter* deleter, ErrorCallbacks errorCallbacks)
override
1208 return inno_grpc_IFingerCreateMatchingModule(grpc.get(), deleter, errorCallbacks);
1211 void IFingerCreateEmbedding(
void* module,
1212 const uint8_t* imageData,
1213 inno::RawImage::Type imageType,
1215 unsigned int height,
1217 inno_AllocateData allocator,
1219 ErrorCallbacks errorCallbacks)
const override
1221 inno_grpc_IFingerCreateEmbedding(
1222 grpc.get(), module, imageData, imageType, width, height, dpi, allocator, container, errorCallbacks);
1225 void IFingerGetTemplateVersion(uint32_t* ifingerVersion,
1226 uint32_t* enrollmentVersion,
1227 const uint8_t* tmpl,
1228 unsigned int tmplSize,
1229 ErrorCallbacks errorCallbacks)
const override
1231 inno_grpc_IFingerGetTemplateVersion(
1232 grpc.get(), ifingerVersion, enrollmentVersion, tmpl, tmplSize, errorCallbacks);
1235 void ConvertTemplates(uint8_t inputTemplateType,
1236 const uint8_t* inputTemplate,
1237 size_t inputTemplateSize,
1238 uint8_t outputTemplateType,
1239 inno_AllocateData allocator,
1241 ErrorCallbacks errorCallbacks)
const final
1243 inno_grpc_ConvertTemplates(grpc.get(),
1253 void ConvertIsoToIsoCCTemplate(
const uint8_t* inputTemplate,
1254 size_t inputTemplateSize,
1255 uint32_t maxMinutiae,
1256 uint8_t primarySort,
1257 uint8_t secondarySort,
1258 inno_AllocateData allocator,
1260 ErrorCallbacks errorCallbacks)
const final
1262 inno_grpc_ConvertIsoToIsoCCTemplate(grpc.get(),
1278 explicit GrpcPrintExecutor(
const std::string& endPoint)
1279 : grpc(inno_grpc_print_Create(endPoint.c_str()), inno_grpc_print_Delete)
1283 GrpcPrintExecutor() =
delete;
1284 virtual ~GrpcPrintExecutor() =
default;
1285 GrpcPrintExecutor(
const GrpcPrintExecutor&) =
delete;
1286 GrpcPrintExecutor(GrpcPrintExecutor&&) =
delete;
1287 GrpcPrintExecutor& operator=(
const GrpcPrintExecutor&) =
delete;
1288 GrpcPrintExecutor& operator=(GrpcPrintExecutor&&) =
delete;
1291 std::unique_ptr<void, void (*)(
void*)> grpc;
1300 class GlobalPrintExecutor
1307 static std::shared_ptr<PrintExecutor>
Get()
1309 return GlobalPrintExecutor::Instance().GetInternal();
1317 static void Set(std::shared_ptr<PrintExecutor> executor)
1319 if (executor ==
nullptr)
1324 GlobalPrintExecutor::Instance().SetInternal(std::move(executor));
1335 std::shared_ptr<PrintExecutor> pe;
1338 std::shared_ptr<PrintExecutor> GetInternal()
1340 const std::scoped_lock lock(peMux);
1344 static GlobalPrintExecutor& Instance()
1346 static GlobalPrintExecutor e(std::make_shared<LocalPrintExecutor>());
1350 void SetInternal(std::shared_ptr<PrintExecutor> executor)
1352 const std::scoped_lock lock(peMux);
1353 pe = std::move(executor);
1356 explicit GlobalPrintExecutor(std::shared_ptr<PrintExecutor> e)
Holds instance of PrintExecutor.
Definition PrintExecutor.h:1300
static std::shared_ptr< PrintExecutor > Get()
Provides current executor.
Definition PrintExecutor.h:1306
static void Set(std::shared_ptr< PrintExecutor > executor)
Sets new global executor.
Definition PrintExecutor.h:1316
Null argument is not allowed.
Definition EnrollmentException.h:156
LoggerCallBacks contains logger handle and function pointers as callbacks.
Definition Logger.h:137