@fugood/llama.node 0.3.17 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +3 -1
- package/bin/darwin/arm64/llama-node.node +0 -0
- package/bin/darwin/x64/llama-node.node +0 -0
- package/bin/linux/arm64/llama-node.node +0 -0
- package/bin/linux/x64/llama-node.node +0 -0
- package/bin/linux-cuda/arm64/llama-node.node +0 -0
- package/bin/linux-cuda/x64/llama-node.node +0 -0
- package/bin/linux-vulkan/arm64/llama-node.node +0 -0
- package/bin/linux-vulkan/x64/llama-node.node +0 -0
- package/bin/win32/arm64/llama-node.node +0 -0
- package/bin/win32/arm64/node.lib +0 -0
- package/bin/win32/x64/llama-node.node +0 -0
- package/bin/win32/x64/node.lib +0 -0
- package/bin/win32-vulkan/arm64/llama-node.node +0 -0
- package/bin/win32-vulkan/arm64/node.lib +0 -0
- package/bin/win32-vulkan/x64/llama-node.node +0 -0
- package/bin/win32-vulkan/x64/node.lib +0 -0
- package/lib/binding.ts +39 -2
- package/lib/index.js +132 -1
- package/lib/index.ts +203 -3
- package/package.json +2 -1
- package/src/EmbeddingWorker.cpp +1 -1
- package/src/LlamaCompletionWorker.cpp +366 -19
- package/src/LlamaCompletionWorker.h +30 -10
- package/src/LlamaContext.cpp +213 -5
- package/src/LlamaContext.h +12 -0
- package/src/common.hpp +15 -0
- package/src/llama.cpp/.github/workflows/build-linux-cross.yml +133 -24
- package/src/llama.cpp/.github/workflows/build.yml +41 -762
- package/src/llama.cpp/.github/workflows/docker.yml +5 -2
- package/src/llama.cpp/.github/workflows/release.yml +716 -0
- package/src/llama.cpp/.github/workflows/server.yml +12 -12
- package/src/llama.cpp/CMakeLists.txt +5 -17
- package/src/llama.cpp/cmake/build-info.cmake +8 -2
- package/src/llama.cpp/cmake/x64-windows-llvm.cmake +0 -6
- package/src/llama.cpp/common/CMakeLists.txt +31 -3
- package/src/llama.cpp/common/arg.cpp +48 -29
- package/src/llama.cpp/common/chat.cpp +128 -106
- package/src/llama.cpp/common/chat.h +2 -0
- package/src/llama.cpp/common/common.cpp +37 -1
- package/src/llama.cpp/common/common.h +18 -9
- package/src/llama.cpp/common/llguidance.cpp +1 -0
- package/src/llama.cpp/common/minja/chat-template.hpp +9 -5
- package/src/llama.cpp/common/minja/minja.hpp +69 -36
- package/src/llama.cpp/common/regex-partial.cpp +204 -0
- package/src/llama.cpp/common/regex-partial.h +56 -0
- package/src/llama.cpp/common/sampling.cpp +57 -50
- package/src/llama.cpp/examples/CMakeLists.txt +2 -23
- package/src/llama.cpp/examples/embedding/embedding.cpp +2 -11
- package/src/llama.cpp/examples/parallel/parallel.cpp +86 -14
- package/src/llama.cpp/examples/training/CMakeLists.txt +5 -0
- package/src/llama.cpp/examples/training/finetune.cpp +96 -0
- package/src/llama.cpp/ggml/CMakeLists.txt +27 -0
- package/src/llama.cpp/ggml/include/ggml-backend.h +4 -4
- package/src/llama.cpp/ggml/include/ggml-cpp.h +1 -1
- package/src/llama.cpp/ggml/include/ggml-opt.h +47 -28
- package/src/llama.cpp/ggml/include/ggml.h +10 -7
- package/src/llama.cpp/ggml/src/CMakeLists.txt +1 -1
- package/src/llama.cpp/ggml/src/ggml-alloc.c +4 -1
- package/src/llama.cpp/ggml/src/ggml-backend.cpp +9 -5
- package/src/llama.cpp/ggml/src/ggml-cpu/CMakeLists.txt +20 -13
- package/src/llama.cpp/ggml/src/ggml-cpu/ggml-cpu-aarch64.cpp +0 -2
- package/src/llama.cpp/ggml/src/ggml-cpu/ggml-cpu-quants.c +306 -6
- package/src/llama.cpp/ggml/src/ggml-cpu/ggml-cpu.c +4 -13
- package/src/llama.cpp/ggml/src/ggml-cpu/ggml-cpu.cpp +29 -16
- package/src/llama.cpp/ggml/src/ggml-cpu/kleidiai/kernels.cpp +88 -5
- package/src/llama.cpp/ggml/src/ggml-cpu/kleidiai/kernels.h +47 -12
- package/src/llama.cpp/ggml/src/ggml-cpu/kleidiai/kleidiai.cpp +264 -69
- package/src/llama.cpp/ggml/src/ggml-cpu/llamafile/sgemm.cpp +501 -0
- package/src/llama.cpp/ggml/src/ggml-cpu/ops.cpp +0 -13
- package/src/llama.cpp/ggml/src/ggml-cpu/vec.cpp +0 -6
- package/src/llama.cpp/ggml/src/ggml-cuda/CMakeLists.txt +23 -4
- package/src/llama.cpp/ggml/src/ggml-metal/ggml-metal-impl.h +36 -11
- package/src/llama.cpp/ggml/src/ggml-opencl/ggml-opencl.cpp +0 -2
- package/src/llama.cpp/ggml/src/ggml-opt.cpp +368 -190
- package/src/llama.cpp/ggml/src/ggml-quants.c +0 -6
- package/src/llama.cpp/ggml/src/ggml-rpc/ggml-rpc.cpp +41 -27
- package/src/llama.cpp/ggml/src/ggml-sycl/CMakeLists.txt +29 -23
- package/src/llama.cpp/ggml/src/ggml-sycl/backend.hpp +9 -8
- package/src/llama.cpp/ggml/src/ggml-sycl/binbcast.cpp +121 -232
- package/src/llama.cpp/ggml/src/ggml-sycl/common.hpp +7 -15
- package/src/llama.cpp/ggml/src/ggml-sycl/convert.cpp +72 -25
- package/src/llama.cpp/ggml/src/ggml-sycl/convert.hpp +14 -7
- package/src/llama.cpp/ggml/src/ggml-sycl/dequantize.hpp +59 -21
- package/src/llama.cpp/ggml/src/ggml-sycl/dmmv.cpp +7 -1
- package/src/llama.cpp/ggml/src/ggml-sycl/element_wise.cpp +0 -23
- package/src/llama.cpp/ggml/src/ggml-sycl/gemm.hpp +37 -8
- package/src/llama.cpp/ggml/src/ggml-sycl/ggml-sycl.cpp +338 -166
- package/src/llama.cpp/ggml/src/ggml-sycl/mmvq.cpp +185 -89
- package/src/llama.cpp/ggml/src/ggml-sycl/quants.hpp +83 -0
- package/src/llama.cpp/ggml/src/ggml-sycl/vecdotq.hpp +128 -53
- package/src/llama.cpp/ggml/src/ggml-vulkan/CMakeLists.txt +81 -70
- package/src/llama.cpp/ggml/src/ggml-vulkan/ggml-vulkan.cpp +657 -193
- package/src/llama.cpp/ggml/src/ggml-vulkan/vulkan-shaders/CMakeLists.txt +20 -0
- package/src/llama.cpp/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp +123 -29
- package/src/llama.cpp/ggml/src/ggml.c +29 -20
- package/src/llama.cpp/ggml/src/gguf.cpp +33 -33
- package/src/llama.cpp/include/llama.h +52 -11
- package/src/llama.cpp/requirements/requirements-all.txt +3 -3
- package/src/llama.cpp/scripts/xxd.cmake +1 -1
- package/src/llama.cpp/src/CMakeLists.txt +1 -0
- package/src/llama.cpp/src/llama-adapter.cpp +6 -0
- package/src/llama.cpp/src/llama-arch.cpp +3 -0
- package/src/llama.cpp/src/llama-batch.cpp +5 -1
- package/src/llama.cpp/src/llama-batch.h +2 -1
- package/src/llama.cpp/src/llama-chat.cpp +17 -7
- package/src/llama.cpp/src/llama-chat.h +1 -0
- package/src/llama.cpp/src/llama-context.cpp +389 -501
- package/src/llama.cpp/src/llama-context.h +44 -32
- package/src/llama.cpp/src/llama-cparams.h +1 -0
- package/src/llama.cpp/src/llama-graph.cpp +20 -38
- package/src/llama.cpp/src/llama-graph.h +12 -8
- package/src/llama.cpp/src/llama-kv-cache.cpp +1503 -389
- package/src/llama.cpp/src/llama-kv-cache.h +271 -85
- package/src/llama.cpp/src/llama-memory.h +11 -1
- package/src/llama.cpp/src/llama-model-loader.cpp +24 -15
- package/src/llama.cpp/src/llama-model-saver.cpp +281 -0
- package/src/llama.cpp/src/llama-model-saver.h +37 -0
- package/src/llama.cpp/src/llama-model.cpp +316 -69
- package/src/llama.cpp/src/llama-model.h +8 -1
- package/src/llama.cpp/src/llama-quant.cpp +15 -13
- package/src/llama.cpp/src/llama-sampling.cpp +18 -6
- package/src/llama.cpp/src/llama-vocab.cpp +42 -4
- package/src/llama.cpp/src/llama-vocab.h +6 -0
- package/src/llama.cpp/src/llama.cpp +14 -0
- package/src/llama.cpp/tests/CMakeLists.txt +10 -2
- package/src/llama.cpp/tests/test-backend-ops.cpp +107 -47
- package/src/llama.cpp/tests/test-chat-template.cpp +10 -11
- package/src/llama.cpp/tests/test-chat.cpp +3 -1
- package/src/llama.cpp/tests/test-mtmd-c-api.c +63 -0
- package/src/llama.cpp/tests/test-opt.cpp +33 -21
- package/src/llama.cpp/tests/test-regex-partial.cpp +288 -0
- package/src/llama.cpp/tests/test-sampling.cpp +1 -1
- package/src/llama.cpp/tools/CMakeLists.txt +39 -0
- package/src/llama.cpp/{examples → tools}/batched-bench/batched-bench.cpp +2 -2
- package/src/llama.cpp/{examples → tools}/imatrix/imatrix.cpp +11 -9
- package/src/llama.cpp/{examples → tools}/llama-bench/llama-bench.cpp +495 -348
- package/src/llama.cpp/{examples → tools}/main/main.cpp +6 -9
- package/src/llama.cpp/{examples/llava → tools/mtmd}/CMakeLists.txt +1 -35
- package/src/llama.cpp/{examples/llava → tools/mtmd}/clip-impl.h +25 -5
- package/src/llama.cpp/{examples/llava → tools/mtmd}/clip.cpp +1440 -1349
- package/src/llama.cpp/tools/mtmd/clip.h +99 -0
- package/src/llama.cpp/{examples/llava → tools/mtmd}/mtmd-cli.cpp +70 -44
- package/src/llama.cpp/tools/mtmd/mtmd-helper.cpp +310 -0
- package/src/llama.cpp/{examples/llava → tools/mtmd}/mtmd.cpp +251 -281
- package/src/llama.cpp/tools/mtmd/mtmd.h +331 -0
- package/src/llama.cpp/{examples → tools}/perplexity/perplexity.cpp +4 -2
- package/src/llama.cpp/{examples → tools}/quantize/quantize.cpp +13 -76
- package/src/llama.cpp/{examples → tools}/rpc/rpc-server.cpp +70 -74
- package/src/llama.cpp/{examples → tools}/run/run.cpp +18 -4
- package/src/llama.cpp/{examples → tools}/server/CMakeLists.txt +2 -1
- package/src/llama.cpp/{examples → tools}/server/server.cpp +291 -76
- package/src/llama.cpp/{examples → tools}/server/utils.hpp +377 -5
- package/src/llama.cpp/cmake/arm64-windows-msvc.cmake +0 -6
- package/src/llama.cpp/examples/infill/CMakeLists.txt +0 -5
- package/src/llama.cpp/examples/infill/infill.cpp +0 -590
- package/src/llama.cpp/examples/llava/android/build_64.sh +0 -8
- package/src/llama.cpp/examples/llava/clip-quantize-cli.cpp +0 -59
- package/src/llama.cpp/examples/llava/clip.h +0 -135
- package/src/llama.cpp/examples/llava/llava.cpp +0 -586
- package/src/llama.cpp/examples/llava/llava.h +0 -49
- package/src/llama.cpp/examples/llava/mtmd.h +0 -168
- package/src/llama.cpp/examples/llava/qwen2vl-test.cpp +0 -636
- /package/src/llama.cpp/{examples → tools}/batched-bench/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/cvector-generator/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/cvector-generator/completions.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/cvector-generator/cvector-generator.cpp +0 -0
- /package/src/llama.cpp/{examples → tools}/cvector-generator/mean.hpp +0 -0
- /package/src/llama.cpp/{examples → tools}/cvector-generator/negative.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/cvector-generator/pca.hpp +0 -0
- /package/src/llama.cpp/{examples → tools}/cvector-generator/positive.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/export-lora/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/export-lora/export-lora.cpp +0 -0
- /package/src/llama.cpp/{examples → tools}/gguf-split/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/gguf-split/gguf-split.cpp +0 -0
- /package/src/llama.cpp/{examples → tools}/imatrix/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/llama-bench/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/main/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples/llava → tools/mtmd}/deprecation-warning.cpp +0 -0
- /package/src/llama.cpp/{examples/llava → tools/mtmd}/requirements.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/perplexity/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/quantize/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/rpc/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/run/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/run/linenoise.cpp/linenoise.cpp +0 -0
- /package/src/llama.cpp/{examples → tools}/run/linenoise.cpp/linenoise.h +0 -0
- /package/src/llama.cpp/{examples → tools}/server/bench/requirements.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/server/httplib.h +0 -0
- /package/src/llama.cpp/{examples → tools}/server/tests/requirements.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/tokenize/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/tokenize/tokenize.cpp +0 -0
- /package/src/llama.cpp/{examples → tools}/tts/CMakeLists.txt +0 -0
- /package/src/llama.cpp/{examples → tools}/tts/tts.cpp +0 -0
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
#ifndef MTMD_H
|
|
2
|
-
#define MTMD_H
|
|
3
|
-
|
|
4
|
-
#include "ggml.h"
|
|
5
|
-
#include "llama.h"
|
|
6
|
-
#include "clip.h"
|
|
7
|
-
|
|
8
|
-
#include <vector>
|
|
9
|
-
#include <cinttypes>
|
|
10
|
-
#include <memory>
|
|
11
|
-
|
|
12
|
-
#ifdef LLAMA_SHARED
|
|
13
|
-
# if defined(_WIN32) && !defined(__MINGW32__)
|
|
14
|
-
# ifdef LLAMA_BUILD
|
|
15
|
-
# define MTMD_API __declspec(dllexport)
|
|
16
|
-
# else
|
|
17
|
-
# define MTMD_API __declspec(dllimport)
|
|
18
|
-
# endif
|
|
19
|
-
# else
|
|
20
|
-
# define MTMD_API __attribute__ ((visibility ("default")))
|
|
21
|
-
# endif
|
|
22
|
-
#else
|
|
23
|
-
# define MTMD_API
|
|
24
|
-
#endif
|
|
25
|
-
|
|
26
|
-
#ifdef __cplusplus
|
|
27
|
-
|
|
28
|
-
enum mtmd_input_chunk_type {
|
|
29
|
-
MTMD_INPUT_CHUNK_TYPE_TEXT,
|
|
30
|
-
MTMD_INPUT_CHUNK_TYPE_IMAGE,
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
struct mtmd_context;
|
|
34
|
-
struct mtmd_image_tokens;
|
|
35
|
-
|
|
36
|
-
// represents raw image data, layout is RGBRGBRGB...
|
|
37
|
-
// length of data must be nx * ny * 3
|
|
38
|
-
struct mtmd_bitmap {
|
|
39
|
-
uint32_t nx;
|
|
40
|
-
uint32_t ny;
|
|
41
|
-
std::vector<unsigned char> data;
|
|
42
|
-
std::string id; // optional user-defined id, for ex: can be set to image hash, useful for KV cache tracking
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
struct mtmd_image_tokens_deleter {
|
|
46
|
-
void operator()(mtmd_image_tokens * val); // forward declaration
|
|
47
|
-
};
|
|
48
|
-
using mtmd_image_tokens_ptr = std::unique_ptr<mtmd_image_tokens, mtmd_image_tokens_deleter>;
|
|
49
|
-
|
|
50
|
-
struct mtmd_input_chunk {
|
|
51
|
-
mtmd_input_chunk_type type;
|
|
52
|
-
std::vector<llama_token> tokens_text;
|
|
53
|
-
mtmd_image_tokens_ptr tokens_image;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
using mtmd_input_chunks = std::vector<mtmd_input_chunk>;
|
|
57
|
-
|
|
58
|
-
struct mtmd_context_params {
|
|
59
|
-
bool use_gpu = true;
|
|
60
|
-
bool print_timings = true;
|
|
61
|
-
int n_threads = 4;
|
|
62
|
-
enum ggml_log_level verbosity = GGML_LOG_LEVEL_INFO;
|
|
63
|
-
const char * image_marker = "<__image__>";
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
struct mtmd_input_text {
|
|
67
|
-
std::string text;
|
|
68
|
-
bool add_special;
|
|
69
|
-
bool parse_special;
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
// initialize the mtmd context
|
|
73
|
-
// return nullptr on failure
|
|
74
|
-
MTMD_API mtmd_context * mtmd_init_from_file(const char * mmproj_fname,
|
|
75
|
-
const llama_model * text_model,
|
|
76
|
-
const mtmd_context_params ctx_params);
|
|
77
|
-
|
|
78
|
-
MTMD_API void mtmd_free(mtmd_context * ctx);
|
|
79
|
-
|
|
80
|
-
// tokenize an input text prompt and an image
|
|
81
|
-
// the prompt must have the input image marker (default: "<__image__>") in it
|
|
82
|
-
// the marker will be replaced with the image tokens
|
|
83
|
-
// for example:
|
|
84
|
-
// "here is an image: <__image__>\ndescribe it in detail."
|
|
85
|
-
// this will gives 3 chunks:
|
|
86
|
-
// 1. "here is an image: <start_of_image>"
|
|
87
|
-
// 2. (image tokens)
|
|
88
|
-
// 3. "<end_of_image>\ndescribe it in detail."
|
|
89
|
-
// number of bitmaps must be equal to the number of image markers in the prompt
|
|
90
|
-
// this function is thread-safe (shared ctx)
|
|
91
|
-
// return values:
|
|
92
|
-
// 0 on success
|
|
93
|
-
// 1 on number of images not matching the number of markers
|
|
94
|
-
// 2 on image preprocessing error
|
|
95
|
-
MTMD_API int32_t mtmd_tokenize(mtmd_context * ctx,
|
|
96
|
-
std::vector<mtmd_input_chunk> & output,
|
|
97
|
-
const mtmd_input_text & text,
|
|
98
|
-
const std::vector<mtmd_bitmap> & bitmaps);
|
|
99
|
-
|
|
100
|
-
// access mtmd_image_tokens
|
|
101
|
-
MTMD_API size_t mtmd_image_tokens_get_n_tokens(const mtmd_image_tokens * image_tokens);
|
|
102
|
-
MTMD_API size_t mtmd_image_tokens_get_nx(const mtmd_image_tokens * image_tokens);
|
|
103
|
-
MTMD_API size_t mtmd_image_tokens_get_ny(const mtmd_image_tokens * image_tokens);
|
|
104
|
-
MTMD_API std::string mtmd_image_tokens_get_id(const mtmd_image_tokens * image_tokens);
|
|
105
|
-
MTMD_API llama_pos mtmd_image_tokens_get_n_pos(const mtmd_image_tokens * image_tokens); // number of temporal positions (always 1 for M-RoPE, n_tokens otherwise)
|
|
106
|
-
MTMD_API void mtmd_image_tokens_free(mtmd_image_tokens * image_tokens);
|
|
107
|
-
|
|
108
|
-
// returns 0 on success
|
|
109
|
-
MTMD_API int32_t mtmd_encode(mtmd_context * ctx,
|
|
110
|
-
const mtmd_image_tokens * image_tokens);
|
|
111
|
-
|
|
112
|
-
// get output embeddings from the last encode pass
|
|
113
|
-
MTMD_API float * mtmd_get_output_embd(mtmd_context * ctx);
|
|
114
|
-
|
|
115
|
-
// whether we need to set non-causal mask before llama_decode
|
|
116
|
-
MTMD_API bool mtmd_decode_use_non_causal(mtmd_context * ctx);
|
|
117
|
-
|
|
118
|
-
// whether the current model use M-RoPE for llama_decode
|
|
119
|
-
MTMD_API bool mtmd_decode_use_mrope(mtmd_context * ctx);
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
//
|
|
124
|
-
// helper functions (can be implemented based on other functions)
|
|
125
|
-
//
|
|
126
|
-
|
|
127
|
-
// helper to count the total number of tokens from a list of chunks, useful to keep track of KV cache
|
|
128
|
-
MTMD_API size_t mtmd_helper_get_n_tokens(mtmd_input_chunks & chunks);
|
|
129
|
-
|
|
130
|
-
// helper to count the total position of tokens from a list of chunks, useful to keep track of n_past
|
|
131
|
-
MTMD_API llama_pos mtmd_helper_get_n_pos(mtmd_input_chunks & chunks);
|
|
132
|
-
|
|
133
|
-
// helper function that automatically:
|
|
134
|
-
// 1. run llama_decode() on text chunks
|
|
135
|
-
// 2. run mtmd_encode() on image chunks, then mtmd_get_output_embd() and then llama_decode()
|
|
136
|
-
// if any of the mtmd_encode() or llama_decode() calls return non-zero, stop and forward the error
|
|
137
|
-
// otherwise, returns 0 on success
|
|
138
|
-
MTMD_API int32_t mtmd_helper_eval(mtmd_context * ctx,
|
|
139
|
-
llama_context * lctx,
|
|
140
|
-
mtmd_input_chunks & chunks,
|
|
141
|
-
llama_pos pos0,
|
|
142
|
-
llama_seq_id seq_id,
|
|
143
|
-
int32_t n_batch);
|
|
144
|
-
|
|
145
|
-
// helper function to construct a mtmd_bitmap from a file
|
|
146
|
-
// returns 0 on success
|
|
147
|
-
// this function is thread-safe
|
|
148
|
-
MTMD_API int32_t mtmd_helper_bitmap_init_from_file(const char * fname, mtmd_bitmap & output);
|
|
149
|
-
|
|
150
|
-
// helper function to construct a mtmd_bitmap from a buffer
|
|
151
|
-
// the buffer must be an image in format supported by stb_image (jpg, png, bmp, gif, etc.)
|
|
152
|
-
// returns 0 on success
|
|
153
|
-
// this function is thread-safe
|
|
154
|
-
MTMD_API int32_t mtmd_helper_bitmap_init_from_buf(const unsigned char * buf, size_t len, mtmd_bitmap & output);
|
|
155
|
-
|
|
156
|
-
// convenient unique_ptr wrappers
|
|
157
|
-
struct mtmd_context_deleter {
|
|
158
|
-
void operator()(mtmd_context * val) { mtmd_free(val); }
|
|
159
|
-
};
|
|
160
|
-
using mtmd_context_ptr = std::unique_ptr<mtmd_context, mtmd_context_deleter>;
|
|
161
|
-
|
|
162
|
-
#else
|
|
163
|
-
|
|
164
|
-
static_assert(false && "C header is not yet supported by this library");
|
|
165
|
-
|
|
166
|
-
#endif
|
|
167
|
-
|
|
168
|
-
#endif
|