Skip to main content

llama_cpp_bindings/mtmd/
mtmd_context_params.rs

1use std::ffi::{CStr, CString};
2
3#[derive(Debug, Clone)]
4pub struct MtmdContextParams {
5    pub use_gpu: bool,
6    pub print_timings: bool,
7    pub n_threads: i32,
8    pub media_marker: CString,
9}
10
11impl Default for MtmdContextParams {
12    fn default() -> Self {
13        unsafe { llama_cpp_bindings_sys::mtmd_context_params_default() }.into()
14    }
15}
16
17impl From<&MtmdContextParams> for llama_cpp_bindings_sys::mtmd_context_params {
18    fn from(params: &MtmdContextParams) -> Self {
19        let mut context = unsafe { llama_cpp_bindings_sys::mtmd_context_params_default() };
20        let MtmdContextParams {
21            use_gpu,
22            print_timings,
23            n_threads,
24            media_marker,
25        } = params;
26
27        context.use_gpu = *use_gpu;
28        context.print_timings = *print_timings;
29        context.n_threads = *n_threads;
30        context.media_marker = media_marker.as_ptr();
31
32        context
33    }
34}
35
36impl From<llama_cpp_bindings_sys::mtmd_context_params> for MtmdContextParams {
37    fn from(params: llama_cpp_bindings_sys::mtmd_context_params) -> Self {
38        Self {
39            use_gpu: params.use_gpu,
40            print_timings: params.print_timings,
41            n_threads: params.n_threads,
42            media_marker: unsafe { CStr::from_ptr(params.media_marker) }.to_owned(),
43        }
44    }
45}