diff --git a/tools/mtmd/mtmd-helper.cpp b/tools/mtmd/mtmd-helper.cpp index 77f9d58fe..dc2ab414e 100644 --- a/tools/mtmd/mtmd-helper.cpp +++ b/tools/mtmd/mtmd-helper.cpp @@ -369,11 +369,11 @@ static bool is_webp_file(const unsigned char * buf, size_t len) { } #ifdef MTMD_VIDEO -static mtmd_bitmap * decode_webp_with_ffmpeg(mtmd_context * mctx, const unsigned char * buf, size_t len, bool placeholder, +static mtmd_bitmap * decode_webp_with_ffmpeg(const mtmd_context * mctx, const unsigned char * buf, size_t len, bool placeholder, const mtmd_helper_video_init_params & params); #endif -mtmd_helper_bitmap_wrapper mtmd_helper_bitmap_init_from_buf(mtmd_context * ctx, const unsigned char * buf, size_t len, bool placeholder, +mtmd_helper_bitmap_wrapper mtmd_helper_bitmap_init_from_buf(const mtmd_context * ctx, const unsigned char * buf, size_t len, bool placeholder, mtmd_helper_init_opt opt) { // calculate the hash if needed std::string id; @@ -459,7 +459,7 @@ mtmd_helper_bitmap_wrapper mtmd_helper_bitmap_init_from_buf(mtmd_context * ctx, return {nullptr, nullptr}; } -mtmd_helper_bitmap_wrapper mtmd_helper_bitmap_init_from_file(mtmd_context * ctx, const char * fname, bool placeholder, +mtmd_helper_bitmap_wrapper mtmd_helper_bitmap_init_from_file(const mtmd_context * ctx, const char * fname, bool placeholder, mtmd_helper_init_opt opt) { #ifdef _WIN32 int wlen = MultiByteToWideChar(CP_UTF8, 0, fname, -1, NULL, 0); @@ -504,7 +504,7 @@ mtmd_helper_bitmap_wrapper mtmd_helper_bitmap_init_from_file(mtmd_context * ctx, return mtmd_helper_bitmap_init_from_buf(ctx, buf.data(), buf.size(), placeholder, opt); } -bool mtmd_helper_support_video(mtmd_context * ctx) { +bool mtmd_helper_support_video(const mtmd_context * ctx) { #ifdef MTMD_VIDEO return mtmd_support_vision(ctx); #else @@ -520,7 +520,7 @@ bool mtmd_helper_support_video(mtmd_context * ctx) { #ifdef MTMD_VIDEO struct mtmd_helper_video { - mtmd_context * mctx; + const mtmd_context * mctx; std::string path; std::vector input_buf; // non-empty when initialized from buffer std::string ffmpeg_bin; @@ -886,7 +886,7 @@ static std::string video_resolve_bin(const char * bin_dir, const char * name) { } #ifdef MTMD_VIDEO -static mtmd_bitmap * decode_webp_with_ffmpeg(mtmd_context * mctx, const unsigned char * buf, size_t len, bool placeholder, +static mtmd_bitmap * decode_webp_with_ffmpeg(const mtmd_context * mctx, const unsigned char * buf, size_t len, bool placeholder, const mtmd_helper_video_init_params & params) { mtmd_helper_video vctx; vctx.mctx = mctx; @@ -913,7 +913,7 @@ static mtmd_bitmap * decode_webp_with_ffmpeg(mtmd_context * mctx, const unsigned #endif mtmd_helper_video * mtmd_helper_video_init( - mtmd_context * mctx, + const mtmd_context * mctx, const char * path, mtmd_helper_video_init_params params) { #ifdef MTMD_VIDEO @@ -948,7 +948,7 @@ mtmd_helper_video * mtmd_helper_video_init( } mtmd_helper_video * mtmd_helper_video_init_from_buf( - mtmd_context * mctx, + const mtmd_context * mctx, const unsigned char * buf, size_t len, mtmd_helper_video_init_params params) { #ifdef MTMD_VIDEO @@ -1016,7 +1016,7 @@ int32_t mtmd_helper_video_read_next(mtmd_helper_video * ctx, #endif } -bool mtmd_helper_model_can_chat(llama_context * lctx, mtmd_context * mctx) { +bool mtmd_helper_model_can_chat(const llama_context * lctx, const mtmd_context * mctx) { if (!mctx) { return true; } diff --git a/tools/mtmd/mtmd-helper.h b/tools/mtmd/mtmd-helper.h index 772e0f091..10f2171c0 100644 --- a/tools/mtmd/mtmd-helper.h +++ b/tools/mtmd/mtmd-helper.h @@ -46,7 +46,7 @@ MTMD_API struct mtmd_helper_init_opt mtmd_helper_init_opt_default(void); MTMD_API void mtmd_helper_log_set(ggml_log_callback log_callback, void * user_data); // Returns true if this build includes video support (MTMD_VIDEO was ON at compile time). -MTMD_API bool mtmd_helper_support_video(mtmd_context * ctx); +MTMD_API bool mtmd_helper_support_video(const mtmd_context * ctx); struct mtmd_helper_bitmap_wrapper { mtmd_bitmap * bitmap; @@ -58,7 +58,7 @@ struct mtmd_helper_bitmap_wrapper { // returns nullptr on failure // this function is thread-safe MTMD_API struct mtmd_helper_bitmap_wrapper mtmd_helper_bitmap_init_from_file( - mtmd_context * ctx, + const mtmd_context * ctx, const char * fname, bool placeholder, struct mtmd_helper_init_opt opt); @@ -75,7 +75,7 @@ MTMD_API struct mtmd_helper_bitmap_wrapper mtmd_helper_bitmap_init_from_file( // returns nullptr on failure // this function is thread-safe MTMD_API struct mtmd_helper_bitmap_wrapper mtmd_helper_bitmap_init_from_buf( - mtmd_context * ctx, + const mtmd_context * ctx, const unsigned char * buf, size_t len, bool placeholder, struct mtmd_helper_init_opt opt); @@ -153,7 +153,7 @@ struct mtmd_helper_video_info { // returns NULL on failure (ffprobe not found, file unreadable, etc.) MTMD_API mtmd_helper_video * mtmd_helper_video_init( - struct mtmd_context * mctx, + const struct mtmd_context * mctx, const char * path, struct mtmd_helper_video_init_params params); @@ -162,7 +162,7 @@ MTMD_API mtmd_helper_video * mtmd_helper_video_init( // Note: pipe input is not seekable, so seeking will use output-side seeking // (ffmpeg decodes and discards frames up to the target position). MTMD_API mtmd_helper_video * mtmd_helper_video_init_from_buf( - struct mtmd_context * mctx, + const struct mtmd_context * mctx, const unsigned char * buf, size_t len, struct mtmd_helper_video_init_params params); MTMD_API void mtmd_helper_video_free(mtmd_helper_video * ctx); @@ -177,7 +177,7 @@ MTMD_API int32_t mtmd_helper_video_read_next(mtmd_helper_video * ctx, char ** out_text); // return true if model can be used for chat -MTMD_API bool mtmd_helper_model_can_chat(struct llama_context * lctx, struct mtmd_context * mctx); +MTMD_API bool mtmd_helper_model_can_chat(const struct llama_context * lctx, const struct mtmd_context * mctx); // // Audio generation helpers diff --git a/tools/mtmd/mtmd.cpp b/tools/mtmd/mtmd.cpp index a13b0556b..e7f5f114e 100644 --- a/tools/mtmd/mtmd.cpp +++ b/tools/mtmd/mtmd.cpp @@ -1117,7 +1117,7 @@ std::vector> mtmd_group_mergeable_bitmaps(std:: } struct mtmd_tokenizer { - mtmd_context * ctx; + const mtmd_context * ctx; std::string input_text; // note: can contain null bytes; do not use c_str() bool add_special; @@ -1140,9 +1140,9 @@ struct mtmd_tokenizer { } } - mtmd_tokenizer(mtmd_context * ctx, + mtmd_tokenizer(const mtmd_context * ctx, const mtmd_input_text * text, - const mtmd_bitmap ** bmps, + const mtmd_bitmap * const * bmps, size_t n_bitmaps) : ctx(ctx) { add_special = text->add_special; parse_special = text->parse_special; @@ -1177,8 +1177,8 @@ struct mtmd_tokenizer { expand_lazy_bitmaps(); } - mtmd_tokenizer(mtmd_context * ctx, - const mtmd_input_part ** input_parts, + mtmd_tokenizer(const mtmd_context * ctx, + const mtmd_input_part * const * input_parts, size_t n_parts, bool add_special) : ctx(ctx) { this->add_special = add_special; @@ -1733,10 +1733,10 @@ struct mtmd_tokenizer { } }; -int32_t mtmd_tokenize(mtmd_context * ctx, +int32_t mtmd_tokenize(const mtmd_context * ctx, mtmd_input_chunks * output, const mtmd_input_text * text, - const mtmd_bitmap ** bitmaps, + const mtmd_bitmap * const * bitmaps, size_t n_bitmaps) { try { mtmd_tokenizer tokenizer(ctx, text, bitmaps, n_bitmaps); @@ -1747,9 +1747,9 @@ int32_t mtmd_tokenize(mtmd_context * ctx, } } -int32_t mtmd_tokenize_from_parts(mtmd_context * ctx, +int32_t mtmd_tokenize_from_parts(const mtmd_context * ctx, mtmd_input_chunks * output, - const mtmd_input_part ** parts, + const mtmd_input_part * const * parts, size_t n_parts, bool add_special) { for (size_t i = 0; i < n_parts; i++) { @@ -2271,7 +2271,7 @@ void mtmd_bitmap_set_mergeable(mtmd_bitmap * bitmap, bool mergeable) { bitmap->mergeable = mergeable; } -mtmd_bitmap * mtmd_bitmap_init_lazy(mtmd_context * ctx, +mtmd_bitmap * mtmd_bitmap_init_lazy(const mtmd_context * ctx, const char * id, void * user_data, mtmd_bitmap_lazy_callback callback) { diff --git a/tools/mtmd/mtmd.h b/tools/mtmd/mtmd.h index 0c2f9886e..c2de26eee 100644 --- a/tools/mtmd/mtmd.h +++ b/tools/mtmd/mtmd.h @@ -211,7 +211,7 @@ typedef int(* mtmd_bitmap_lazy_callback)( mtmd_bitmap ** out_bitmap, char ** out_text); -MTMD_API mtmd_bitmap * mtmd_bitmap_init_lazy(mtmd_context * ctx, +MTMD_API mtmd_bitmap * mtmd_bitmap_init_lazy(const mtmd_context * ctx, const char * id, // usually set to file hash void * user_data, mtmd_bitmap_lazy_callback callback); @@ -299,10 +299,10 @@ MTMD_API struct mtmd_decoder_pos mtmd_image_tokens_get_decoder_pos(const mtmd_im // 0 on success // 1 on number of bitmaps not matching the number of markers // 2 on media preprocessing error -MTMD_API int32_t mtmd_tokenize(mtmd_context * ctx, +MTMD_API int32_t mtmd_tokenize(const mtmd_context * ctx, mtmd_input_chunks * output, const mtmd_input_text * text, - const mtmd_bitmap ** bitmaps, + const mtmd_bitmap * const * bitmaps, size_t n_bitmaps); // same as mtmd_tokenize(), but takes an array of mtmd_input_part @@ -311,9 +311,9 @@ MTMD_API int32_t mtmd_tokenize(mtmd_context * ctx, // - when you want to control parse_special for each text part // note: per-part add_special will be ignored // return 1 if a part has both text and bitmap set (or neither) -MTMD_API int32_t mtmd_tokenize_from_parts(mtmd_context * ctx, +MTMD_API int32_t mtmd_tokenize_from_parts(const mtmd_context * ctx, mtmd_input_chunks * output, - const mtmd_input_part ** parts, + const mtmd_input_part * const * parts, size_t n_parts, bool add_special);