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 {
34 const char *error_message;
38 bool object_detector_enable;
39 bool classifiers_enable;
40 uint32_t max_classifications;
45 InferenceDeviceType inference_device_type;
83struct SelectionStrategiesSelectInfo {
85 size_t diversity_buffer_size;
86 size_t *out_diversity_size;
88 size_t similarity_buffer_size;
89 size_t *out_similarity_size;
91 size_t adaptive_diversity_buffer_size;
92 size_t *out_adaptive_diversity_size;
94 size_t detection_buffer_size;
95 size_t *out_detection_size;
109CStatus lightly_edge_new_from_tar(
const char *archive_path,
111 LightlyEdge **out_ptr);
114void destroy(LightlyEdge * lightly_edge);
117CStatus embed_frame(
const LightlyEdge * lightly_edge,
118 uint8_t *rgb_image_data,
119 size_t rgb_image_data_size,
122 float *out_embedding_buffer);
125CStatus embed_texts(LightlyEdge *lightly_edge,
126 const char *
const *texts,
128 float **out_embeddings);
131CStatus insert_into_embedding_database(LightlyEdge * lightly_edge,
132 const float *embedding_buffer,
133 size_t embedding_buffer_size);
136CStatus register_diversity_strategy(LightlyEdge * lightly_edge,
float min_distance);
139size_t num_diversity_strategies(
const LightlyEdge * lightly_edge);
142size_t num_patches(
const LightlyEdge * lightly_edge);
145CStatus register_similarity_strategy(LightlyEdge * lightly_edge,
146 const float *query_embedding_buffer,
147 size_t query_embedding_buffer_size,
151size_t num_similarity_strategies(
const LightlyEdge * lightly_edge);
154CStatus register_detection_strategy(LightlyEdge * lightly_edge,
160size_t num_detection_strategies(
const LightlyEdge * lightly_edge);
163CStatus register_adaptive_diversity_strategy(LightlyEdge * lightly_edge,
165 size_t max_buffer_length);
168size_t num_adaptive_diversity_strategies(
const LightlyEdge * lightly_edge);
171void clear_strategies(LightlyEdge * lightly_edge);
174CStatus should_select(LightlyEdge * lightly_edge,
175 const float *embedding_buffer,
176 size_t embedding_buffer_size,
178 size_t detection_buffer_size,
179 SelectionStrategiesSelectInfo *out_info);
182CStatus should_select_with_patches(LightlyEdge * lightly_edge,
183 const float *
const *embeddings_buffer,
184 size_t num_embeddings,
185 size_t embedding_dim,
187 size_t detection_buffer_size,
188 SelectionStrategiesSelectInfo *out_info);
191size_t embedding_dimension(
const LightlyEdge * lightly_edge);
194CStatus detect(
const LightlyEdge * lightly_edge,
195 uint8_t *rgb_image_data,
196 size_t rgb_image_data_size,
200 size_t *out_detections_len);
203CStatus detection_class_labels(
const LightlyEdge * lightly_edge,
204 const char **out_classes_buffer,
205 size_t *out_classes_len);
208CStatus detection_subclass_labels(
const LightlyEdge * lightly_edge,
210 const char **out_subclasses_buffer,
211 size_t *out_subclasses_len);
214CStatus set_embedding_patches(LightlyEdge * lightly_edge,
219void reset_embedding_patches(LightlyEdge * lightly_edge);
222CStatus embed_patches(
const LightlyEdge * lightly_edge,
223 uint8_t *rgb_image_data,
224 size_t rgb_image_data_size,
227 float **out_embedding_buffer);
230CStatus create_status_impl(uint16_t code,
const char *error_message);
233void free_status_message(CStatus * status);
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