LightlyEdge C++ SDK
Loading...
Searching...
No Matches
lightly_edge_rs_bindings.h
1/* © 2024 Lightly AI. All rights reserved. */
2
3#ifndef LIGHTLY_EDGE_RS_BINDINGS_H
4#define LIGHTLY_EDGE_RS_BINDINGS_H
5
6/* Generated with cbindgen:0.27.0 */
7
8/* WARNING: This file is autogenerated by cbindgen. Don't modify this manually. */
9
10#include <cstdarg>
11#include <cstddef>
12#include <cstdint>
13#include <cstdlib>
14#include <ostream>
15#include <new>
16
17namespace lightly_edge_rs {
18
19constexpr static const uint16_t SUCCESS_CODE = 0;
20
21constexpr static const int32_t NO_SUBCLASS = -1;
22
23enum class InferenceDeviceType {
24 Auto,
25 CPU,
26 CUDA,
27 TensorRT,
28};
29
31struct LightlyEdge;
32
33struct CStatus {
34 uint16_t code;
35 const char *error_message;
36};
37
39 bool object_detector_enable;
40 bool classifiers_enable;
41 uint32_t max_classifications;
42};
43
45 LightlyEdgeDetectorConfig detector_config;
46 InferenceDeviceType inference_device_type;
47};
48
50 uint32_t class_id;
51 int32_t subclass_id;
52 int32_t x;
53 int32_t y;
54 int32_t w;
55 int32_t h;
56 float confidence;
57};
58
61 bool should_select;
62 float min_distance;
63};
64
67 bool should_select;
68 float distance;
69};
70
73 bool should_select;
74 float min_distance;
75};
76
78 uint32_t class_id;
79 int32_t subclass_id;
80 float threshold;
81 bool should_select;
82};
83
84struct SelectionStrategiesSelectInfo {
85 DiversitySelectInfo *out_diversity_buffer;
86 size_t diversity_buffer_size;
87 size_t *out_diversity_size;
88 SimilaritySelectInfo *out_similarity_buffer;
89 size_t similarity_buffer_size;
90 size_t *out_similarity_size;
91 AdaptiveDiversitySelectInfo *out_adaptive_diversity_buffer;
92 size_t adaptive_diversity_buffer_size;
93 size_t *out_adaptive_diversity_size;
94 DetectionSelectInfo *out_detection_buffer;
95 size_t detection_buffer_size;
96 size_t *out_detection_size;
97};
98
101 float x0;
102 float y0;
103 float w;
104 float h;
105};
106
107extern "C" {
108
110CStatus lightly_edge_new_from_tar(const char *archive_path,
111 LightlyEdgeConfig config,
112 LightlyEdge **out_ptr);
113
115CStatus lightly_edge_new_from_directory(const char *model_directory,
116 LightlyEdgeConfig config,
117 LightlyEdge **out_ptr);
118
120void destroy(LightlyEdge * lightly_edge);
121
123CStatus embed_frame(const LightlyEdge * lightly_edge,
124 uint8_t *rgb_image_data,
125 size_t rgb_image_data_size,
126 uint32_t width,
127 uint32_t height,
128 float *out_embedding_buffer);
129
131CStatus embed_texts(LightlyEdge *lightly_edge,
132 const char *const *texts,
133 size_t num_texts,
134 float **out_embeddings);
135
137CStatus insert_into_embedding_database(LightlyEdge * lightly_edge,
138 const float *embedding_buffer,
139 size_t embedding_buffer_size);
140
142CStatus register_diversity_strategy(LightlyEdge * lightly_edge, float min_distance);
143
145size_t num_diversity_strategies(const LightlyEdge * lightly_edge);
146
148size_t num_patches(const LightlyEdge * lightly_edge);
149
151CStatus register_similarity_strategy(LightlyEdge * lightly_edge,
152 const float *query_embedding_buffer,
153 size_t query_embedding_buffer_size,
154 float max_distance);
155
157size_t num_similarity_strategies(const LightlyEdge * lightly_edge);
158
160CStatus register_detection_strategy(LightlyEdge * lightly_edge,
161 uint32_t class_id,
162 int32_t subclass_id,
163 float threshold);
164
166size_t num_detection_strategies(const LightlyEdge * lightly_edge);
167
169CStatus register_adaptive_diversity_strategy(LightlyEdge * lightly_edge,
170 float target_ratio,
171 size_t max_buffer_length);
172
174size_t num_adaptive_diversity_strategies(const LightlyEdge * lightly_edge);
175
177void clear_strategies(LightlyEdge * lightly_edge);
178
180CStatus should_select(LightlyEdge * lightly_edge,
181 const float *embedding_buffer,
182 size_t embedding_buffer_size,
183 const ObjectDetection *detection_buffer,
184 size_t detection_buffer_size,
185 SelectionStrategiesSelectInfo *out_info);
186
188CStatus should_select_with_patches(LightlyEdge * lightly_edge,
189 const float *const *embeddings_buffer,
190 size_t num_embeddings,
191 size_t embedding_dim,
192 const ObjectDetection *detection_buffer,
193 size_t detection_buffer_size,
194 SelectionStrategiesSelectInfo *out_info);
195
197size_t embedding_dimension(const LightlyEdge * lightly_edge);
198
200CStatus detect(const LightlyEdge * lightly_edge,
201 uint8_t *rgb_image_data,
202 size_t rgb_image_data_size,
203 uint32_t width,
204 uint32_t height,
205 ObjectDetection *out_detections_buffer,
206 size_t *out_detections_len);
207
209CStatus detection_class_labels(const LightlyEdge * lightly_edge,
210 const char **out_classes_buffer,
211 size_t *out_classes_len);
212
214CStatus detection_subclass_labels(const LightlyEdge * lightly_edge,
215 uint32_t class_id,
216 const char **out_subclasses_buffer,
217 size_t *out_subclasses_len);
218
220CStatus set_embedding_patches(LightlyEdge * lightly_edge,
221 const PatchCoordsRel *patches,
222 size_t num_patches);
223
225void reset_embedding_patches(LightlyEdge * lightly_edge);
226
228CStatus embed_patches(const LightlyEdge * lightly_edge,
229 uint8_t *rgb_image_data,
230 size_t rgb_image_data_size,
231 uint32_t width,
232 uint32_t height,
233 float **out_embedding_buffer);
234
236CStatus create_status_impl(uint16_t code, const char *error_message);
237
239void free_status_message(CStatus * status);
240
241} // extern "C"
242
243} // namespace lightly_edge_rs
244
245#endif // LIGHTLY_EDGE_RS_BINDINGS_H
246
247
Holds information whether a frame should be selected or not.
Definition lightly_edge_rs_bindings.h:72
Definition lightly_edge_rs_bindings.h:77
Holds information whether a frame should be selected or not.
Definition lightly_edge_rs_bindings.h:60
Definition lightly_edge_rs_bindings.h:44
Definition lightly_edge_rs_bindings.h:38
Definition lightly_edge_rs_bindings.h:49
A patch specified by relative coordinates.
Definition lightly_edge_rs_bindings.h:100
Holds information whether a frame should be selected or not.
Definition lightly_edge_rs_bindings.h:66