summaryrefslogtreecommitdiff
path: root/examples/llava/clip.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/llava/clip.h')
-rw-r--r--examples/llava/clip.h41
1 files changed, 31 insertions, 10 deletions
diff --git a/examples/llava/clip.h b/examples/llava/clip.h
index 3d7261e2..f11df85d 100644
--- a/examples/llava/clip.h
+++ b/examples/llava/clip.h
@@ -1,7 +1,22 @@
#ifndef CLIP_H
#define CLIP_H
-#include "ggml.h"
+#include <stddef.h>
+#include <stdint.h>
+
+#ifdef LLAMA_SHARED
+# if defined(_WIN32) && !defined(__MINGW32__)
+# ifdef LLAMA_BUILD
+# define CLIP_API __declspec(dllexport)
+# else
+# define CLIP_API __declspec(dllimport)
+# endif
+# else
+# define CLIP_API __attribute__ ((visibility ("default")))
+# endif
+#else
+# define CLIP_API
+#endif
struct clip_ctx;
@@ -20,19 +35,20 @@ struct clip_vision_hparams {
float eps;
};
-struct clip_ctx * clip_model_load(const char * fname, const int verbosity);
-
-void clip_free(struct clip_ctx * ctx);
+/** load mmproj model */
+CLIP_API struct clip_ctx * clip_model_load(const char * fname, const int verbosity);
+/** free mmproj model */
+CLIP_API void clip_free(struct clip_ctx * ctx);
-size_t clip_embd_nbytes(struct clip_ctx * ctx);
-int clip_n_patches(struct clip_ctx * ctx);
-int clip_n_mmproj_embd(struct clip_ctx * ctx);
+size_t clip_embd_nbytes(const struct clip_ctx * ctx);
+int clip_n_patches(const struct clip_ctx * ctx);
+int clip_n_mmproj_embd(const struct clip_ctx * ctx);
// RGB uint8 image
struct clip_image_u8 {
int nx;
int ny;
- uint8_t * data;
+ uint8_t * data = NULL;
size_t size;
};
@@ -41,7 +57,7 @@ struct clip_image_u8 {
struct clip_image_f32 {
int nx;
int ny;
- float * data;
+ float * data = NULL;
size_t size;
};
@@ -57,7 +73,12 @@ struct clip_image_f32_batch {
struct clip_image_u8 * make_clip_image_u8();
struct clip_image_f32 * make_clip_image_f32();
-bool clip_image_load_from_file(const char * fname, struct clip_image_u8 * img);
+CLIP_API void clip_image_u8_free(clip_image_u8 * img);
+CLIP_API void clip_image_f32_free(clip_image_f32 * img);
+CLIP_API bool clip_image_load_from_file(const char * fname, struct clip_image_u8 * img);
+/** interpret bytes as an image file with length bytes_length, and use the result to populate img */
+CLIP_API bool clip_image_load_from_bytes(const unsigned char * bytes, size_t bytes_length, struct clip_image_u8 * img);
+
bool clip_image_preprocess(const struct clip_ctx * ctx, const struct clip_image_u8 * img, struct clip_image_f32 * res, const bool pad2square);
bool clip_image_encode(const struct clip_ctx * ctx, const int n_threads, struct clip_image_f32 * img, float * vec);