hi_isp_ae_exp_func
说明
定义AE回调函数结构体。
定义
typedef struct { hi_s32 (*pfn_ae_init)(hi_s32 handle, const hi_isp_ae_param *ae_param); hi_s32 (*pfn_ae_run)(hi_s32 handle, const hi_isp_ae_info *ae_info, hi_isp_ae_result *ae_result, hi_s32 reserved); hi_s32 (*pfn_ae_ctrl)(hi_s32 handle, hi_u32 cmd, hi_void *value); hi_s32 (*pfn_ae_exit)(hi_s32 handle); } hi_isp_ae_exp_func;
成员
成员名称 |
描述 |
---|---|
pfn_ae_init |
初始化AE的回调函数指针。 |
pfn_ae_run |
运行AE的回调函数指针。 |
pfn_ae_ctrl |
控制AE内部状态的回调函数指针。 cmd值需参见hi_isp_ctrl_cmd。 |
pfn_ae_exit |
销毁AE的回调函数指针。 |
注意事项
- 调用hi_mpi_isp_init时将调用pfn_ae_init回调函数,以初始化AE算法库。
- 调用hi_mpi_isp_run时将调用pfn_ae_run回调函数,以运行AE算法库,计算得到sensor的曝光时间和增益、ISP的数字增益。
- 设计思路中,算法库实现ctrl接口用以改变内部运行状态,ctrl接口提供一个参数传输命令,提供一个VOID类型的指针传输数据。ctrl接口一方面以回调函数指针的形式注册给ISP库,ISP控制单元隐式调用一些命令控制算法库内部运行状态,另一方面,以算法库的用户接口的形式,从而用户可以改变算法库内部运行状态。示例:
hi_s32 ae_ctrl_cmd(hi_s32 handle, hi_u32 cmd, hi_void *value) { ae_check_pointer_return(value); switch (cmd) { case HI_ISP_WDR_MODE_SET: …… break; …… } return HI_SUCCESS; }
运行时ISP控制单元会隐式调用pfn_ae_ctrl回调函数,通知AE算法库切换WDR和线性模式、设置FPS、通知配置sensor。
当前Firmware定义的ctrl命令详参hi_isp_ctrl_cmd。
- 调用hi_mpi_isp_exit时将调用pfn_ae_exit回调函数,以销毁AE算法库。
- 一个算法库支持初始化和运行多个实例,参数handle以区分不同的算法库实例。如果需要支持多个实例,可以用不同的alg_lib. id多次注册算法库。例如:
hi_isp_3a_alg_lib ae_lib; ae_lib.id = 0; hi_vi_pipe vi_pipe = 0; strncpy(ae_lib.lib_name, HI_AE_LIB_NAME, sizeof(HI_AE_LIB_NAME)); hi_mpi_ae_register(vi_pipe,&ae_lib); ae_lib.id = 1; hi_mpi_ae_register(vi_pipe,&ae_lib);
父主题: 数据类型