现在来了解一下视频输入输出的相关API,如何通过rust接Axera的视频输入输出,以便将内容读取,然后给模型做分析,后面做结果输出。
主要API以及调用流程,请参考文档《24 - AX VO API 文档.pdf》和《16 - AX VIN 开发参考.pdf》,主要用到了libax_proton.so,libax_vo.so和libax_ivps动态库,提供的函数具体参考文档。
以下是部分参考代码:
视频输入部分代码:
extern "C" {
pub fn AX_VIN_Init() -> i32;
pub fn AX_VIN_Deinit() -> i32;
pub fn AX_VIN_CreateDev(devID: u8) -> i32;
pub fn AX_VIN_DestroyDev(devID: u8) -> i32;
pub fn AX_VIN_EnableDev(devID: u8) -> i32;
pub fn AX_VIN_DisableDev(devID: u8) -> i32;
}
视频输出部分代码,结构体和枚举定义内容会很多,这里贴一部分样例:
extern "C" {
pub fn AX_VO_Init() -> i32;
pub fn AX_VO_Deinit() -> i32;
pub fn AX_VO_SetPubAttr(devID: u8, pub_attr: &AxVoPubAttrT) -> i32;
pub fn AX_VO_SetCSC(devID: u8, csc: &AxVoCscT) -> i32;
pub fn AX_VO_Enable(devID: u8) -> i32;
pub fn AX_VO_Disable(devID: u8) -> i32;
}
#[repr(u8)]
pub enum AxVoModeE {
AxVoModelOffline = 0,
AxVoModelOnline,
AxVoModelButt,
}
#[repr(u8)]
pub enum AxVoIntfTypeE {
AxVoIntfDpt,
AxVoIntfBt601,
AxVoIntfBt656,
AxVoIntfBt1120,
AxVoIntfDsi,
AxVoIntfHdmi,
AxVoIntfButt
}
#[repr(u8)]
pub enum AxVoOutFmtE {
AxVoOutFmtUnused = 0,
AxVoOutFmtRgb565,
AxVoOutFmtRgb666,
AxVoOutFmtRgb666lp,
AxVoOutFmtRgb888,
AxVoOutFmtRgb101010,
AxVoOutFmtYuv422,
AxVoOutFmtYuv422_10,
AxVoOutFmtButt
}
以下是简单的测试,输入模块的初始化,创建设备,销毁设备,以及使能和禁止设备等简单操作的样例。
|