ISP API 开发指南
SDK API 接口说明
ISP API
本节介绍 ISP 模块 API 使用方法,描述的 API 都是 ISP SDK 面向应用的,分为系统控制 API、图像效果设置 API 和 tuning 相关的 API,详细解释了相关的参数数据结构、错误码和返回值。主要面向 ISP 效果相关的 tuning 和算法工程师,以及图像相关相关的 setting 功能开发的应用工程师。
系统控制 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:streamon ISP pipeline。
- ASR_ISP_Streamoff: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
【注意】
- 如 2.2.1 所述,输入参数 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 模式接口,使能 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 |

