3#ifndef LIGHTLY_EDGE_RS_BINDINGS_H
4#define LIGHTLY_EDGE_RS_BINDINGS_H
17namespace lightly_edge_rs {
19constexpr static const uint16_t SUCCESS_CODE = 0;
21constexpr static const int32_t NO_SUBCLASS = -1;
23enum class InferenceDeviceType {
35 const char *error_message;
39 bool object_detector_enable;
40 bool classifiers_enable;
41 uint32_t max_classifications;
46 InferenceDeviceType inference_device_type;
84struct SelectionStrategiesSelectInfo {
86 size_t diversity_buffer_size;
87 size_t *out_diversity_size;
89 size_t similarity_buffer_size;
90 size_t *out_similarity_size;
92 size_t adaptive_diversity_buffer_size;
93 size_t *out_adaptive_diversity_size;
95 size_t detection_buffer_size;
96 size_t *out_detection_size;
110CStatus lightly_edge_new_from_tar(
const char *archive_path,
112 LightlyEdge **out_ptr);
115void destroy(LightlyEdge * lightly_edge);
118CStatus embed_frame(
const LightlyEdge * lightly_edge,
119 uint8_t *rgb_image_data,
120 size_t rgb_image_data_size,
123 float *out_embedding_buffer);
126CStatus embed_texts(LightlyEdge *lightly_edge,
127 const char *
const *texts,
129 float **out_embeddings);
132CStatus insert_into_embedding_database(LightlyEdge * lightly_edge,
133 const float *embedding_buffer,
134 size_t embedding_buffer_size);
137CStatus register_diversity_strategy(LightlyEdge * lightly_edge,
float min_distance);
140size_t num_diversity_strategies(
const LightlyEdge * lightly_edge);
143size_t num_patches(
const LightlyEdge * lightly_edge);
146CStatus register_similarity_strategy(LightlyEdge * lightly_edge,
147 const float *query_embedding_buffer,
148 size_t query_embedding_buffer_size,
152size_t num_similarity_strategies(
const LightlyEdge * lightly_edge);
155CStatus register_detection_strategy(LightlyEdge * lightly_edge,
161size_t num_detection_strategies(
const LightlyEdge * lightly_edge);
164CStatus register_adaptive_diversity_strategy(LightlyEdge * lightly_edge,
166 size_t max_buffer_length);
169size_t num_adaptive_diversity_strategies(
const LightlyEdge * lightly_edge);
172void clear_strategies(LightlyEdge * lightly_edge);
175CStatus should_select(LightlyEdge * lightly_edge,
176 const float *embedding_buffer,
177 size_t embedding_buffer_size,
179 size_t detection_buffer_size,
180 SelectionStrategiesSelectInfo *out_info);
183CStatus should_select_with_patches(LightlyEdge * lightly_edge,
184 const float *
const *embeddings_buffer,
185 size_t num_embeddings,
186 size_t embedding_dim,
188 size_t detection_buffer_size,
189 SelectionStrategiesSelectInfo *out_info);
192size_t embedding_dimension(
const LightlyEdge * lightly_edge);
195CStatus detect(
const LightlyEdge * lightly_edge,
196 uint8_t *rgb_image_data,
197 size_t rgb_image_data_size,
201 size_t *out_detections_len);
204CStatus detection_class_labels(
const LightlyEdge * lightly_edge,
205 const char **out_classes_buffer,
206 size_t *out_classes_len);
209CStatus detection_subclass_labels(
const LightlyEdge * lightly_edge,
211 const char **out_subclasses_buffer,
212 size_t *out_subclasses_len);
215CStatus set_embedding_patches(LightlyEdge * lightly_edge,
220void reset_embedding_patches(LightlyEdge * lightly_edge);
223CStatus embed_patches(
const LightlyEdge * lightly_edge,
224 uint8_t *rgb_image_data,
225 size_t rgb_image_data_size,
228 float **out_embedding_buffer);
231CStatus create_status_impl(uint16_t code,
const char *error_message);
234void free_status_message(CStatus * status);
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