1
0

test-mtmd-c-api.c 2.2 KB

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