---
title: 向ISP库注册AE算法
description: "1. 用户需要在自开发定制的AE库中实现以下回调函数（回调函数的说明请参见hi_isp_ae_exp_func），如下表所示：| 成员名称 | 描述 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/ispdevug/ispdevug_0007.html
sourcePath: /source/zh/canncommercial/900/others/ispdevug/ispdevug_0007.html
indexId: e9e1a6bb6b0c02e64428c502df96ccb9df27bea047d8c2e99e211d08c51e670f64
---
# 向ISP库注册AE算法

1. 用户需要在自开发定制的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算法库。 |


2. 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");
}
```
