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 GPUFallbackCPU,
25 CPU,
26 GPU,
27};
28
30struct LightlyEdge;
31
32struct CStatus {
33 uint16_t code;
34 const char *error_message;
35};
36
38 bool object_detector_enable;
39 bool classifiers_enable;
40 uint32_t max_classifications;
41};
42
44 LightlyEdgeDetectorConfig detector_config;
45 InferenceDeviceType inference_device_type;
46};
47
49 uint32_t class_id;
50 int32_t subclass_id;
51 int32_t x;
52 int32_t y;
53 int32_t w;
54 int32_t h;
55 float confidence;
56};
57
60 bool should_select;
61 float min_distance;
62};
63
66 bool should_select;
67 float distance;
68};
69
72 bool should_select;
73 float min_distance;
74};
75
77 uint32_t class_id;
78 int32_t subclass_id;
79 float threshold;
80 bool should_select;
81};
82
83struct SelectionStrategiesSelectInfo {
84 DiversitySelectInfo *out_diversity_buffer;
85 size_t diversity_buffer_size;
86 size_t *out_diversity_size;
87 SimilaritySelectInfo *out_similarity_buffer;
88 size_t similarity_buffer_size;
89 size_t *out_similarity_size;
90 AdaptiveDiversitySelectInfo *out_adaptive_diversity_buffer;
91 size_t adaptive_diversity_buffer_size;
92 size_t *out_adaptive_diversity_size;
93 DetectionSelectInfo *out_detection_buffer;
94 size_t detection_buffer_size;
95 size_t *out_detection_size;
96};
97
100 float x0;
101 float y0;
102 float w;
103 float h;
104};
105
106extern "C" {
107
109CStatus lightly_edge_new_from_tar(const char *archive_path,
110 LightlyEdgeConfig config,
111 LightlyEdge **out_ptr);
112
114void destroy(LightlyEdge * lightly_edge);
115
117CStatus embed_frame(const LightlyEdge * lightly_edge,
118 uint8_t *rgb_image_data,
119 size_t rgb_image_data_size,
120 uint32_t width,
121 uint32_t height,
122 float *out_embedding_buffer);
123
125CStatus embed_texts(LightlyEdge *lightly_edge,
126 const char *const *texts,
127 size_t num_texts,
128 float **out_embeddings);
129
131CStatus insert_into_embedding_database(LightlyEdge * lightly_edge,
132 const float *embedding_buffer,
133 size_t embedding_buffer_size);
134
136CStatus register_diversity_strategy(LightlyEdge * lightly_edge, float min_distance);
137
139size_t num_diversity_strategies(const LightlyEdge * lightly_edge);
140
142size_t num_patches(const LightlyEdge * lightly_edge);
143
145CStatus register_similarity_strategy(LightlyEdge * lightly_edge,
146 const float *query_embedding_buffer,
147 size_t query_embedding_buffer_size,
148 float max_distance);
149
151size_t num_similarity_strategies(const LightlyEdge * lightly_edge);
152
154CStatus register_detection_strategy(LightlyEdge * lightly_edge,
155 uint32_t class_id,
156 int32_t subclass_id,
157 float threshold);
158
160size_t num_detection_strategies(const LightlyEdge * lightly_edge);
161
163CStatus register_adaptive_diversity_strategy(LightlyEdge * lightly_edge,
164 float target_ratio,
165 size_t max_buffer_length);
166
168size_t num_adaptive_diversity_strategies(const LightlyEdge * lightly_edge);
169
171void clear_strategies(LightlyEdge * lightly_edge);
172
174CStatus should_select(LightlyEdge * lightly_edge,
175 const float *embedding_buffer,
176 size_t embedding_buffer_size,
177 const ObjectDetection *detection_buffer,
178 size_t detection_buffer_size,
179 SelectionStrategiesSelectInfo *out_info);
180
182CStatus should_select_with_patches(LightlyEdge * lightly_edge,
183 const float *const *embeddings_buffer,
184 size_t num_embeddings,
185 size_t embedding_dim,
186 const ObjectDetection *detection_buffer,
187 size_t detection_buffer_size,
188 SelectionStrategiesSelectInfo *out_info);
189
191size_t embedding_dimension(const LightlyEdge * lightly_edge);
192
194CStatus detect(const LightlyEdge * lightly_edge,
195 uint8_t *rgb_image_data,
196 size_t rgb_image_data_size,
197 uint32_t width,
198 uint32_t height,
199 ObjectDetection *out_detections_buffer,
200 size_t *out_detections_len);
201
203CStatus detection_class_labels(const LightlyEdge * lightly_edge,
204 const char **out_classes_buffer,
205 size_t *out_classes_len);
206
208CStatus detection_subclass_labels(const LightlyEdge * lightly_edge,
209 uint32_t class_id,
210 const char **out_subclasses_buffer,
211 size_t *out_subclasses_len);
212
214CStatus set_embedding_patches(LightlyEdge * lightly_edge,
215 const PatchCoordsRel *patches,
216 size_t num_patches);
217
219void reset_embedding_patches(LightlyEdge * lightly_edge);
220
222CStatus embed_patches(const LightlyEdge * lightly_edge,
223 uint8_t *rgb_image_data,
224 size_t rgb_image_data_size,
225 uint32_t width,
226 uint32_t height,
227 float **out_embedding_buffer);
228
230CStatus create_status_impl(uint16_t code, const char *error_message);
231
233void free_status_message(CStatus * status);
234
235} // extern "C"
236
237} // namespace lightly_edge_rs
238
239#endif // LIGHTLY_EDGE_RS_BINDINGS_H
240
241
Holds information whether a frame should be selected or not.
Definition lightly_edge_rs_bindings.h:71
Definition lightly_edge_rs_bindings.h:76
Holds information whether a frame should be selected or not.
Definition lightly_edge_rs_bindings.h:59
Definition lightly_edge_rs_bindings.h:43
Definition lightly_edge_rs_bindings.h:37
Definition lightly_edge_rs_bindings.h:48
A patch specified by relative coordinates.
Definition lightly_edge_rs_bindings.h:99
Holds information whether a frame should be selected or not.
Definition lightly_edge_rs_bindings.h:65