ISP API 开发指南
本文对 SDK API 接口进行说明
ISP API
本节介绍 ISP 模块 API 的使用方法,这些 API 都是 ISP SDK 面向应用的,主要分为:
- 系统控制 API
- 图像效果设置 API
- Tuning 相关的 API
详细解释了相关的参数数据结构、错误码和返回值。主要面向 ISP 效果相关的 tuning 和算法工程师,以及图像相关功能开发的应用工程师。
系统控制 API
系统控制 API 如下:
- ASR_ISP_Construct: 构造 ISP pipeline 上下文环境接口。
- ASR_ISP_Destruct: 析构 ISP pipeline 上下文环境接口。
- ASR_ISP_GetFwFrameInfoSize(): 获取 ISP firmware frameinfo 结构体大小接口。
- ASR_ISP_RegSensorCallBack: 向 ISP pipeline 注册 sensor 回调函数接口。
- ASR_ISP_UnRegSensorCallBack: 从 ISP pipeline 注销 sensor 回调函数接口。
- ASR_ISP_RegAfMotorCallBack: 向 ISP pipeline 注册 sensor 马达回调函数接口。
- ASR_ISP_EnableOfflineMode: 使能 ISP pipeline 的 Offline 模式接口。
- ASR_ISP_SetPubAttr: 设置 ISP pipeline 公共属性接口。
- ASR_ISP_SetTuningParams: 设置 ISP pipeline tuning 相关参数接口。
- ASR_ISP_SetChHwPipeID: 设置 ISP pipeline channel 工作的真实硬件 pipe ID 接口。
- ASR_ISP_Init: 初始化 ISP pipeline。
- ASR_ISP_DeInit: 撤销 ISP pipeline 的初始化。
- ASR_ISP_EnablePDAF: 使能 ISP pipeline 的 PDAF。
- ASR_ISP_SetFps: 设置该 pipeline 上 sensor/ISP 工作的帧率。
- ASR_ISP_SetFrameinfoCallback: 设置 ISP pipeline frameinfo 的回调。
- ASR_ISP_QueueFrameinfoBuffer: 设置 ISP pipeline frameinfo buffer 的入队列。
- ASR_ISP_FlushFrameinfoBuffer: 清除 ISP pipeline 上的 frameinfo buffer。
- ASR_ISP_Streamon: 启动 ISP pipeline。
- ASR_ISP_Streamoff: 停止 ISP pipeline。
- ASR_ISP_TriggerRawCapture: 触发 ISP pipeline 进行 Raw 拍照流程。
- ASR_ISP_ReInitPreviewChannel: 重新初始化预览 channel。
- ASR_ISP_NotifyOnceHDRRawCapture: 通知 ISP pipeline 进入一次 HDR Raw 拍照流程。
- ASR_ISP_UpdateNoneZslStreamAeParams: 更新 sensor 相关 AE 的参数。
ASR_ISP_Construct
【描述】
构造 ISP pipeline 上下文环境。
【语法】
int ASR_ISP_Construct(uint32_t pipelineID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
【注意】
- 输入参数
pipelineID
描述的是个虚拟的 pipeline,对应的是 ISPfirmware,一个pipelineID
对应一个 firmware。
ASR_ISP_Destruct
【描述】
析构 ISP pipeline 上下文环境。
【语法】
int ASR_ISP_Destruct (uint32_t pipelineID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
ASR_ISP_GetFwFrameInfoSize
【描述】
获取 ISP Firmware frameinfo 结构体的大小。
【语法】
int ASR_ISP_GetFwFrameInfoSize ();
【参数】
无。
【返回值】
参数名称 | 描述 |
---|---|
>0 | 结构体大小 |
<0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
ASR_ISP_RegSensorCallBack
【描述】
向 ISP pipeline 注册 sensor 的回调函数。
【语法】
IntASR_ISP_RegSensorCallBack(uint32_tpipelineID,ISP_SENSOR_ATTR_S *pstSensorInfo, ISP_SENSOR_REGISTER_S *pstRegister);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
pstSensorInfo | 注册 sensor 的属性 | 输入 |
pstRegister | 注册 sensor 的回调函数结构体指针 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_sensor_comm.h
- 库文件:
libisp.so
、libcam_sensors.so
ASR_ISP_UnRegSensorCallBack
【描述】
向 ISP pipeline 注销 sensor 的回调函数。
【语法】
IntASR_ISP_UnRegSensorCallBack(uint32_tpipelineID,ISP_SENSOR_ATTR_S *pstSensorInfo);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
pstSensorInfo | 注册 sensor 的属性 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:spm_cam_isp.h、spm_isp_sensor_comm.h
- 库文件:libisp.so
ASR_ISP_RegAfMotorCallBack
【描述】
向 ISP pipeline 注册 sensor 马达的回调函数。
【语法】
IntASR_ISP_RegAfMotorCallBack(uint32_tpipelineID,ISP_AF_MOTOR_REGISTER_S *pstAfRegister);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
pstAfRegister | 注册 sensor 马达的回调函数结构体指针 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_sensor_comm.h
- 库文件:
libisp.so
ASR_ISP_EnableOfflineMode
【描述】
使能 ISP pipeline 的 Offline 模式,使 ISP 的输入 stream 来自 DDR 而非 sensor,由 VI 模块从 DDR 读取数据。
【语法】
IntASR_ISP_EnableOfflineMode(uint32_tpipelineID,uint32_tenable,const ISP_OFFLINE_ATTR_S *pstOfflineAttr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
enable | 使能/关闭 offline 模式 | 输入 |
pstOfflineAttr | 指向 Offline 模式属性结构体得指 针 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
【注意】
- 使能 offline 模式时,sensor 以及马达的 callback 不需要注册,即使注册了,ISP 也不会使用。
- 特殊的拍照场景中 offline pipeline 的处理不需要使用该函数。
ASR_ISP_SetPubAttr
【描述】
设置 ISP pipeline 上 channel 的公共属性。
【语法】
int ASR_ISP_SetPubAttr(uint32_t pipelineID, uint32_t channelID, const ISP_PUB_ATTR_S *pstPubAttr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline ID 号 | 输入 |
channelID | ISP pipeline channel 的 ID | 输入 |
pstPubAttr | ISP pipeline 的公共属性结构体指针 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
ASR_ISP_SetTuningParams
【描述】
设置 ISP pipeline 上 tuning 相关的属性。为了支持算法开发调试方便,ISP 初始化的 tuning 参数会由两个部分决定:
- 先从 sensor 那边获取(事先将 tuning 好的文件转换成代码)设置;
- 如果此接口告诉 ISP 当前有 tuning file 存在,ISP 会以该文件优先,覆盖之前设置的参数;否则不会执行任何操作。
【语法】
intASR_ISP_SetTuningParams(uint32_tpipelineID,ISP_TUNING_ATTRS_S *pstTuningAttr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline ID 号 | 输入 |
pstTuningAttr | ISP pipeline 的 tuning 属性结构体指针 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
【注意】
调用该接口之前,ASR_ISP_RegSensorCallBack
或者 ASR_ISP_EnableOfflineMode
需要先调用。
ASR_ISP_SetChHwPipeID
【描述】
设置 ISP pipeline 的 channel 实际工作的硬件 pipe ID。
【语法】
int ASR_ISP_SetChHwPipeID(uint32_t pipelineID, uint32_t channelID, uint32_t hwPipeID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline ID 号 | 输入 |
channelID | ISP pipeline channel 的 ID | 输入 |
hwPipeID | 实际硬件 pipe ID | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
【注意】
- 该接口要在
ASR_ISP_Init
之前调用,否则 ISP channel 以默认的 channel ID(硬件 pipe0) 开始运行。 - 输入参数
pipelineID
对应的是 ISPfirmware,channelID
对应的是工作模式 preview 或 capture,hwPipeID
对应的是 ISP 硬件 pipelineID。对于特殊的拍照场景,可以用一套 firmware 管理 2 个硬件 pipeline 工作在不同的模式下,这样保证 2 个硬件 pipeline 的图像效果保持一致。
ASR_ISP_Init
【描述】
以之前设置的参数,初始化 ISPpipeline,经过初始化后,第一帧的所有参数已经 ready,原则上不建议在该接口后再设置初始化的参数,因为不会在第一帧生效,而会在第二帧生效。
【语法】
int ASR_ISP_Init(uint32_t pipelineID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline ID 号 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
ASR_ISP_DeInit
【描述】
撤销 ISP pipeline 的初始化,清除所有设置在该 pipeline 上的效果参数,注册的一些 callback 是不会清除的。
【语法】
int ASR_ISP_ DeInit (uint32_t pipelineID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline ID 号 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
ASR_ISP_EnablePDAF
【描述】
使能/关闭 ISP pipeline 的 PDAF 功能。
【语法】
int ASR_ISP_EnablePDAF(uint32_t pipelineID, uint32_t enable);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline ID 号 | 输入 |
enable | 使能或者关闭 PDAF 的标识位 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求 】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
【注意】
- 必须在
ASR_ISP_Init
之后调用。
ASR_ISP_SetFps
【描述】
设置 ISPpipeline 的帧率,ISP 支持动态帧率,如果需要以特定的帧率运行,请将 fminFps
和 fmaxFps
设置成一样的值。该接口可以在 ASR_ISP_Init
之前或者 ISP 运行期间设置,前者设置后,第一帧便以设置的帧率运行。
【语法】
int ASR_ISP_SetFps(uint32_t pipelineID, float fminFps, float fmaxFps);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline ID 号 | 输入 |
fminFps | 最小帧率 | 输入 |
FmaxFps | 最大帧率 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
ASR_ISP_SetFrameinfoCallback
【描述】
设置 ISP pipeline 的通知获取 frameinfo 回调函数,ISP 在更新每帧 frameinfo 时,通过该 callback 将 frameinfo 送至 user。
【语法 】
int ASR_ISP_SetFrameinfoCallback(uint32_t pipelineID, GetFrameInfoCallBack callback);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
callback | User 获取 frameinfo 的回调函数 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
ASR_ISP_QueueFrameinfoBuffer
【描述】
ISP pipeline 的 frameinfo buffer 入队列函数,ISP 内部以队列的形式使用 frameinfo buffer,先进先出。
【语法】
intASR_ISP_QueueFrameinfoBuffer(uint32_tpipelineID,IMAGE_BUFFER_S
*pFrameInfoBuf);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
pFrameInfoBuf | FrameInfo 的 buffer | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、cam_module_interface.h
- 库文件:
libisp.so
【注意】
输入参数 pFrameInfoBuf
指针会被 SDK 直接使用。所 以应用层应当保证该指针所指向的内存空间不能被释放,直到注册的回调函数被调用。
ASR_ISP_FlushFrameinfoBuffer
【描述】
清除 ISP pipeline 上的 frameinfo buffer 队列,被清除的 buffer 通过设置的回调返还。
【语法】
int ASR_ISP_FlushFrameinfoBuffer(uint32_t pipelineID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP 的 pipeline ID 号 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
【注意】
Flush 出去的 buffer 不要再入队列,容易引发死锁问题。
ASR_ISP_Streamon
【描述】
运行 ISP pipeline,sensor 的 streamon 要在此接口后面。
【语法】
int ASR_ISP_Streamon(uint32_t pipelineID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline ID 号 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值 为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
【注意】
- 要在
ASR_ISP_Init
之后调用。 - 在此之前不要先打开 sensor。
ASR_ISP_Streamoff
【描述】
停止 ISP pipeline 的运行。
【语法】
int ASR_ISP_Streamoff(uint32_t pipelineID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、spm_isp_comm.h
- 库文件:
libisp.so
【注意】
要在 ASR_ISP_Streamon
之后调用。
ASR_ISP_TriggerRawCapture
【描述】
触发 ISP pipeline 进行一次特殊的拍照场景处理流程,如果当前正在进行拍照,此时会触发失败。
【语法】
int ASR_ISP_TriggerRawCapture(uint32_t pipelineID, IMAGE_BUFFER_S *pFrameInfoBuf, uint32_t hdrCapture);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
pFrameInfoBuf | 当前 RAW 图对应的 frameinfo buffer,该 frameinfo 应该和拍照时预览帧的 framei nfo 一样,否则拍照的图像质量有可能和预览不一样 | 输入 |
hdrCapture | 是否是 hdr 拍照的标志位,本系统 HDR 拍照暂时只支持在 RAW 域合成的 HDR 拍照 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
、cam_module_interface.h
- 库文件:
libisp.so
【注意】
该接口只能在 ISP 运行期间调用。
ASR_ISP_ReInitPreviewChannel
【描述】
重新初始化 ISP pipeline 的预览 channel。在某些场景下,会停止某个 pipeline 的预览,进行复用硬件 pipe,在恢复该预览时,需要调用此接口,用来达到断流前后画面效果一致。
【语法】
int ASR_ISP_ReInitPreviewChannel(uint32_t pipelineID, IMAGE_BUFFER_S *pFrameInfoBuf);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
pFrameInfoBuf | 需要恢复场景时的 frameinfo buffer | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头 文件:
spm_cam_isp.h
、cam_module_interface.h
- 库文件:
libisp.so
ASR_ISP_NotifyOnceHDRRawCapture
【描述】
通知 ISP pipeline 进行一次 HDR Raw 拍照流程,ISP 返回 HDR 第一帧有效 Raw frame ID,目前 HDR Raw 图顺序是正常曝光,长曝光和短曝光。
【语法】
int ASR_ISP_NotifyOnceHDRRawCapture(uint32_t pipelineID, uint32_t ZSLCapture, int32_t
*startFrameID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
ZSLCapture | 是否是 ZSL HDR 拍照的标志位 | 输入 |
startFrameID | 存放第一帧有效 HDR Raw 的 frame ID | 输出 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
【注意】
该接口只能在 ISP 运行期间调用。
ASR_ISP_UpdateNoneZslStreamAeParams
【描述】
更新 ISP pipeline 上 sensor AE 相关的参数,该接口只有在 pipeline 断流后再重新开流时有用,用来保持 sensor 在断流前 后状态一致。
【语法】
int ASR_ISP_UpdateNoneZslStreamAeParams(uint32_tpipelineID,IMAGE_BUFFER_S *pFrameInfoBuf,int backPreview, int updateSnsReg);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
pFrameInfoBuf | 需要更新状态对应的 frameinfo | 输入 |
backPreview | 是否切换预览标志位 | 输入 |
updateSnsReg | 是否需要更新 sensor 的 AE 寄存器,在 sensor 重新 config 后,需要使能该标志位;否则可以不需要 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_cam_isp.h
、cam_module_interface.h
- 库文件:
libisp.so
效果设置 API
本小节描述的 API 是用来帮助使用者设置一些和图像效果有关的 setting。在本软件中,图像效果的设置通过 command 的形式使用,这些 command 由统一接口对外提供 API:
- ASR_ISP_SetEffectParams: 设置 ISP pipeline 相关效果参数接口。
ISP 支持的效果 command 如下:
- ISP_EFFECT_CMD_S_AE_MODE
- ISP_EFFECT_CMD_S_AWB_MODE
- ISP_EFFECT_CMD_S_AF_MODE
- ISP_EFFECT_CMD_S_TRIGGER_AF
- ISP_EFFECT_CMD_S_ANTIFLICKER_MODE
- ISP_EFFECT_CMD_S_LSC_MODE
- ISP_EFFECT_CMD_S_CCM_MODE
- ISP_EFFECT_CMD_S_AECOMPENSATION
- ISP_EFFECT_CMD_S_METERING_MODE
- ISP_EFFECT_CMD_S_ZOOM_RATIO_IN_Q8
- ISP_EFFECT_CMD_S_SENSITIVITY_MODE
- ISP_EFFECT_CMD_S_SENSOR_EXPOSURE_MODE
- ISP_EFFECT_CMD_S_TRIGGER_AE_QUICK_RESPONSE
- ISP_EFFECT_CMD_S_AECOMPENSATION_STEP
- ISP_EFFECT_CMD_S_AE_SCENE_MODE
- ISP_EFFECT_CMD_S_FILTER_MODE
- ISP_EFFECT_CMD_S_YUV_RANGE
- ISP_EFFECT_CMD_S_SOLID_COLOR_MODE
- ISP_EFFECT_CMD_G_AF_MODE
- ISP_EFFECT_CMD_G_ANTIFLICKER_MODE
- ISP_EFFECT_CMD_G_METERING_MODE
- ISP_EFFECT_CMD_G_AF_MOTOR_RANGE
- ISP_EFFECT_CMD_G_AE_MODE
- ISP_EFFECT_CMD_G_AWB_MODE
ASR_ISP_SetEffectParams
【描述】
设置 ISP 图像效果接口。
【语法】
int ASR_ISP_SetEffectParams(uint32_t pipelineID, uint32_t effectCmd, void *pData, int dataSize);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline ID | 输入 |
effectCmd | 效果参数命令 | 输入 |
pData | 指向此效果参数结构体的指针 | 输入 |
dataSize | 此效果参数结构体的大小 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
效果 command 介绍
-
ISP_EFFECT_CMD_S_AE_MODE 设置图像曝光模式的命令,对应参数类型是结构体
asrISP_AE_INFO_S
。 -
ISP_EFFECT_CMD_S_AWB_MODE 设置图像白平衡模式的命令,对应参数类型是结构体
asrISP_AWB_INFO_S
。 -
ISP_EFFECT_CMD_S_AF_MODE 设置图像对焦模式的命令,对应参数类型是结构体
asrISP_AF_INFO_S
。 -
ISP_EFFECT_CMD_S_TRIGGER_AF 触发图像对焦的命令,对应参数类型是
int32_t
,1
表示触发,0
表示取消。 -
ISP_EFFECT_CMD_S_ANTIFLICKER_MODE 设置图像 flicker 模式的命令,对应参数类型是
int32_t
,该参数的值由枚举asrISP_ANTIFLICKE R_MODE_E
定义。 -
ISP_EFFECT_CMD_S_LSC_MODE 设置图像 lens shading 模式的命令,对应参数类型是结构体
asrISP_LSC_INFO_S
。 -
ISP_EFFECT_CMD_S_CCM_MODE 设置图像 CCM 模式的命令,对应参数类型是结构体
asrISP_CCM_INFO_S
。 -
ISP_EFFECT_CMD_S_AECOMPENSATION 设置图像曝光补偿模式的命令,对应参数类型是
int32_t
,数值目前支持 [-6,6]。 -
ISP_EFFECT_CMD_S_METERING_MODE 设置图像测光模式的命令,对应参数类型是结构体
asrISP_METERING_INFO_S
。 -
ISP_EFFECT_CMD_S_ZOOM_RATIO_IN_Q8 设置图像缩放比例的命令,对应参数类型是
int32_t
,单位是 Q8。 -
ISP_EFFECT_CMD_S_SENSITIVITY_MODE 设置图像 ISO 模式的命令,对应参数类型是结构体
asrISP_SENSITIVITY_INFO_S
,支持 auto 和 manual 模式。 -
ISP_EFFECT_CMD_S_SENSOR_EXPOSURE_MODE
- 设置图像 Sensor 曝光模式的命令,这个命令和
ISP_EFFECT_CMD_S_AE_MODE
的区别是: 该命令只能设置曝光信息,而后者可以设置曝光和增益信息;对应参数类型是结构体asr ISP_SENSOR_EXPOSURE_INFO_S
,支持 auto 和 manual 模式。 - 这两个 command 以及
ISP_EFFECT_CMD_S_SENSITIVITY_MODE
的关系如下表所示。
AE MODE | SENSITIVITY AUTO | SENSITIVITY MANUAL |
---|---|---|
SENSOR EXPOSURE AUTO | Auto | Auto |
SENSOR EXPOSURE MANUAL | Auto | Manual |
- 如表中所示,
SENSITIVITY_MODE_MANUAL
是在 Auto Exposure 时,固定增益,曝光由算法根据场景自动计算;而SENSOR_EXPOSURE_MODE_MANUAL
是在 Auto Exposure 时,固定曝光时间,增益由算法根据场景自动计算。
-
ISP_EFFECT_CMD_S_TRIGGER_AE_QUICK_RESPONSE 触发算法 AE 快速收敛一次的命令,对应参数类型是
int32_t
,1
表示触发,0
表示取消。该命令只会触发一次,算法等 AE 快速收敛后会清除此状态,一般用于 touch 场景。 -
ISP_EFFECT_CMD_S_AECOMPENSATION_STEP 设置 ISP 曝光补偿 step 的值,对应参数类型是
float
。设置后曝光补偿每次按照这个 step 进行调整,默认值为 1/3。 -
ISP_EFFECT_CMD_S_AE_SCENE_MODE 设置 ISPAE 的场景模式,对应参数类型是
int32_t
,值由枚举asrISP_AE_SCENE_MODE_E
定义。ISP 支持的模式有普通和人脸模式,在人脸模式下,AE 的收敛速度比普通模式下快。 -
ISP_EFFECT_CMD_S_FILTER_MODE 设置 ISP 颜色滤镜模式,对应参数类型是
int32_t
,值由枚举asrISP_COLOR_FILTER_MODE_E
定义。目前支持普通和黑白两种模式,默认工作再普通模式下。 -
ISP_EFFECT_CMD_S_YUV_RANGE 设置 ISP 的 yuv range,对应参数类型是
int32_t
,值由枚举asrISP_YUV_RANGE_E
定义。目前支持 full(y:0255, uv:0255)和 compress(y:16235, uv:16240)两种模式。 -
ISP_EFFECT_CMD_S_SOLID_COLOR_MODE 设置 ISP 纯色模式,对应参数类型是
int32_t
,值由枚举asrISP_SOLID_COLOR_MODE_E
定义。目前仅支持纯黑色模式,默认关闭此模式。 -
ISP_EFFECT_CMD_G_AF_MODE 获取 ISP 当前 AF 模式的命令,对应参数类型是结构体
asrISP_AF_INFO_S
。 -
ISP_EFFECT_CMD_G_ANTIFLICKER_MODE 获取 ISP 当前 antiflicker 模式的命令,对应参数类型是
int32_t
,该参数的值由枚举asrISP_ANTIF LICKER_MODE_E
定义。 -
ISP_EFFECT_CMD_G_METERING_MODE 获取 ISP 当前测光模式的命令,对应参数类型是结构体
asrISP_METERING_INFO_S
。 -
ISP_EFFECT_CMD_G_AF_MOTOR_RANGE 获取对焦马达移动的范围(最小值和最大值),对应参数类型是结构体
asrISP_RANGE_S
。 -
ISP_EFFECT_CMD_G_AE_MODE 获取当前 ISP 的 AE 模式,对应参数类型是结构体
ISP_AE_INFO_S
。 -
ISP_EFFECT_CMD_G_AWB_MODE 获取当前 ISP 的 AWB 模式,对应参数类型是结构体
ISP_AWB_INFO_S
。
Tuning 相关 API
本小 节描述的 API 用来帮助 tuning 工程师调节更具体、更细节的参数,ASR 发布的 tuning 工具也是使用该小节相关的 API。
tuning 相关 API 如下:
- ASR_ISP_SetFwPara: 设置 ISP pipeline 上 Firmware 的参数。
- ASR_ISP_GetFWPara: 获取 ISP pipeline 上 Firmware 的参数。
- ASR_ISP_SetRegister: 设置指定寄存器值。
- ASR_ISP_GetRegister: 获取指定寄存器值。
- ASR_ISP_LoadSettingFile: 加载 ISP pipeline 上 Firmware 的 setting file。
- ASR_ISP_SaveSettingFile: 保存 ISP pipeline 上 Firmware 的 setting file。
ASR_ISP_SetFwPara
【描述】
设置 ISP Firmware 参数。
【语法】
int ASR_ISP_SetFwPara(uint32_t pipelineID, const char *paramter, const char *name, uint32_t row, uint32_t column, int value);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
paramter | ISP 子模块名称 | 输入 |
name | 参数名称 | 输入 |
row | 行号 | 输入 |
column | 列号 | 输入 |
value | 值 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
【注意】无
ASR_ISP_GetFWPara
【描述】
获取 ISP Firmware 参数。
【语法】
int ASR_ISP_GetFWPara(uint32_t pipelineID, const char *paramter, const char *name, uint32_t row, uint32_t column, int *pValue);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
paramter | ISP 子模块名称 | 输入 |
name | 参数名称 | 输入 |
row | 行号 | 输入 |
column | 列号 | 输入 |
value | 值 | 输出 |
【返回值】
参数名称 | 描述 |
---|---|
-1 | 输入检查错误 |
0 | 不能找到指定参数 |
>0 | 成功,返回获取的值数量 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
【注意】无
ASR_ISP_SetRegister
【描述】
设置指定寄存器值。
【语法】
int ASR_ISP_SetRegister(uint32_t addr, uint32_t value, uint32_t mask);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
addr | 寄存器地址 | 输入 |
value | 寄存器值 | 输入 |
mask | 寄存器 mask | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
【注意】无
ASR_ISP_GetRegister
【描述】
获取指定寄存器值。
【语法】
int ASR_ISP_GetRegister(uint32_t addr, int *pValue);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
addr | 寄存器地址 | 输入 |
pValue | 寄存器值 | 输出 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
【注意】无
ASR_ISP_LoadSettingFile
【描述】
加载 ISP Firmware setting file。
【语法】
int ASR_ISP_LoadSettingFile(uint32_t pipelineID, const char *pFileName);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
pFileName | 参数文件名,包含绝对路径 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
【注意】无
ASR_ISP_SaveSettingFile
【描述】
保存 ISP Firmware setting file。
【语法】
int ASR_ISP_SaveSettingFile(uint32_t pipelineID, const char *pFileName);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pipelineID | ISP pipeline 的 ID | 输入 |
pFileName | 参数文件名,包含绝对路径 | 输入 |
【返回值】
参数名称 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败,值为错误码 |
【需求】
- 头文件:
spm_cam_isp.h
- 库文件:
libisp.so
【注意】无
主要 API 使用流程
本小节主要描述系统控制 API 的使用流程,总共分为一下几个阶段:构造、注册、设置、初始化、streamon、streamoff、反初始化、析构。
-
构造 ISP pipeline 的上下文环境。
-
注册:向 ISP pipeline 注册 sensor 的回调函数、对焦马达 的回调函数以及 frameinfo 的回调函数。
-
设置:设置 ISP pipeline 的图像公共属性、tuning 相关的属性、channel 工作的实际硬件 pipe ID、帧率、是否使能 offline 模式、frameinfo buffer 入队列。
-
初始化:根据以上步骤设置的信息,初始化 ISP pipeline。
-
streamon:启动 ISP pipeline,进入工作状态。
-
streamoff:停止 ISP pipeline 的运行,退出工作状态。
-
反初始化:清除设置的参数等信息 (除之前注册的回调外)。
-
析构:析构 ISP pipeline 的上下文环境。
以上流程面向 pipeline,ISP 软件能同时支持两个 pipeline 一起工作,如果需要启动另个 pipeline,流程类似,但是需要注意实际工作的硬件 pipe ID,因为有时分复用。
数据类型
错误码
错误代码 | 宏定义 | 描述 |
---|---|---|
-22 | ASR_ERR_ISP_ILLEGAL_PARAM | 参数非法 |
-17 | ASR_ERR_ISP_EXIST | 资源已经存在 |
-19 | ASR_ERR_ISP_NOTEXIST | 资源不存在 |
-22 | ASR_ERR_ISP_NULL_PTR | 空指针 |
-1 | ASR_ERR_ISP_NOT_SUPPORT | 操作当前不支持 |
-1 | ASR_ERR_ISP_NOT_PERM | 操作不允许 |
-12 | ASR_ERR_ISP_NOMEM | 内存不足 |
-14 | ASR_ERR_ISP_BADADDR | 无效的地址 |
-16 | ASR_ERR_ISP_BUSY | 系统正忙 |
VI API
本节介绍 ASR MARS11-ISP VI 模块 API 使用方法,描述的 API 都是 VI SDK 面向应用的,并详细解释了相关的参数数据结构和返回值。
API
VI 模块提供以下 API:
- ASR_VI_SetDevAttr:设置 VI Device 的属性。
- ASR_VI_GetDevAttr:获取 VI Device 的属性。
- ASR_VI_EnableDev:使能 VI Device。
- ASR_VI_DisableDev:关闭 VI Device。
- ASR_VI_SetChnAttr:设置 VI Channel 的属性。
- ASR_VI_GetChnAttr:获取 VI Channel 的属性。
- ASR_VI_SetCallback:设置上层的 Callback 函数到 VI Device。
- ASR_VI_EnableChn:使能 VI channel。
- ASR_VI_DisableChn:关闭 VI channel。
- ASR_VI_Init:初始化 VI 模块资源。
- ASR_VI_Deinit:释放 VI 模块资源。
- ASR_VI_SetBayerReadAttr:设置 offline 读取 Bayer raw 的属性。
- ASR_VI_GetBayerReadAttr:获取 offline 读取 Bayer raw 的属性。
- ASR_VI_EnableBayerRead:使能 offline Bayer raw 读取。
- ASR_VI_DisableBayerRead:关闭 offline Bayer raw 读取。
- ASR_VI_EnableBayerDump:使能 Bayer Dump。
- ASR_VI_DisableBayerDump:关闭 Bayer Dump。
- ASR_VI_ChnQueueBuffer:向 channel 压入 buffer。
ASR_VI_SetDevAttr
【描述】
设置 VI 设备属性。基本设备属性默认了部分芯片配置,满足绝大部分的 sensor 对接要求。
【语法】
int32_t ASR_VI_SetDevAttr(uint32_t nDev, VI_DEV_ATTR_S *pstDevAttr)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号 取值范围:[0, VIU_MAX_DEV_NUM)。 | 输入 |
pstDevAttr | VI 设备属性指针。静态属性。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
【注意】
- 不支持更改设备与通道的绑定关系。
- 在调用前要保证 VI 设备处于禁用状态。如果 VI 设备已处于使能状态,可以使用
ASR_CAM_VI_DisableDev
来禁用设备。
ASR_VI_GetDevAttr
【描述】
获取 VI 设备属性。
【语法】
int32_t ASR_VI_GetDevAttr(uint32_t nDev, VI_DEV_ATTR_S *pstDevAttr)
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号。 取值范围:[0, VIU_MAX_DEV_NUM) | 输入 |
pstDevAttr | VI 设备属性指针。 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
ASR_VI_EnableDev
【描述】
启用 VI 设备。
【语法】
int32_t ASR_VI_EnableDev(uint32_t nDev);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号。 取值范围:[0, VIU_MAX_DEV_NUM)。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
【注意】
- 启用前必须已经设置设备属性,否则返回失败。
- 可重复启用,不返回失败。
ASR_VI_DisableDev
【描述】
禁用 VI 设备。
【语法】
int32_t ASR_VI_DisableDev(uint32_t nDev);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号。 取值范围:[0, VIU_MAX_DEV_NUM)。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
【注意】
- 必须先禁用所有与该 VI 设备绑定的 VI 通道后,才能禁用 VI 设备。
- 可重复禁用,不返回失败。
ASR_VI_FlushDev
【描述】
将已压入 VI 设备中的 Buffer flush 出去。
【语法】
int32_t ASR_VI_FlushDev(uint32_t nDev);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号。 取值范围:[0, VIU_MAX_DEV_NUM)。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
ASR_VI_SetChnAttr
【描述】
设置 VI 通道属性。
【语法】
int32_t ASR_VI_SetChnAttr(uint32_t nChn, VI_CHN_ATTR_S *pstAttr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nChn | VI 通道号。 取值范围:[0, VIU_MAX_CHN_NUM) | 输入 |
pstAttr | VI 通道属性指针。静态属性。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
【注意】
- 必须先设置设备属性才能设置通道属性,否则会返回失败。
- 通道必须处于 Disable 状态才能设置通道属性。
ASR_VI_GetChnAttr
【描述】
获取 VI 通道属性。
【语法】
int32_t ASR_VI_GetChnAttr(uint32_t nChn, VI_CHN_ATTR_S *pstAttr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nChn | VI 通道号。 取值范围:[0, VIU_MAX_CHN_NUM) | 输入 |
pstAttr | VI 通道属性指针。静态属性。 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
【注意】
- 必须先设置通道属性再获取属性,否则将返回失败。
ASR_VI_EnableChn
【描述】
启用 VI 通道。
【语法】
int32_t ASR_VI_EnableChn(uint32_t nChn);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nChn | VI 通道号。 取值范围:[0, VIU_MAX_CHN_NUM) | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
【注意】
- 必须先设置通道属性,且通道所绑定的 VI 设备必须使能。
- 可重复启用 VI 通道,不返回失败。
ASR_VI_DisableChn
【描述】
禁用 VI 通道。
【语法】
int32_t ASR_VI_DisableChn(uint32_t nChn);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nChn | VI 通道号。 取值范围:[0, VIU_MAX_CHN_NUM) | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
【注意】
- 可重复禁用 VI 通道,不返回失败。
ASR_VI_SetCallback
【描述】
设置 frame buffer 轮转用的 callback。
【语法】
int32_tASR_VI_SetCallback(uint32_tnChn,int32_t( *callback)(uint32_tnChn, VI_IMAGE_BUFFER_S *vi_buffer));
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nChn | VI 通道号。 取值范围:[0, VIU_MAX_CHN_NUM) | 输入 |
callback | 回调函数指针 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
【注意】
- 在
ASR_VI_EnalbeChn
之前调用。
ASR_VI_SetBayerReadAttr
【描述】
设置 offline 处理 raw 读入属性。
【语法】
int32_tASR_VI_SetBayerReadAttr(uint32_tnDev,constVI_BAYER_READ_ATTR_S *pstBayerReadAttr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号。 取值范围:[0, VIU_MAX_DEV_NUM) | 输入 |
pstBayerReadAttr | Bayer 读取属性结构体指针。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失 败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
ASR_VI_GetBayerReadAttr
【描述】
获取 offline 处理 raw 读入属性。
【语法】
int32_TASR_VI_GetBayerReadAttr(uint32_tnDev,constVI_BAYER_READ_ATTR_S *pstBayerReadAttr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号。 取值范围:[0, VIU_MAX_DEV_NUM) | 输入 |
pstBayerReadAttr | Bayer 读取属性结构体指针。 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
ASR_VI_EnableBayerRead
【描述】
使能 offline 处理。
【语法】
int32_t ASR_VI_EnableBayerRead (uint32_t nDev);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号。 取值范围:[0, VIU_MAX_DEV_NUM) | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
ASR_VI_DisableBayerRead
【描述】
关闭 offline 处理。
【语法】
int32_t ASR_VI_DisableBayerRead (uint32_t nDev);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号。 取值范围:[0, VIU_MAX_DEV_NUM) | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
ASR_VI_EnableBayerDump
【描述】
使能获取 RAW DATA。
【语法】
int32_t ASR_VI_EnableBayerDump(uint32_t nDev);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号。 取值范围:[0, VIU_MAX_DEV_NUM) | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
【注意】
- 保存 RAW 数据的宽高与 DEV 的 设置宽高一致。
- 可通过
VIU_GET_RAW_CHN
获取 RAW Dump 通道的起始通道号。
ASR_VI_DisableBayerDump
【描述】
关闭获取 RAW DATA。
【语法】
int32_t ASR_VI_DisableBayerDump(uint32_t nDev);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nDev | VI 设备号。 取值范围:[0, VIU_MAX_DEV_NUM) | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
ASR_VI_ChnQueueBuffer
【描述】
向 channel 压入 buffer。
【语法】
int32_t ASR_VI_ChnQueueBuffer (uint32_t nChn, IMAGE_BUFFER_S *camBuf);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
nChn | VI 通道号。 取值范围:[0, VI_CHN_CNT) | 输入 |
camBuf | Buffer 指针 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
【注意】
- 输入参数 camBuf 指针会被 SDK 直接使用。所以应用层应当保证该指针所指向的内存空间不能被释放,直到注册的回调函数被调用。
ASR_VI_Init
【描述】
VI 模块初始化。
【语法】
int32_t ASR_VI_Init (void);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
无 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
头文件:spm_comm_vi.h
、spm_cam_vi.h
库文件:libvi.so
ASR_VI_Deinit
【描述】
VI 模块反初始化。
【语法】
int32_t ASR_VI_Deinit (void);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
无 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值为错误码。 |
【需求】
- 头文件:
spm_comm_vi.h
、spm_cam_vi.h
- 库文件:
libvi.so
数据类型
VI_DEV_ATTR_S
【说明】
定义视频输入设备的属性。
【定义】
typedef struct asrVI_DEV_ATTR_S {
CAM_VI_WORK_MODE_E enWorkMode;
CAM_SENSOR_RAWTYPE_E enRawType;
uint32_t width;
uint32_t height;
uint32_t bindSensorIdx;
uint32_t mipi_lane_num;
bool bCapture2Preview;
} VI_DEV_ATTR_S;
【成员】
成员名称 | 描述 |
---|---|
enWorkMode | CAM_VI_WORK_MODE_ONLINE, CAM_VI_WORK_MODE_RAWDUMP, CAM_VI_WORK_MODE_OFFLINE, |
enRawType | CAM_SENSOR_RAWTYPE_RAW8, CAM_SENSOR_RAWTYPE_RAW10, CAM_SENSOR_RAWTYPE_RAW12, CAM_SENSOR_RAWTYPE_RAW14, CAM_SENSOR_RAWTYPE_INVALID, |
Width | VI 设备可设置要捕获图像的宽。捕获图像的最小宽与最大宽度:[VIU_DEV_MIN_WIDTH, VIU_DEV_MAX_WIDTH] |
Height | VI 设备可设置要捕获图像的高。捕获图像的最小高与最大高度:[VIU_DEV_MIN_HEIGHT, VIU_DEV_MAX_HEIGHT] |
bindSensorIdx | VI 设备绑定的 sensor id。[0, 2] |
bOfflineSlice | Offline 是否是拍照模式 |
mipi_lane_num | Sensor MIPI 接口的 lane 个数 |
bCapture2Preview | 是否是拍照回预览 |
VI_CHN_ATTR_S
【说明】
定义 VI 通道属性。
【定义】
typedef struct asrVI_CHN_ATTR_S {
CAM_VI_PIXEL_FORMAT_E enPixFormat;
uint32_t width;
uint32_t height;
} VI_CHN_ATTR_S;
【成员】
成员名称 | 描述 |
---|---|
enPixFormat | Channel 输出格式 |
Width | 输出图像宽 |
Height | 输出图像高 |
VI_BAYER_READ_ATTR_S
【说明】
定义 offline raw 读入属性。
【定义】
typedef struct asrVI_BAYER_READ_ATTR_S {
bool bGenTiming;
int32_t s32FrmRate;
} VI_BAYER_READ_ATTR_S;
【成员】
成员名称 | 描述 |
---|---|
bGenTiming | 是否由 VI 自动产生固定帧率的读入时序 |
s32FrmRate | 如果 bGenTiming 为 true,表示帧率大小 |