向ISP库注册昇腾AE算法
- 用户需要在自开发定制的AE库中实现以下回调函数(回调函数的说明请参见hi_isp_ae_exp_func),如下表所示:
成员名称
描述
pfn_ae_init
初始化AE的回调函数指针。
调用hi_mpi_isp_init时将调用pfn_ae_init回调函数,以初始化 AE 算法库。
pfn_ae_run
运行 AE 的回调函数指针。
调用hi_mpi_isp_run时将调用pfn_ae_run回调函数,以运行AE算法库,计算得到Sensor的曝光时间和增益、ISP的数字增益。
pfn_ae_ctrl
控制 AE 内部状态的回调函数指针。
pfn_ae_ctrl回调函数的目的是改变算法库内部状态,运行时,Firmware会隐式调用pfn_ae_ctrl回调函数,通知AE算法库切换WDR和线性模式、设置 FPS。pfn_ae_ctrl回调函数中的cmd值需参见hi_isp_ctrl_cmd。
pfn_ae_exit
销毁 AE 的回调函数指针。
调用hi_mpi_isp_exit时将调用pfn_ae_exit 回调函数,以销毁AE 算法库。
- AE算法实现了一个hi_mpi_ae_register的注册函数,在这个函数中调用了ISP提供的hi_mpi_isp_ae_lib_reg_callback接口向ISP库注册AE算法,示例如下:
/* 实现注册函数 */ hi_isp_ae_register ae_register; hi_s32 ret = HI_SUCCESS; ae_check_pointer_return(ae_lib); ae_check_handle_id_return(ae_lib->id); ae_check_lib_name_return(ae_lib->lib_name); /* 调用回调函数 */ ae_register.ae_exp_func.pfn_ae_init = ae_init; ae_register.ae_exp_func.pfn_ae_run = ae_run; ae_register.ae_exp_func.pfn_ae_ctrl = ae_ctrl; ae_register.ae_exp_func.pfn_ae_exit = ae_exit; ret = hi_mpi_isp_ae_lib_reg_callback(vi_pipe, ae_lib, &ae_register); if (ret != HI_SUCCESS) { printf("Hi_ae register failed!\n"); }
父主题: 3A算法注册