---
title: 扩展性的设计考虑
description: "在代码中有hi_vi_pipe、hi_isp_3a_alg_lib、hi_sensor_id这样一些概念，这些概念是出于架构扩展性的考虑。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/ispdevug/ispdevug_0213.html
sourcePath: /source/zh/canncommercial/900/others/ispdevug/ispdevug_0213.html
indexId: 25c521267bdaddd7c172f231e56067632cfd1264974536dd25326ddf0492270064
---
# 扩展性的设计考虑

在代码中有hi_vi_pipe、hi_isp_3a_alg_lib、hi_sensor_id这样一些概念，这些概念是出于架构扩展性的考虑。

- hi_vi_pipe主要考虑的是支持多个ISP单元的情形。无论是多个ISP硬件单元，或是一个ISP硬件单元分时复用，从软件意义上讲，需要预留出扩展性。
- hi_isp_3a_alg_lib主要考虑的是支持多个算法库，并动态切换的情形。例如用户实现了一套AE算法代码，但注册两个库，分别用于正常场景和抓拍场景，那么这时候需要用结构体中的handle来进行区分。例如用户实现了一套AWB算法代码，同时又想在某些场景下使用AWB算法库，那么这时候可以用结构体中的lib_name进行区分。当用户注册多个AE库，或AWB库时，ISP firmware将会全部对它们进行初始化，但是在运行时，仅会调用有效的库，设置有效库的接口是hi_mpi_isp_set_bind_attr，通过此接口可以快速切换运算的库。
- hi_sensor_id仅起一个校验作用，确认注册给ISP firmware库和3A算法库的是同一款sensor。

这些概念仅是设计时预留的冗余，如果完全不需要这些概念，可以在开发时去掉这些概念。
