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
115void destroy(LightlyEdge * lightly_edge);
116
118CStatus embed_frame(const LightlyEdge * lightly_edge,
119 uint8_t *rgb_image_data,
120 size_t rgb_image_data_size,
121 uint32_t width,
122 uint32_t height,
123 float *out_embedding_buffer);
124
126CStatus embed_texts(LightlyEdge *lightly_edge,
127 const char *const *texts,
128 size_t num_texts,
129 float **out_embeddings);
130
132CStatus insert_into_embedding_database(LightlyEdge * lightly_edge,
133 const float *embedding_buffer,
134 size_t embedding_buffer_size);
135
137CStatus register_diversity_strategy(LightlyEdge * lightly_edge, float min_distance);
138
140size_t num_diversity_strategies(const LightlyEdge * lightly_edge);
141
143size_t num_patches(const LightlyEdge * lightly_edge);
144
146CStatus register_similarity_strategy(LightlyEdge * lightly_edge,
147 const float *query_embedding_buffer,
148 size_t query_embedding_buffer_size,
149 float max_distance);
150
152size_t num_similarity_strategies(const LightlyEdge * lightly_edge);
153
155CStatus register_detection_strategy(LightlyEdge * lightly_edge,
156 uint32_t class_id,
157 int32_t subclass_id,
158 float threshold);
159
161size_t num_detection_strategies(const LightlyEdge * lightly_edge);
162
164CStatus register_adaptive_diversity_strategy(LightlyEdge * lightly_edge,
165 float target_ratio,
166 size_t max_buffer_length);
167
169size_t num_adaptive_diversity_strategies(const LightlyEdge * lightly_edge);
170
172void clear_strategies(LightlyEdge * lightly_edge);
173
175CStatus should_select(LightlyEdge * lightly_edge,
176 const float *embedding_buffer,
177 size_t embedding_buffer_size,
178 const ObjectDetection *detection_buffer,
179 size_t detection_buffer_size,
180 SelectionStrategiesSelectInfo *out_info);
181
183CStatus should_select_with_patches(LightlyEdge * lightly_edge,
184 const float *const *embeddings_buffer,
185 size_t num_embeddings,
186 size_t embedding_dim,
187 const ObjectDetection *detection_buffer,
188 size_t detection_buffer_size,
189 SelectionStrategiesSelectInfo *out_info);
190
192size_t embedding_dimension(const LightlyEdge * lightly_edge);
193
195CStatus detect(const LightlyEdge * lightly_edge,
196 uint8_t *rgb_image_data,
197 size_t rgb_image_data_size,
198 uint32_t width,
199 uint32_t height,
200 ObjectDetection *out_detections_buffer,
201 size_t *out_detections_len);
202
204CStatus detection_class_labels(const LightlyEdge * lightly_edge,
205 const char **out_classes_buffer,
206 size_t *out_classes_len);
207
209CStatus detection_subclass_labels(const LightlyEdge * lightly_edge,
210 uint32_t class_id,
211 const char **out_subclasses_buffer,
212 size_t *out_subclasses_len);
213
215CStatus set_embedding_patches(LightlyEdge * lightly_edge,
216 const PatchCoordsRel *patches,
217 size_t num_patches);
218
220void reset_embedding_patches(LightlyEdge * lightly_edge);
221
223CStatus embed_patches(const LightlyEdge * lightly_edge,
224 uint8_t *rgb_image_data,
225 size_t rgb_image_data_size,
226 uint32_t width,
227 uint32_t height,
228 float **out_embedding_buffer);
229
231CStatus create_status_impl(uint16_t code, const char *error_message);
232
234void free_status_message(CStatus * status);
235
236} // extern "C"
237
238} // namespace lightly_edge_rs
239
240#endif // LIGHTLY_EDGE_RS_BINDINGS_H
241
242
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