c_interface.h
1 #ifndef _C_INTERFACE_H_
2 #define _C_INTERFACE_H_
3 
4 #pragma once
5 
6 #include "export.h"
7 
8 #include <cstddef>
9 
10 
11 extern "C"
12 {
13  void DMXSDK_API dmxsdk_get_last_error(char * buffer, unsigned int * buffer_size);
14 
15  typedef void* dmxsdk_pointer;
16 
17  int DMXSDK_API dmxsdk_make_config(char * path, dmxsdk_pointer * handle);
18  void DMXSDK_API dmxsdk_free_config(dmxsdk_pointer handle);
19 
20  int DMXSDK_API dmxsdk_construct_image(unsigned int width, unsigned int height, char* data, dmxsdk_pointer * handle);
21  void DMXSDK_API dmxsdk_free_image(dmxsdk_pointer handle);
22  bool DMXSDK_API dmxsdk_image_empty(dmxsdk_pointer handle);
23  unsigned int DMXSDK_API dmxsdk_image_width(dmxsdk_pointer handle);
24  unsigned int DMXSDK_API dmxsdk_image_height(dmxsdk_pointer handle);
25 
26  int DMXSDK_API dmxsdk_create_decoder(dmxsdk_pointer config_handle, dmxsdk_pointer * handle);
27  void DMXSDK_API dmxsdk_free_decoder(dmxsdk_pointer handle);
28  int DMXSDK_API dmxsdk_decoder_decode(dmxsdk_pointer decoder_handle, size_t size, const void* data, dmxsdk_pointer * handle);
29  int DMXSDK_API dmxsdk_decoder_read(dmxsdk_pointer decoder_handle, char * path, dmxsdk_pointer * handle);
30 
31 
32  int DMXSDK_API dmxsdk_construct_detection(dmxsdk_pointer image_handle, int dpi, float * center_coordinates, float angle, dmxsdk_pointer * handle);
33  void DMXSDK_API dmxsdk_free_detection(dmxsdk_pointer handle);
34  float DMXSDK_API dmxsdk_detection_confidence(dmxsdk_pointer handle);
35  void DMXSDK_API dmxsdk_detection_bbox(dmxsdk_pointer handle, float * bbox_data);
36 
37  int DMXSDK_API dmxsdk_create_detector(dmxsdk_pointer config_handle, dmxsdk_pointer * handle);
38  void DMXSDK_API dmxsdk_free_detector(dmxsdk_pointer handle);
39  int DMXSDK_API dmxsdk_detector_detect(dmxsdk_pointer detector_handle, dmxsdk_pointer image_handle, int dpi, float confidence, dmxsdk_pointer * handles, int * nums);
40 
41  void DMXSDK_API dmxsdk_free_template(dmxsdk_pointer handle);
42  unsigned int DMXSDK_API dmxsdk_template_serializedSize(dmxsdk_pointer handle);
43  void DMXSDK_API dmxsdk_template_serialize(dmxsdk_pointer handle, char * data);
44 
45  int DMXSDK_API dmxsdk_template_deserialize(dmxsdk_pointer * handle, unsigned int size, const char * data);
46 
47  int DMXSDK_API dmxsdk_create_extractor(dmxsdk_pointer config_handle, dmxsdk_pointer * handle);
48  void DMXSDK_API dmxsdk_free_extractor(dmxsdk_pointer handle);
49 
50  int DMXSDK_API dmxsdk_extractor_extract(dmxsdk_pointer extractor_handle, dmxsdk_pointer detection_handle, dmxsdk_pointer * handle);
51 
52  int DMXSDK_API dmxsdk_construct_template_db(size_t max_size, int batch_size, dmxsdk_pointer * handle);
53  void DMXSDK_API dmxsdk_free_template_db(dmxsdk_pointer handle);
54 
55 
56  int DMXSDK_API dmxsdk_template_db_add(dmxsdk_pointer template_db_handle, dmxsdk_pointer template_handle, long long id);
57  int DMXSDK_API dmxsdk_template_db_clear(dmxsdk_pointer template_db_handle);
58  size_t DMXSDK_API dmxsdk_template_db_size(dmxsdk_pointer template_db_handle);
59  size_t DMXSDK_API dmxsdk_template_db_max_size(dmxsdk_pointer template_db_handle);
60  int DMXSDK_API dmxsdk_template_db_get_loaded_ids(dmxsdk_pointer template_db_handle, long long * ids);
61  bool DMXSDK_API dmxsdk_template_db_is_loaded(dmxsdk_pointer template_db_handle, long long id);
62  int DMXSDK_API dmxsdk_template_db_save(dmxsdk_pointer template_db_handle, char * path);
63  int DMXSDK_API dmxsdk_template_db_load(dmxsdk_pointer template_db_handle, char * path);
64 
65 
66  int DMXSDK_API dmxsdk_create_matcher(dmxsdk_pointer config_handle, dmxsdk_pointer * handle);
67  void DMXSDK_API dmxsdk_free_matcher(dmxsdk_pointer handle);
68 
69  float DMXSDK_API dmxsdk_matcher_match(dmxsdk_pointer matcher_handle, dmxsdk_pointer template0_handle, dmxsdk_pointer template1_handle);
70 
71  int DMXSDK_API dmxsdk_matcher_matchK(unsigned int N, dmxsdk_pointer * templates_handle,
72  dmxsdk_pointer matcher_handle, dmxsdk_pointer template_db_handle,
73  unsigned int K, float threshold,
74  long long * ids, float * values);
75 }
76 
77 
78 #endif /* _C_INTERFACE_H_ */