|
| 1 | +#include <stdio.h> |
| 2 | +#include <assert.h> |
| 3 | + |
| 4 | +#define MTMD_TEST |
| 5 | +#include "mtmd.h" |
| 6 | + |
| 7 | +int main(void) { |
| 8 | + printf("\n\nTesting libmtmd C API...\n"); |
| 9 | + printf("--------\n\n"); |
| 10 | + |
| 11 | + struct mtmd_context_params params = mtmd_context_params_default(); |
| 12 | + printf("Default image marker: %s\n", params.image_marker); |
| 13 | + |
| 14 | + mtmd_input_chunks * chunks = mtmd_test_create_input_chunks(); |
| 15 | + |
| 16 | + if (!chunks) { |
| 17 | + fprintf(stderr, "Failed to create input chunks\n"); |
| 18 | + return 1; |
| 19 | + } |
| 20 | + |
| 21 | + size_t n_chunks = mtmd_input_chunks_size(chunks); |
| 22 | + printf("Number of chunks: %zu\n", n_chunks); |
| 23 | + assert(n_chunks > 0); |
| 24 | + |
| 25 | + for (size_t i = 0; i < n_chunks; i++) { |
| 26 | + mtmd_input_chunk * chunk = mtmd_input_chunks_get(chunks, i); |
| 27 | + assert(chunk != NULL); |
| 28 | + enum mtmd_input_chunk_type type = mtmd_input_chunk_get_type(chunk); |
| 29 | + printf("Chunk %zu type: %d\n", i, type); |
| 30 | + |
| 31 | + if (type == MTMD_INPUT_CHUNK_TYPE_TEXT) { |
| 32 | + size_t n_tokens; |
| 33 | + const llama_token * tokens = mtmd_input_chunk_get_tokens_text(chunk, &n_tokens); |
| 34 | + printf(" Text chunk with %zu tokens\n", n_tokens); |
| 35 | + assert(tokens != NULL); |
| 36 | + assert(n_tokens > 0); |
| 37 | + for (size_t j = 0; j < n_tokens; j++) { |
| 38 | + assert(tokens[j] >= 0); |
| 39 | + printf(" > Token %zu: %d\n", j, tokens[j]); |
| 40 | + } |
| 41 | + |
| 42 | + } else if (type == MTMD_INPUT_CHUNK_TYPE_IMAGE) { |
| 43 | + const mtmd_image_tokens * image_tokens = mtmd_input_chunk_get_tokens_image(chunk); |
| 44 | + size_t n_tokens = mtmd_image_tokens_get_n_tokens(image_tokens); |
| 45 | + size_t nx = mtmd_image_tokens_get_nx(image_tokens); |
| 46 | + size_t ny = mtmd_image_tokens_get_ny(image_tokens); |
| 47 | + const char * id = mtmd_image_tokens_get_id(image_tokens); |
| 48 | + assert(n_tokens > 0); |
| 49 | + assert(nx > 0); |
| 50 | + assert(ny > 0); |
| 51 | + assert(id != NULL); |
| 52 | + printf(" Image chunk with %zu tokens\n", n_tokens); |
| 53 | + printf(" Image size: %zu x %zu\n", nx, ny); |
| 54 | + printf(" Image ID: %s\n", id); |
| 55 | + } |
| 56 | + } |
| 57 | + |
| 58 | + printf("\n\nDONE: test libmtmd C API...\n"); |
| 59 | + |
| 60 | + return 0; |
| 61 | +} |
0 commit comments