#![doc = include_str!("../README.md")]
#![cfg_attr(docsrs, feature(doc_cfg))]
use aic_sdk_sys::{aic_get_compatible_model_version, aic_get_sdk_version, aic_set_sdk_wrapper_id};
use std::ffi::CStr;
#[cfg(feature = "runtime-linking")]
use std::path::Path;
mod error;
mod model;
mod processor;
#[cfg(feature = "async")]
#[cfg_attr(docsrs, doc(cfg(feature = "async")))]
mod processor_async;
mod vad;
pub use error::*;
pub use model::*;
pub use processor::*;
#[cfg(feature = "async")]
#[cfg_attr(docsrs, doc(cfg(feature = "async")))]
pub use processor_async::*;
pub use vad::*;
#[cfg(feature = "runtime-linking")]
#[cfg_attr(docsrs, doc(cfg(feature = "runtime-linking")))]
pub use aic_sdk_sys::DynamicLoadingError;
#[cfg(feature = "runtime-linking")]
#[cfg_attr(docsrs, doc(cfg(feature = "runtime-linking")))]
pub unsafe fn load_library<P: AsRef<Path>>(path: P) -> Result<(), DynamicLoadingError> {
unsafe { aic_sdk_sys::load_library(path) }
}
#[cfg(feature = "runtime-linking")]
#[cfg_attr(docsrs, doc(cfg(feature = "runtime-linking")))]
pub fn is_library_loaded() -> bool {
aic_sdk_sys::is_library_loaded()
}
pub fn get_sdk_version() -> &'static str {
let version_ptr = unsafe { aic_get_sdk_version() };
unsafe { CStr::from_ptr(version_ptr).to_str().unwrap_or("unknown") }
}
pub fn get_compatible_model_version() -> u32 {
unsafe { aic_get_compatible_model_version() }
}
pub unsafe fn set_sdk_id(id: u32) {
unsafe { aic_set_sdk_wrapper_id(id) }
}