use log::{debug, error, info, warn};
use whisper_rs_sys::ggml_log_level;
unsafe extern "C" fn whisper_cpp_log_trampoline(
level: ggml_log_level,
text: *const std::os::raw::c_char,
_: *mut std::os::raw::c_void, ) {
if text.is_null() {
error!("whisper_cpp_log_trampoline: text is nullptr");
}
let log_str = unsafe { std::ffi::CStr::from_ptr(text) }.to_string_lossy();
let trimmed = log_str.trim();
match level {
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_DEBUG => debug!("{}", trimmed),
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_INFO => info!("{}", trimmed),
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_WARN => warn!("{}", trimmed),
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_ERROR => error!("{}", trimmed),
_ => {
warn!(
"whisper_cpp_log_trampoline: unknown log level {}: message: {}",
level, trimmed
)
}
}
}
pub fn install_whisper_log_trampoline() {
crate::LOG_TRAMPOLINE_INSTALL.call_once(|| unsafe {
whisper_rs_sys::whisper_log_set(Some(whisper_cpp_log_trampoline), std::ptr::null_mut());
});
}