#![allow(non_camel_case_types)]
#![allow(clippy::missing_safety_doc)]
use std::os::raw::{c_char, c_int, c_void};
pub type adamo_protocol_t = u32;
pub const ADAMO_PROTOCOL_UDP: adamo_protocol_t = 0;
pub const ADAMO_PROTOCOL_QUIC: adamo_protocol_t = 1;
pub const ADAMO_PROTOCOL_TCP: adamo_protocol_t = 2;
#[repr(C)]
pub struct adamo_session_t {
_priv: [u8; 0],
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
#[repr(C)]
pub struct adamo_publisher_t {
_priv: [u8; 0],
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
#[repr(C)]
pub struct adamo_subscriber_t {
_priv: [u8; 0],
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
#[repr(C)]
pub struct adamo_cb_sub_t {
_priv: [u8; 0],
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
#[repr(C)]
pub struct adamo_robot_t {
_priv: [u8; 0],
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
#[repr(C)]
pub struct adamo_video_track_t {
_priv: [u8; 0],
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
#[repr(C)]
pub struct adamo_sample_t {
pub key: *mut c_char,
pub payload: *mut u8,
pub payload_len: usize,
pub is_delete: i32,
}
pub type adamo_sample_cb_t =
Option<unsafe extern "C" fn(sample: *const adamo_sample_t, user: *mut c_void)>;
#[cfg(not(docsrs))]
unsafe extern "C" {
pub fn adamo_last_error() -> *const c_char;
pub fn adamo_sample_free(sample: *mut adamo_sample_t);
pub fn adamo_open(api_key: *const c_char, protocol: adamo_protocol_t) -> *mut adamo_session_t;
pub fn adamo_session_free(sess: *mut adamo_session_t);
pub fn adamo_session_org(sess: *const adamo_session_t) -> *const c_char;
pub fn adamo_session_org_len(sess: *const adamo_session_t) -> usize;
pub fn adamo_put(
sess: *const adamo_session_t,
key: *const c_char,
payload: *const u8,
payload_len: usize,
priority: u8,
express: i32,
) -> i32;
pub fn adamo_publisher(
sess: *const adamo_session_t,
key: *const c_char,
priority: u8,
express: i32,
reliable: i32,
) -> *mut adamo_publisher_t;
pub fn adamo_publisher_put(
pub_: *const adamo_publisher_t,
payload: *const u8,
payload_len: usize,
) -> i32;
pub fn adamo_publisher_free(pub_: *mut adamo_publisher_t);
pub fn adamo_subscribe(
sess: *const adamo_session_t,
key: *const c_char,
) -> *mut adamo_subscriber_t;
pub fn adamo_sub_recv(
sub: *const adamo_subscriber_t,
timeout_ms: u64,
) -> *mut adamo_sample_t;
pub fn adamo_sub_try_recv(sub: *const adamo_subscriber_t) -> *mut adamo_sample_t;
pub fn adamo_sub_free(sub: *mut adamo_subscriber_t);
pub fn adamo_subscribe_cb(
sess: *const adamo_session_t,
key: *const c_char,
cb: adamo_sample_cb_t,
user: *mut c_void,
) -> *mut adamo_cb_sub_t;
pub fn adamo_cb_sub_free(sub: *mut adamo_cb_sub_t);
pub fn adamo_robot_new(
api_key: *const c_char,
name: *const c_char,
protocol: adamo_protocol_t,
) -> *mut adamo_robot_t;
pub fn adamo_robot_video(
robot: *mut adamo_robot_t,
name: *const c_char,
width: u32,
height: u32,
pixel_format: *const c_char,
fps: u32,
bitrate_kbps: u32,
) -> *mut adamo_video_track_t;
pub fn adamo_robot_attach_video_v4l2(
robot: *mut adamo_robot_t,
name: *const c_char,
device: *const c_char,
width: u32,
height: u32,
fps: u32,
bitrate_kbps: u32,
) -> i32;
pub fn adamo_robot_attach_video_gst(
robot: *mut adamo_robot_t,
name: *const c_char,
pipeline: *const c_char,
width: u32,
height: u32,
fps: u32,
bitrate_kbps: u32,
) -> i32;
pub fn adamo_video_track_send(
track: *mut adamo_video_track_t,
payload: *const u8,
payload_len: usize,
) -> i32;
pub fn adamo_video_track_free(track: *mut adamo_video_track_t);
pub fn adamo_robot_run(robot: *mut adamo_robot_t) -> i32;
pub fn adamo_robot_free(robot: *mut adamo_robot_t);
pub fn adamo_detect_encoder() -> *const c_char;
pub fn adamo_fabric_now_us() -> u64;
pub fn adamo_fabric_synced() -> i32;
}
#[doc(hidden)]
pub const _IMPORTS: (Option<c_int>, Option<*mut c_void>) = (None, None);