audio-cpp-sys 0.9.0

audio.cpp(ggml 音频推理框架)的底层绑定
Documentation
// docs.rs 预生成绑定(`bindings.docsrs.rs`)。
//
// 内容等价于 `build.rs::generate_bindings` 用 bindgen 0.72.1 从 `capi.h`
// 生成的 `OUT_DIR/bindings.rs`(allowlist `audiocpp_.*`,`derive_partialeq`)。
// 用途:docs.rs 沙箱无网络,且 crates.io 包不含 `audio.cpp` 子模块源码,
// 既做不了 CMake 构建也跑不了 bindgen(缺上游头文件);build.rs 检测到
// `DOCS_RS=1` 时跳过本地构建、直接把本文件拷入 OUT_DIR(rustdoc 只需类型
// 声明、无需链接)。本文件随包发布(见 Cargo.toml `include`)。
//
// 重新生成(改 `capi.h` 后必须同步):本地完整构建一次,把对应
// `target/debug/build/audio-cpp-sys-*/out/bindings.rs` 拷回本文件即可
// (各 feature 组合产物应一致;capi.h 只含标准 C 类型,与平台无关)。
//
// 注意:本文件不是手写 FFI 声明,勿直接编辑。

/* automatically generated by rust-bindgen 0.72.1 */

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct audiocpp_registry {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct audiocpp_model {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct audiocpp_session {
    _unused: [u8; 0],
}
unsafe extern "C" {
    pub fn audiocpp_last_error() -> *const ::std::os::raw::c_char;
}
unsafe extern "C" {
    pub fn audiocpp_free_string(s: *mut ::std::os::raw::c_char);
}
unsafe extern "C" {
    pub fn audiocpp_registry_default() -> *mut audiocpp_registry;
}
unsafe extern "C" {
    pub fn audiocpp_registry_families_json(
        reg: *const audiocpp_registry,
        out_json: *mut *mut ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_registry_loaders_json(
        reg: *const audiocpp_registry,
        out_json: *mut *mut ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_registry_devices_json(
        out_json: *mut *mut ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_registry_supports_family(
        reg: *const audiocpp_registry,
        family: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_registry_inspect_json(
        reg: *const audiocpp_registry,
        model_path: *const ::std::os::raw::c_char,
        out_json: *mut *mut ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_registry_load(
        reg: *const audiocpp_registry,
        model_path: *const ::std::os::raw::c_char,
        family_hint: *const ::std::os::raw::c_char,
        load_options_json: *const ::std::os::raw::c_char,
    ) -> *mut audiocpp_model;
}
unsafe extern "C" {
    pub fn audiocpp_registry_free(reg: *mut audiocpp_registry);
}
unsafe extern "C" {
    pub fn audiocpp_model_metadata_json(
        model: *const audiocpp_model,
        out_json: *mut *mut ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_model_capabilities_json(
        model: *const audiocpp_model,
        out_json: *mut *mut ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_model_create_task_session(
        model: *const audiocpp_model,
        task: *const ::std::os::raw::c_char,
        mode: *const ::std::os::raw::c_char,
        backend: *const ::std::os::raw::c_char,
        device: ::std::os::raw::c_int,
        threads: ::std::os::raw::c_int,
        session_options_json: *const ::std::os::raw::c_char,
    ) -> *mut audiocpp_session;
}
unsafe extern "C" {
    pub fn audiocpp_model_free(model: *mut audiocpp_model);
}
unsafe extern "C" {
    pub fn audiocpp_session_free(session: *mut audiocpp_session);
}
unsafe extern "C" {
    pub fn audiocpp_session_family(session: *mut audiocpp_session)
    -> *const ::std::os::raw::c_char;
}
unsafe extern "C" {
    pub fn audiocpp_session_task_kind(
        session: *mut audiocpp_session,
    ) -> *const ::std::os::raw::c_char;
}
unsafe extern "C" {
    pub fn audiocpp_session_run_mode(
        session: *mut audiocpp_session,
    ) -> *const ::std::os::raw::c_char;
}
unsafe extern "C" {
    pub fn audiocpp_session_streaming_policy_json(
        session: *mut audiocpp_session,
        out_json: *mut *mut ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_session_prepare(
        session: *mut audiocpp_session,
        request_json: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_session_run_offline(
        session: *mut audiocpp_session,
        request_json: *const ::std::os::raw::c_char,
        out_json: *mut *mut ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
pub type audiocpp_stream_event_cb = ::std::option::Option<
    unsafe extern "C" fn(
        user_data: *mut ::std::os::raw::c_void,
        event_json: *const ::std::os::raw::c_char,
        is_final: ::std::os::raw::c_int,
    ),
>;
unsafe extern "C" {
    pub fn audiocpp_session_set_event_sink(
        session: *mut audiocpp_session,
        cb: audiocpp_stream_event_cb,
        user_data: *mut ::std::os::raw::c_void,
    );
}
unsafe extern "C" {
    pub fn audiocpp_session_start(
        session: *mut audiocpp_session,
        request_json: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_session_process_audio(
        session: *mut audiocpp_session,
        samples: *const f32,
        count: usize,
        sample_rate: ::std::os::raw::c_int,
        channels: ::std::os::raw::c_int,
        start_sample: i64,
        out_event_json: *mut *mut ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_session_finish(
        session: *mut audiocpp_session,
        out_json: *mut *mut ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_session_reset(session: *mut audiocpp_session) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_audio_load_wav(
        path: *const ::std::os::raw::c_char,
        sample_rate: *mut ::std::os::raw::c_int,
        channels: *mut ::std::os::raw::c_int,
        count: *mut usize,
        samples: *mut *mut f32,
    ) -> ::std::os::raw::c_int;
}
unsafe extern "C" {
    pub fn audiocpp_audio_free(samples: *mut f32);
}