|
#ifndef __CLIP_H__ |
|
#define __CLIP_H__ |
|
|
|
#if defined(__cplusplus) |
|
extern "C" |
|
{ |
|
#endif |
|
#define CLIP_DEVICES_COUNT 16 |
|
#define CLIP_VERSION_LEN 32 |
|
#define CLIP_KEY_MAX_LEN 64 |
|
#define CLIP_PATH_LEN 128 |
|
|
|
typedef enum |
|
{ |
|
clip_errcode_failed = -1, |
|
clip_errcode_success = 0, |
|
|
|
clip_errcode_invalid_ptr, |
|
clip_errcode_sysinit_failed, |
|
clip_errcode_sysdeinit_failed, |
|
clip_errcode_axcl_sysinit_failed, |
|
clip_errcode_axcl_sysdeinit_failed, |
|
|
|
clip_errcode_create_failed = 0x10000, |
|
clip_errcode_create_failed_sys, |
|
clip_errcode_create_failed_ienc, |
|
clip_errcode_create_failed_tenc, |
|
clip_errcode_create_failed_vocab, |
|
clip_errcode_create_failed_db, |
|
|
|
clip_errcode_destroy_failed = 0x20000, |
|
|
|
clip_errcode_add_failed = 0x30000, |
|
clip_errcode_add_failed_key_exist, |
|
clip_errcode_add_failed_encode_image, |
|
clip_errcode_add_failed_push_db, |
|
|
|
clip_errcode_remove_failed = 0x40000, |
|
clip_errcode_remove_failed_key_not_exist, |
|
clip_errcode_remove_failed_del_db, |
|
|
|
clip_errcode_match_failed = 0x50000, |
|
clip_errcode_match_failed_encode_text, |
|
clip_errcode_match_failed_encode_image, |
|
} clip_errcode_e; |
|
|
|
typedef enum |
|
{ |
|
unknown_device = 0, |
|
host_device = 1, |
|
axcl_device = 2 |
|
} clip_devive_e; |
|
|
|
typedef void *clip_handle_t; |
|
|
|
typedef struct |
|
{ |
|
struct |
|
{ |
|
char available; |
|
char version[CLIP_VERSION_LEN]; |
|
struct |
|
{ |
|
int remain; |
|
int total; |
|
} mem_info; |
|
} host; |
|
|
|
struct |
|
{ |
|
char host_version[CLIP_VERSION_LEN]; |
|
char dev_version[CLIP_VERSION_LEN]; |
|
unsigned char count; |
|
struct |
|
{ |
|
int temp; |
|
int cpu_usage; |
|
int npu_usage; |
|
struct |
|
{ |
|
int remain; |
|
int total; |
|
} mem_info; |
|
} devices_info[CLIP_DEVICES_COUNT]; |
|
|
|
} devices; |
|
} clip_devices_t; |
|
|
|
typedef struct |
|
{ |
|
clip_devive_e dev_type; |
|
char devid; |
|
char text_encoder_path[CLIP_PATH_LEN]; |
|
char image_encoder_path[CLIP_PATH_LEN]; |
|
char tokenizer_path[CLIP_PATH_LEN]; |
|
char isCN; |
|
char db_path[CLIP_PATH_LEN]; |
|
} clip_init_t; |
|
|
|
typedef struct |
|
{ |
|
unsigned char *data; |
|
int width; |
|
int height; |
|
int channels; |
|
int stride; |
|
} clip_image_t; |
|
|
|
typedef struct |
|
{ |
|
char key[CLIP_KEY_MAX_LEN]; |
|
float score; |
|
} clip_result_item_t; |
|
|
|
|
|
|
|
|
|
|
|
|
|
int clip_enum_devices(clip_devices_t *devices); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int clip_sys_init(clip_devive_e dev_type, char devid); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int clip_sys_deinit(clip_devive_e dev_type, char devid); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int clip_create(clip_init_t *init_info, clip_handle_t *handle); |
|
|
|
|
|
|
|
|
|
|
|
|
|
int clip_destroy(clip_handle_t handle); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int clip_add(clip_handle_t handle, char key[CLIP_KEY_MAX_LEN], clip_image_t *image, char overwrite); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int clip_remove(clip_handle_t handle, char key[CLIP_KEY_MAX_LEN]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int clip_contain(clip_handle_t handle, char key[CLIP_KEY_MAX_LEN]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int clip_match_text(clip_handle_t handle, const char *text, clip_result_item_t *results, int top_k); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int clip_match_image(clip_handle_t handle, clip_image_t *image, clip_result_item_t *results, int top_k); |
|
|
|
#if defined(__cplusplus) |
|
} |
|
#endif |
|
|
|
#endif |