定义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_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_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);