11bd4fe43Sopenharmony_ci### 3.1.2 VI理论及实现方式
21bd4fe43Sopenharmony_ci
31bd4fe43Sopenharmony_ci#### 3.1.2.1  VI理论
41bd4fe43Sopenharmony_ci
51bd4fe43Sopenharmony_ci视频输入(VI)模块实现的功能:通过 MIPI Rx(含MIPI接口、LVDS接口和HISPI接口),SLVS-EC,BT.1120,BT.656,BT.601,DC等接口接收视频数据。VI将接收到的数据存入到指定的内存区域,在此过程中,VI可以对接收到的原始视频图像数据进行处理,实现视频数据的采集。
61bd4fe43Sopenharmony_ci
71bd4fe43Sopenharmony_ciVI功能框图如下:
81bd4fe43Sopenharmony_ci
91bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/002VI%E5%8A%9F%E8%83%BD%E6%A1%86%E5%9B%BE.png)
101bd4fe43Sopenharmony_ci
111bd4fe43Sopenharmony_ciVI从软件上划分了输入设备(DEV),输入PIPE (图示为物理PIPE,虚拟PIPE只包含ISP_BE)、物理通道(PHY_CHN)、扩展通道(EXT_CHN)四个层级。Hi3516DV300的设备、PIPE、通道个数差异如下表所示:
121bd4fe43Sopenharmony_ci
131bd4fe43Sopenharmony_ci| 芯片        | DEV <br />VI_MAX_ DEV_NUM | PHY_PIPE<br />VI_MAX_PHY<br />_PIPE_NUM | VIR_PIPE <br />VI_MAX_VIR<br />_PIPE_NUM | PHY_CHN<br />VI_MAX_PHY<br />_CHN_NUM | EXT_CHN<br />VI_MAX<br />_EXT_CHN_NUM |
141bd4fe43Sopenharmony_ci| ----------- | :-----------------------: | --------------------------------------- | ---------------------------------------- | ------------------------------------- | :-----------------------------------: |
151bd4fe43Sopenharmony_ci| Hi3516DV300 |             2             | 4                                       | 0                                        | 1                                     |                   8                   |
161bd4fe43Sopenharmony_ci
171bd4fe43Sopenharmony_ciHi3516DV300视频输入通道功能如下图所示:
181bd4fe43Sopenharmony_ci
191bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/004%E8%A7%86%E9%A2%91%E9%A9%B6%E5%85%A5%E9%80%9A%E9%81%93%E5%8A%9F%E8%83%BD.png)
201bd4fe43Sopenharmony_ci
211bd4fe43Sopenharmony_ci#### 3.1.2.2 VI实现方式
221bd4fe43Sopenharmony_ci
231bd4fe43Sopenharmony_ci在helloworld中,VI部分实现细节如下:
241bd4fe43Sopenharmony_ci
251bd4fe43Sopenharmony_ci##### 3.1.2.2.1 config vi
261bd4fe43Sopenharmony_ci
271bd4fe43Sopenharmony_ci配置vi参数首先要对Sensor的参数进行配置,其中,SAMPLE_COMM_VI_GetSensorInfo接口是获取Sensor信息,该接口是对SAMPLE_VI_CONFIG_S结构体的配置, SAMPLE_VI_CONFIG_S如下图所示:
281bd4fe43Sopenharmony_ci
291bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/005SAMPLE_VI_CONFIG_S.png)
301bd4fe43Sopenharmony_ci
311bd4fe43Sopenharmony_ci分析SAMPLE_VI_CONFIG_S结构体,核心是对SAMPLE_VI_INFO_S结构体进行配置,如下图所示:
321bd4fe43Sopenharmony_ci
331bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/006SAMPLE_VI_INFO_S.png)
341bd4fe43Sopenharmony_ci
351bd4fe43Sopenharmony_ci分析SAMPLE_VI_INFO_S结构体,其围绕SAMPLE_SENSOR_INFO_S、SAMPLE_DEV_INFO_S、SAMPLE_PIPE_INFO_S、SAMPLE_CHN_INFO_S、SAMPLE_SNAP_INFO_S结构体来展开,其每个结果体成员定义如下:
361bd4fe43Sopenharmony_ci
371bd4fe43Sopenharmony_ci**SAMPLE_SENSOR_INFO_S:**
381bd4fe43Sopenharmony_ci
391bd4fe43Sopenharmony_ci该结构体成员分别定义:SnsType、SnsId、BusId、MipiDev成员。
401bd4fe43Sopenharmony_ci
411bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/007SAMPLE_SENSOR_INFO_S.png)
421bd4fe43Sopenharmony_ci
431bd4fe43Sopenharmony_ci**SAMPLE_DEV_INFO_S:**
441bd4fe43Sopenharmony_ci
451bd4fe43Sopenharmony_ci该结构体定义:ViDev、WDRMode成员。
461bd4fe43Sopenharmony_ci
471bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/008SAMPLE_DEV_INFO_S.png)
481bd4fe43Sopenharmony_ci
491bd4fe43Sopenharmony_ci**SAMPLE_PIPE_INFO_S:**
501bd4fe43Sopenharmony_ci
511bd4fe43Sopenharmony_ci该结构体定义:Pipe、MastPipeMode、MultiPipe、VcNumCfged、IspBypass、PixFmt、VCNum结构体成员。
521bd4fe43Sopenharmony_ci
531bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/009SAMPLE_PIPE_INFO_S.png)
541bd4fe43Sopenharmony_ci
551bd4fe43Sopenharmony_ci**SAMPLE_CHN_INFO_S:**
561bd4fe43Sopenharmony_ci
571bd4fe43Sopenharmony_ci该结构体成员定义:ViChn、PixFormat、DynamicRange、VideoFormat、CompressMode成员。
581bd4fe43Sopenharmony_ci
591bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/010SAMPLE_CHN_INFO_S.png)
601bd4fe43Sopenharmony_ci
611bd4fe43Sopenharmony_ci**SAMPLE_SNAP_INFO_S:**
621bd4fe43Sopenharmony_ci
631bd4fe43Sopenharmony_ci该结构体成员定义:Snap、DoublePipe、VideoPipe、SnapPipe、VideoPipeMode、SnapPipeMode成员。
641bd4fe43Sopenharmony_ci
651bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/011SAMPLE_SNAP_INFO_S.png)
661bd4fe43Sopenharmony_ci
671bd4fe43Sopenharmony_ci关于上述结构体列举的枚举型成员,自行查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/common/sample_comm.h**文件,该文件里面详细定义枚举型成员,这里不再详细阐述。
681bd4fe43Sopenharmony_ci
691bd4fe43Sopenharmony_ciSAMPLE_COMM_VI_GetSensorInfo接口实现细节,如下图所示:
701bd4fe43Sopenharmony_ci
711bd4fe43Sopenharmony_ci可参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/platform/common/中的sample_comm_vi.c文件**
721bd4fe43Sopenharmony_ci
731bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/012SAMPLE_VIO_VPSS_VO_MIPI.png)
741bd4fe43Sopenharmony_ci
751bd4fe43Sopenharmony_ci配置vi还需要配置SAMPLE_VI_CONFIG_S其他成员元素,实现细节如下:
761bd4fe43Sopenharmony_ci
771bd4fe43Sopenharmony_ci以下截图可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件中找到
781bd4fe43Sopenharmony_ci
791bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/187VIPramCfg.png)
801bd4fe43Sopenharmony_ci
811bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/188ConfigVi.png)
821bd4fe43Sopenharmony_ci
831bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/189ViCfgSetChn.png)
841bd4fe43Sopenharmony_ci
851bd4fe43Sopenharmony_ci##### 3.1.2.2.2 get picture size
861bd4fe43Sopenharmony_ci
871bd4fe43Sopenharmony_ciSAMPLE_COMM_VI_GetSizeBySensor接口通过sensor型号来获取图片的大小,通过enPicSize输出,如PIC_1080P,实现接口如下:
881bd4fe43Sopenharmony_ci
891bd4fe43Sopenharmony_ci可参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c**中的int SampleVioVpssVoMipi(void)接口中的get picture size部分。
901bd4fe43Sopenharmony_ci
911bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/014SAMPLE_COMM_VI_GetSizeBySensor.png)
921bd4fe43Sopenharmony_ci
931bd4fe43Sopenharmony_ci根据SAMPLE_COMM_VI_GetSizeBySensor接口输出的enPicSize来得到图片的width和height,实现方式通过SAMPLE_COMM_SYS_GetPicSize来实现,如下图所示:
941bd4fe43Sopenharmony_ci
951bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/015SAMPLE_COMM_SYS_GetPicSize.png)
961bd4fe43Sopenharmony_ci
971bd4fe43Sopenharmony_ciSAMPLE_COMM_VI_GetSizeBySensor和SAMPLE_COMM_SYS_GetPicSize接口实现方式较为简单,读者自行查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/common/目录**下的**sample_comm_vi.csample_comm_sys.c**即可。
981bd4fe43Sopenharmony_ci
991bd4fe43Sopenharmony_ci##### 3.1.2.2.3 config vb and get picture/raw buffer size
1001bd4fe43Sopenharmony_ci
1011bd4fe43Sopenharmony_ci启动vi之前,需要配置vb(视频缓存池),视频缓存池的概念如下:
1021bd4fe43Sopenharmony_ci
1031bd4fe43Sopenharmony_ci视频缓存池主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。
1041bd4fe43Sopenharmony_ci
1051bd4fe43Sopenharmony_ci一组大小相同、物理地址连续的缓存块组成一个视频缓存池。必须在系统初始化之前配置公共视频缓存池。根据业务的不同,公共缓存池的数量、缓存块的大小和数量不同。
1061bd4fe43Sopenharmony_ci
1071bd4fe43Sopenharmony_ci所有的视频输入通道都可以从公共视频缓存池中获取视频缓存块用于保存采集的图像,如下图所示,VI从公共视频缓存池B中获取视频缓存块Bm,缓存块Bm经VI发送给VPSS,输入缓存块Bm经过VPSS处理之后被释放回公共视频缓存池。假设VPSS通道的工作模式是USER,则VPSS通道0从公共视频缓存池B中获取缓存块Bi作为输出图像缓存buffer发送给VENC,VPSS通道1从公共视频缓存池B中获取缓存块Bk作为输出图像缓存buffer发送给VO,Bi经VENC编码完之后释放回公共视频缓存池,Bk经VO显示完之后释放回公共视频缓存池。
1081bd4fe43Sopenharmony_ci
1091bd4fe43Sopenharmony_ci典型的公共视频缓存池数据流图如下图所示:
1101bd4fe43Sopenharmony_ci
1111bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/016%E5%85%AC%E5%85%B1%E8%A7%86%E9%A2%91%E7%BC%93%E5%AD%98%E6%B1%A0%E6%95%B0%E6%8D%AE%E6%B5%81%E5%9B%BE.png)
1121bd4fe43Sopenharmony_ci
1131bd4fe43Sopenharmony_ci**注:**不同类型的视频缓存池大小计算请参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》文档中的表2-1中的hi_buffer.h内容。
1141bd4fe43Sopenharmony_ci
1151bd4fe43Sopenharmony_ci核心配置VB_CONFIG_S结构体,该结构体定义如下:
1161bd4fe43Sopenharmony_ci
1171bd4fe43Sopenharmony_ci以下结构体可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_vb.h文件中找到
1181bd4fe43Sopenharmony_ci
1191bd4fe43Sopenharmony_ci**VB_CONFIG_S**
1201bd4fe43Sopenharmony_ci
1211bd4fe43Sopenharmony_ci【说明】
1221bd4fe43Sopenharmony_ci
1231bd4fe43Sopenharmony_ci* 定义视频缓存池属性结构体
1241bd4fe43Sopenharmony_ci
1251bd4fe43Sopenharmony_ci【定义】
1261bd4fe43Sopenharmony_ci
1271bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/017%E8%A7%86%E9%A2%91%E7%BC%93%E5%AD%98%E6%B1%A0%E5%B1%9E%E6%80%A7%E7%BB%93%E6%9E%84%E4%BD%93.png)
1281bd4fe43Sopenharmony_ci
1291bd4fe43Sopenharmony_ci【成员】
1301bd4fe43Sopenharmony_ci
1311bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/018%E8%A7%86%E9%A2%91%E7%BC%93%E5%AD%98%E6%B1%A0%E5%B1%9E%E6%80%A7%E7%BB%93%E6%9E%84%E4%BD%93%E6%88%90%E5%91%98.png)
1321bd4fe43Sopenharmony_ci
1331bd4fe43Sopenharmony_ci**【注意事项】**
1341bd4fe43Sopenharmony_ci
1351bd4fe43Sopenharmony_ci* u32BlkSize等于0或u32BlkCnt等于0,则对应的缓存池不会被创建。
1361bd4fe43Sopenharmony_ci
1371bd4fe43Sopenharmony_ci* 建议整个结构体先memset为0再按需赋值。
1381bd4fe43Sopenharmony_ci
1391bd4fe43Sopenharmony_ci**对VB_CONFIG_S中嵌套的VB_POOL_CONFIG_S结构体进行说明。**
1401bd4fe43Sopenharmony_ci
1411bd4fe43Sopenharmony_ci**VB_POOL_CONFIG_S**
1421bd4fe43Sopenharmony_ci
1431bd4fe43Sopenharmony_ci【说明】
1441bd4fe43Sopenharmony_ci
1451bd4fe43Sopenharmony_ci* 定义视频缓存池属性结构体。
1461bd4fe43Sopenharmony_ci
1471bd4fe43Sopenharmony_ci【定义】
1481bd4fe43Sopenharmony_ci
1491bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/019VB_POOL_CONFIG_S.png)
1501bd4fe43Sopenharmony_ci
1511bd4fe43Sopenharmony_ci【成员】
1521bd4fe43Sopenharmony_ci
1531bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/020VB_POOL_CONFIG_S%E6%88%90%E5%91%98.png)
1541bd4fe43Sopenharmony_ci
1551bd4fe43Sopenharmony_ci【注意事项】
1561bd4fe43Sopenharmony_ci
1571bd4fe43Sopenharmony_ci*  每个缓存块的大小u64BlkSize应根据当前图像宽高、像素格式、数据位宽、是否压缩等来计算。详细计算方法请参见**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》表2-1和代码[hi_buffer.h](https://gitee.com/openharmony/device_soc_hisilicon/blob/master/hi3516dv300/sdk_linux/include/hi_buffer.h)里面各种格式的图像存储计算公式。
1581bd4fe43Sopenharmony_ci
1591bd4fe43Sopenharmony_ci* 该缓存池是从空闲MMZ内存中分配,一个缓存池包含若干个大小相同的缓存块。如果该缓存池的大小超过了保留内存中的空闲空间,则创建缓存池会失败。
1601bd4fe43Sopenharmony_ci
1611bd4fe43Sopenharmony_ci* 用户需保证输入的DDR名字已经存在,如果输入不存在DDR的名字,会造成分不到内存。如果数组acMmzName被memset为0则表示在没有命名的DDR中创建缓存池。
1621bd4fe43Sopenharmony_ci
1631bd4fe43Sopenharmony_ci**对VB_POOL_CONFIG_S中嵌套的结构体VB_REMAP_MODE_E进行解释。**
1641bd4fe43Sopenharmony_ci
1651bd4fe43Sopenharmony_ci**VB_REMAP_MODE_E**
1661bd4fe43Sopenharmony_ci
1671bd4fe43Sopenharmony_ci【说明】
1681bd4fe43Sopenharmony_ci
1691bd4fe43Sopenharmony_ci* 定义VB内核态虚拟地址映射模式。
1701bd4fe43Sopenharmony_ci
1711bd4fe43Sopenharmony_ci【定义】
1721bd4fe43Sopenharmony_ci
1731bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/021VB_REMAP_MODE_E.png)
1741bd4fe43Sopenharmony_ci
1751bd4fe43Sopenharmony_ci【成员】
1761bd4fe43Sopenharmony_ci
1771bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/022VB_REMAP_MODE_E%E6%88%90%E5%91%98.png)
1781bd4fe43Sopenharmony_ci
1791bd4fe43Sopenharmony_ci【注意事项】
1801bd4fe43Sopenharmony_ci
1811bd4fe43Sopenharmony_ci* 无
1821bd4fe43Sopenharmony_ci
1831bd4fe43Sopenharmony_ci
1841bd4fe43Sopenharmony_ci
1851bd4fe43Sopenharmony_ci**配置vb具体的代码实现方式如下图所示:**
1861bd4fe43Sopenharmony_ci
1871bd4fe43Sopenharmony_ci* 可参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件中** StVbParamCfg( )函数。
1881bd4fe43Sopenharmony_ci
1891bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/023config%20vb.png.png)
1901bd4fe43Sopenharmony_ci
1911bd4fe43Sopenharmony_ci**get picture buffer size和get raw buffer size代码实现方式如下图所示:**
1921bd4fe43Sopenharmony_ci
1931bd4fe43Sopenharmony_ci* 可参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c中的**HI_S32 int SampleVioVpssVoMipi(void)接口中的get picture buffer size部分和get raw buffer size部分。
1941bd4fe43Sopenharmony_ci
1951bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/024get%20picture%20buffer%20size.png)
1961bd4fe43Sopenharmony_ci
1971bd4fe43Sopenharmony_ci##### 3.1.2.2.4 Vb init & MPI system init
1981bd4fe43Sopenharmony_ci
1991bd4fe43Sopenharmony_ci通过**HI_S32 SAMPLE_COMM_SYS_Init(VB_CONFIG_S* pstVbConfig);**接口进行system初始化,可参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c中**的**int SampleVioVpssVoMipi(void)**接口中的**vb init & MPI system init**部分,如下图所示:
2001bd4fe43Sopenharmony_ci
2011bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/025vb%20init.png)
2021bd4fe43Sopenharmony_ci
2031bd4fe43Sopenharmony_ci进入device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/common/sample_comm_sys.c的SAMPLE_COMM_SYS_Init接口,对其调用的底层接口进行说明和阐述,调用的接口如下:
2041bd4fe43Sopenharmony_ci
2051bd4fe43Sopenharmony_ci以下接口可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_sys.h文件中找到
2061bd4fe43Sopenharmony_ci
2071bd4fe43Sopenharmony_ci**HI_MPI_SYS_Exit**
2081bd4fe43Sopenharmony_ci
2091bd4fe43Sopenharmony_ci【描述】
2101bd4fe43Sopenharmony_ci
2111bd4fe43Sopenharmony_ci* 去初始化MPP系统。包括音频输入输出、视频输入输出、视频编解码、视频叠加区域、视频处理、图形处理等模块都会被销毁或者禁用
2121bd4fe43Sopenharmony_ci
2131bd4fe43Sopenharmony_ci【语法】
2141bd4fe43Sopenharmony_ci
2151bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_SYS_Exit(HI_VOID);
2161bd4fe43Sopenharmony_ci
2171bd4fe43Sopenharmony_ci【参数】
2181bd4fe43Sopenharmony_ci
2191bd4fe43Sopenharmony_ci* 无
2201bd4fe43Sopenharmony_ci
2211bd4fe43Sopenharmony_ci【返回值】
2221bd4fe43Sopenharmony_ci
2231bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/026HI_MPI_SYS_Exit%E8%BF%94%E5%9B%9E%E5%80%BC.png)
2241bd4fe43Sopenharmony_ci
2251bd4fe43Sopenharmony_ci【需求】
2261bd4fe43Sopenharmony_ci
2271bd4fe43Sopenharmony_ci* 头文件:hi_comm_sys.hmpi_sys.h
2281bd4fe43Sopenharmony_ci
2291bd4fe43Sopenharmony_ci* 库文件:libmpi.a
2301bd4fe43Sopenharmony_ci
2311bd4fe43Sopenharmony_ci【注意】
2321bd4fe43Sopenharmony_ci
2331bd4fe43Sopenharmony_ci* 去初始化时,如果有阻塞在MPI上的用户进程,则去初始化会失败。如果所有阻塞在MPI上的调用都返回,则可以成功去初始化。
2341bd4fe43Sopenharmony_ci
2351bd4fe43Sopenharmony_ci* 可以反复去初始化,不返回失败。
2361bd4fe43Sopenharmony_ci
2371bd4fe43Sopenharmony_ci* 由于系统去初始化不会销毁音频的编解码通道,因此这些通道的销毁需要用户主动进行。如果创建这些通道的进程退出,则通道随之被销毁。
2381bd4fe43Sopenharmony_ci
2391bd4fe43Sopenharmony_ci**注:本章节涉及到的错误码请参考源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中的《HiMPP媒体处理软件V4.0开发参考.pdf》指导手册中对应的错误码**
2401bd4fe43Sopenharmony_ci
2411bd4fe43Sopenharmony_ci以下四个接口可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_vb.h文件中找到
2421bd4fe43Sopenharmony_ci
2431bd4fe43Sopenharmony_ci**HI_MPI_VB_Exit**
2441bd4fe43Sopenharmony_ci
2451bd4fe43Sopenharmony_ci【描述】
2461bd4fe43Sopenharmony_ci
2471bd4fe43Sopenharmony_ci* 去初始化MPP视频缓存池。
2481bd4fe43Sopenharmony_ci
2491bd4fe43Sopenharmony_ci【语法】
2501bd4fe43Sopenharmony_ci
2511bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VB_Exit (HI_VOID);
2521bd4fe43Sopenharmony_ci
2531bd4fe43Sopenharmony_ci【参数】
2541bd4fe43Sopenharmony_ci
2551bd4fe43Sopenharmony_ci* 无。
2561bd4fe43Sopenharmony_ci
2571bd4fe43Sopenharmony_ci【返回值】
2581bd4fe43Sopenharmony_ci
2591bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/027HI_MPI_VB_Exit%E8%BF%94%E5%9B%9E%E5%80%BC.png)
2601bd4fe43Sopenharmony_ci
2611bd4fe43Sopenharmony_ci【需求】
2621bd4fe43Sopenharmony_ci
2631bd4fe43Sopenharmony_ci* 头文件:hi_comm_vb.hmpi_vb.h
2641bd4fe43Sopenharmony_ci
2651bd4fe43Sopenharmony_ci* 库文件:libmpi.a
2661bd4fe43Sopenharmony_ci
2671bd4fe43Sopenharmony_ci【注意】
2681bd4fe43Sopenharmony_ci
2691bd4fe43Sopenharmony_ci* 必须先调用HI_MPI_SYS_Exit去初始化MPP系统,再去初始化缓存池,否则返回失败。
2701bd4fe43Sopenharmony_ci
2711bd4fe43Sopenharmony_ci* 可以反复去初始化,不返回失败。
2721bd4fe43Sopenharmony_ci
2731bd4fe43Sopenharmony_ci* 去初始化不会清除先前对缓存池的配置。
2741bd4fe43Sopenharmony_ci
2751bd4fe43Sopenharmony_ci* 退出VB池之前请确保VB池里的任何VB都没有被占用,否则无法退出。
2761bd4fe43Sopenharmony_ci
2771bd4fe43Sopenharmony_ci**HI_MPI_VB_SetConfig**
2781bd4fe43Sopenharmony_ci
2791bd4fe43Sopenharmony_ci【描述】
2801bd4fe43Sopenharmony_ci
2811bd4fe43Sopenharmony_ci* 设置MPP视频缓存池属性。
2821bd4fe43Sopenharmony_ci
2831bd4fe43Sopenharmony_ci【语法】
2841bd4fe43Sopenharmony_ci
2851bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VB_SetConfig(const VB_CONFIG_S *pstVbConfig);
2861bd4fe43Sopenharmony_ci
2871bd4fe43Sopenharmony_ci【参数】
2881bd4fe43Sopenharmony_ci
2891bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/028HI_MPI_VB_SetConfig%E5%8F%82%E6%95%B0.png)
2901bd4fe43Sopenharmony_ci
2911bd4fe43Sopenharmony_ci【返回值】
2921bd4fe43Sopenharmony_ci
2931bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/029HI_MPI_VB_SetConfig%E8%BF%94%E5%9B%9E%E5%80%BC.png)
2941bd4fe43Sopenharmony_ci
2951bd4fe43Sopenharmony_ci【需求】
2961bd4fe43Sopenharmony_ci
2971bd4fe43Sopenharmony_ci* 头文件:hi_comm_vb.hmpi_vb.h
2981bd4fe43Sopenharmony_ci
2991bd4fe43Sopenharmony_ci* 库文件:libmpi.a
3001bd4fe43Sopenharmony_ci
3011bd4fe43Sopenharmony_ci【注意】
3021bd4fe43Sopenharmony_ci
3031bd4fe43Sopenharmony_ci* 只能在系统处于未初始化的状态下,才可以设置缓存池属性,否则会返回失败。
3041bd4fe43Sopenharmony_ci
3051bd4fe43Sopenharmony_ci* video buf根据不同的应用场景需要不同的配置。配置规则参见**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》2.2.1 “视频缓存池”。
3061bd4fe43Sopenharmony_ci
3071bd4fe43Sopenharmony_ci* 公共缓存池中每个缓存块的大小应根据当前图像像素格式以及图像是否压缩而有所不同。具体分配大小请参考VB_CONFIG_S结构体中的描述。
3081bd4fe43Sopenharmony_ci
3091bd4fe43Sopenharmony_ci**HI_MPI_VB_Init**
3101bd4fe43Sopenharmony_ci
3111bd4fe43Sopenharmony_ci【描述】
3121bd4fe43Sopenharmony_ci
3131bd4fe43Sopenharmony_ci* 初始化MPP视频缓存池。
3141bd4fe43Sopenharmony_ci
3151bd4fe43Sopenharmony_ci【语法】
3161bd4fe43Sopenharmony_ci
3171bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VB_Init (HI_VOID);
3181bd4fe43Sopenharmony_ci
3191bd4fe43Sopenharmony_ci【参数】
3201bd4fe43Sopenharmony_ci
3211bd4fe43Sopenharmony_ci* 无。
3221bd4fe43Sopenharmony_ci
3231bd4fe43Sopenharmony_ci【返回值】
3241bd4fe43Sopenharmony_ci
3251bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/030HI_MPI_VB_Init%E8%BF%94%E5%9B%9E%E5%80%BC.png)
3261bd4fe43Sopenharmony_ci
3271bd4fe43Sopenharmony_ci【需求】
3281bd4fe43Sopenharmony_ci
3291bd4fe43Sopenharmony_ci* 头文件:hi_comm_vb.hmpi_vb.h
3301bd4fe43Sopenharmony_ci
3311bd4fe43Sopenharmony_ci* 库文件:libmpi.a
3321bd4fe43Sopenharmony_ci
3331bd4fe43Sopenharmony_ci【注意】
3341bd4fe43Sopenharmony_ci
3351bd4fe43Sopenharmony_ci* 必须先调用HI_MPI_VB_SetConfig配置缓存池属性,再初始化缓存池,否则会失败。
3361bd4fe43Sopenharmony_ci
3371bd4fe43Sopenharmony_ci* 可反复初始化,不返回失败。
3381bd4fe43Sopenharmony_ci
3391bd4fe43Sopenharmony_ci**HI_MPI_SYS_Init**
3401bd4fe43Sopenharmony_ci
3411bd4fe43Sopenharmony_ci【描述】
3421bd4fe43Sopenharmony_ci
3431bd4fe43Sopenharmony_ci* 初始化MPP系统。包括音频输入输出、视频输入输出、视频编解码、视频叠加区域、视频处理、图形处理等模块都会被初始化。
3441bd4fe43Sopenharmony_ci
3451bd4fe43Sopenharmony_ci【语法】
3461bd4fe43Sopenharmony_ci
3471bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_SYS_Init(HI_VOID);
3481bd4fe43Sopenharmony_ci
3491bd4fe43Sopenharmony_ci【参数】
3501bd4fe43Sopenharmony_ci
3511bd4fe43Sopenharmony_ci* 无。
3521bd4fe43Sopenharmony_ci
3531bd4fe43Sopenharmony_ci【返回值】
3541bd4fe43Sopenharmony_ci
3551bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/031HI_MPI_SYS_Init%E8%BF%94%E5%9B%9E%E5%80%BC.png)
3561bd4fe43Sopenharmony_ci
3571bd4fe43Sopenharmony_ci【需求】
3581bd4fe43Sopenharmony_ci
3591bd4fe43Sopenharmony_ci* 头文件:hi_comm_sys.hmpi_sys.h
3601bd4fe43Sopenharmony_ci
3611bd4fe43Sopenharmony_ci* 库文件:libmpi.a
3621bd4fe43Sopenharmony_ci
3631bd4fe43Sopenharmony_ci【注意】
3641bd4fe43Sopenharmony_ci
3651bd4fe43Sopenharmony_ci* 必须先调用HI_MPI_SYS_SetConfig配置MPP系统后才能初始化,否则初始化会失败。
3661bd4fe43Sopenharmony_ci* 由于MPP系统的正常运行依赖于缓存池,因此需要先调用HI_MPI_VB_Init初始化缓存池,再初始化MPP系统,否则会导致业务运行异常。
3671bd4fe43Sopenharmony_ci* 如果多次初始化,仍会返回成功,但实际上系统不会对MPP的运行状态有任何影响。
3681bd4fe43Sopenharmony_ci* 只要有一个进程进行初始化即可,不需要所有的进程都做系统初始化的操作。
3691bd4fe43Sopenharmony_ci* 由于音频模块依赖用户态属性,故音频不支持多进程操作。用户需要保证音频的相关操作和HI_MPI_SYS_Init在同一个进程中。
3701bd4fe43Sopenharmony_ci
3711bd4fe43Sopenharmony_ciSAMPLE_COMM_SYS_Init接口实现细节如下:
3721bd4fe43Sopenharmony_ci
3731bd4fe43Sopenharmony_ci以下截图可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/common/sample_comm_sys.c文件中找到
3741bd4fe43Sopenharmony_ci
3751bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/032SAMPLE_COMM_SYS_Init%E6%8E%A5%E5%8F%A3.png)
3761bd4fe43Sopenharmony_ci
3771bd4fe43Sopenharmony_ci##### 3.1.2.2.5 start vi
3781bd4fe43Sopenharmony_ci
3791bd4fe43Sopenharmony_ci通过SAMPLE_COMM_VI_StartVi接口实现启动vi功能,可参考
3801bd4fe43Sopenharmony_ci
3811bd4fe43Sopenharmony_ci**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c中**的
3821bd4fe43Sopenharmony_ci
3831bd4fe43Sopenharmony_ci**int SampleVioVpssVoMipi(void)**接口中的start vi部分,如下图所示:
3841bd4fe43Sopenharmony_ci
3851bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/033start%20vi.png)
3861bd4fe43Sopenharmony_ci
3871bd4fe43Sopenharmony_ci针对SAMPLE_COMM_VI_StartVi 调用的底层接口进行如下解释和说明:
3881bd4fe43Sopenharmony_ci
3891bd4fe43Sopenharmony_ciHI_S32 SAMPLE_COMM_VI_StartVi(SAMPLE_VI_CONFIG_S * pstViConfig)接口开启vi,包括SAMPLE_COMM_VI_StartMIPI()、SAMPLE_COMM_VI_SetParam()、SAMPLE_COMM_VI_CreateVi()、SAMPLE_COMM_VI_CreateIsp()等接口。
3901bd4fe43Sopenharmony_ci
3911bd4fe43Sopenharmony_ci这些接口都可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/common/sample_comm_vi.c文件中找到
3921bd4fe43Sopenharmony_ci
3931bd4fe43Sopenharmony_ci**(1) SAMPLE_COMM_VI_StartMIPI()**
3941bd4fe43Sopenharmony_ci
3951bd4fe43Sopenharmony_ci该接口为初始化MIPI。
3961bd4fe43Sopenharmony_ci
3971bd4fe43Sopenharmony_ci**(2) SAMPLE_COMM_VI_SetParam()**
3981bd4fe43Sopenharmony_ci
3991bd4fe43Sopenharmony_ci该接口涉及到的关键接口HI_MPI_SYS_GetVIVPSSMode、HI_MPI_SYS_SetVIVPSSMode,下面逐一进行解读。
4001bd4fe43Sopenharmony_ci
4011bd4fe43Sopenharmony_ci以下接口可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_sys.h文件中找到
4021bd4fe43Sopenharmony_ci
4031bd4fe43Sopenharmony_ci**HI_MPI_SYS_GetVIVPSSMode**
4041bd4fe43Sopenharmony_ci
4051bd4fe43Sopenharmony_ci【描述】
4061bd4fe43Sopenharmony_ci
4071bd4fe43Sopenharmony_ci获取VI、VPSS的工作模式
4081bd4fe43Sopenharmony_ci
4091bd4fe43Sopenharmony_ci【语法】
4101bd4fe43Sopenharmony_ci
4111bd4fe43Sopenharmony_ciHI_S32 HI_MPI_SYS_GetVIVPSSMode(VI_VPSS_MODE_S* pstVIVPSSMode);
4121bd4fe43Sopenharmony_ci
4131bd4fe43Sopenharmony_ci【参数】
4141bd4fe43Sopenharmony_ci
4151bd4fe43Sopenharmony_ci| 参数名称      | 描述            | 输入/输出 |
4161bd4fe43Sopenharmony_ci| ------------- | --------------- | --------- |
4171bd4fe43Sopenharmony_ci| pstVIVPSSMode | VI/VPSS工作模式 | 输出      |
4181bd4fe43Sopenharmony_ci
4191bd4fe43Sopenharmony_ci【返回值】
4201bd4fe43Sopenharmony_ci
4211bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/034HI_MPI_SYS_GetVIVPSSMode%E8%BF%94%E5%9B%9E%E5%80%BC.png)
4221bd4fe43Sopenharmony_ci
4231bd4fe43Sopenharmony_ci【需求】
4241bd4fe43Sopenharmony_ci
4251bd4fe43Sopenharmony_ci* 头文件:hi_comm_sys.hmpi_sys.h
4261bd4fe43Sopenharmony_ci
4271bd4fe43Sopenharmony_ci* 库文件:libmpi.a
4281bd4fe43Sopenharmony_ci
4291bd4fe43Sopenharmony_ci针对HI_MPI_SYS_GetVIVPSSMode接口的出参VI_VPSS_MODE_S结构体进行说明:
4301bd4fe43Sopenharmony_ci
4311bd4fe43Sopenharmony_ci**VI_VPSS_MODE_S**
4321bd4fe43Sopenharmony_ci
4331bd4fe43Sopenharmony_ci【说明】
4341bd4fe43Sopenharmony_ci
4351bd4fe43Sopenharmony_ci* 定义VI PIPE和VPSS组的工作模式
4361bd4fe43Sopenharmony_ci
4371bd4fe43Sopenharmony_ci【定义】
4381bd4fe43Sopenharmony_ci
4391bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/035VI_VPSS_MODE_S%E5%AE%9A%E4%B9%89.png)
4401bd4fe43Sopenharmony_ci
4411bd4fe43Sopenharmony_ci【成员】
4421bd4fe43Sopenharmony_ci
4431bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/036VI_VPSS_MODE_S%E6%88%90%E5%91%98.png)
4441bd4fe43Sopenharmony_ci
4451bd4fe43Sopenharmony_ci【注意事项】
4461bd4fe43Sopenharmony_ci
4471bd4fe43Sopenharmony_ciHi3559AV100ES只支持VI_OFFLINE_VPSS_OFFLINE,VI_ONLINE_VPSS_OFFLINE,VI_PARALLEL_VPSS_OFFLINE三种模式
4481bd4fe43Sopenharmony_ci
4491bd4fe43Sopenharmony_ciVI_VPSS_MODE_S嵌套VI_VPSS_MODE_E结构体,对该枚举型结构体说明如下:
4501bd4fe43Sopenharmony_ci
4511bd4fe43Sopenharmony_ci**VI_VPSS_MODE_E**
4521bd4fe43Sopenharmony_ci
4531bd4fe43Sopenharmony_ci【说明】
4541bd4fe43Sopenharmony_ci
4551bd4fe43Sopenharmony_ci定义VI PIPE和VPSS组的工作模式。
4561bd4fe43Sopenharmony_ci
4571bd4fe43Sopenharmony_ci【定义】
4581bd4fe43Sopenharmony_ci
4591bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/037VI_VPSS_MODE_E%E5%AE%9A%E4%B9%89.png)
4601bd4fe43Sopenharmony_ci
4611bd4fe43Sopenharmony_ci【成员】
4621bd4fe43Sopenharmony_ci
4631bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/038VI_VPSS_MODE_E%E6%88%90%E5%91%98.png)
4641bd4fe43Sopenharmony_ci
4651bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/039VI_VPSS_MODE_E%E6%88%90%E5%91%98.png)
4661bd4fe43Sopenharmony_ci
4671bd4fe43Sopenharmony_ci【注意事项】
4681bd4fe43Sopenharmony_ci
4691bd4fe43Sopenharmony_ci* VI_OFFLINE_VPSS_ONLINE,VI_ONLINE_VPSS_ONLINE,VI_PARALLEL_VPSS_PARALLEL模式下VI PIPE编号与VPSS GROUP号一一对应,数据从VI PIPE流动到VPSS GROUP,不需要软件设定绑定关系。
4701bd4fe43Sopenharmony_ci
4711bd4fe43Sopenharmony_ci**HI_MPI_SYS_SetVIVPSSMode**
4721bd4fe43Sopenharmony_ci
4731bd4fe43Sopenharmony_ci【描述】
4741bd4fe43Sopenharmony_ci
4751bd4fe43Sopenharmony_ci* 设置VI、VPSS工作模式。
4761bd4fe43Sopenharmony_ci
4771bd4fe43Sopenharmony_ci【语法】
4781bd4fe43Sopenharmony_ci
4791bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_SYS_SetVIVPSSMode(const VI_VPSS_MODE_S* pstVIVPSSMode);
4801bd4fe43Sopenharmony_ci
4811bd4fe43Sopenharmony_ci【参数】
4821bd4fe43Sopenharmony_ci
4831bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/040HI_MPI_SYS_SetVIVPSSMode%E5%8F%82%E6%95%B0.png)
4841bd4fe43Sopenharmony_ci
4851bd4fe43Sopenharmony_ci【返回值】
4861bd4fe43Sopenharmony_ci
4871bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/041HI_MPI_SYS_SetVIVPSSMode%E8%BF%94%E5%9B%9E%E5%80%BC.png)
4881bd4fe43Sopenharmony_ci
4891bd4fe43Sopenharmony_ci【需求】
4901bd4fe43Sopenharmony_ci
4911bd4fe43Sopenharmony_ci* 头文件:hi_comm_sys.hmpi_sys.h
4921bd4fe43Sopenharmony_ci
4931bd4fe43Sopenharmony_ci* 库文件:libmpi.a
4941bd4fe43Sopenharmony_ci
4951bd4fe43Sopenharmony_ci【注意】
4961bd4fe43Sopenharmony_ci
4971bd4fe43Sopenharmony_ci* 必须在HI_MPI_SYS_Init后,所有的VI PIPE和所有的VPSS组创建前设置。
4981bd4fe43Sopenharmony_ci
4991bd4fe43Sopenharmony_ci
5001bd4fe43Sopenharmony_ci
5011bd4fe43Sopenharmony_ci**(3) SAMPLE_COMM_VI_CreateVi()**
5021bd4fe43Sopenharmony_ci
5031bd4fe43Sopenharmony_ci以下接口可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_vi.h文件中找到
5041bd4fe43Sopenharmony_ci
5051bd4fe43Sopenharmony_ci**HI_MPI_VI_SetDevAttr**
5061bd4fe43Sopenharmony_ci
5071bd4fe43Sopenharmony_ci【描述】
5081bd4fe43Sopenharmony_ci
5091bd4fe43Sopenharmony_ci* 设置VI设备属性。基本设备属性默认了部分芯片配置,满足大部分的sensor对接要求。
5101bd4fe43Sopenharmony_ci
5111bd4fe43Sopenharmony_ci【语法】
5121bd4fe43Sopenharmony_ci
5131bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_SetDevAttr(VI_DEV ViDev, const VI_DEV_ATTR_S *pstDevAttr);
5141bd4fe43Sopenharmony_ci
5151bd4fe43Sopenharmony_ci【参数】
5161bd4fe43Sopenharmony_ci
5171bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/042HI_MPI_VI_SetDevAttr%E5%8F%82%E6%95%B0.png)
5181bd4fe43Sopenharmony_ci
5191bd4fe43Sopenharmony_ci【返回值】
5201bd4fe43Sopenharmony_ci
5211bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/043HI_MPI_VI_SetDevAttr%E8%BF%94%E5%9B%9E%E5%80%BC.png)
5221bd4fe43Sopenharmony_ci
5231bd4fe43Sopenharmony_ci【芯片差异】
5241bd4fe43Sopenharmony_ci
5251bd4fe43Sopenharmony_ci无。
5261bd4fe43Sopenharmony_ci
5271bd4fe43Sopenharmony_ci【需求】
5281bd4fe43Sopenharmony_ci
5291bd4fe43Sopenharmony_ci* 头文件: hi_comm_vi.hmpi_vi.h
5301bd4fe43Sopenharmony_ci
5311bd4fe43Sopenharmony_ci* 库文件:libmpi.a
5321bd4fe43Sopenharmony_ci
5331bd4fe43Sopenharmony_ci【注意】
5341bd4fe43Sopenharmony_ci
5351bd4fe43Sopenharmony_ci* 不支持BT.1120隔行输入。
5361bd4fe43Sopenharmony_ci
5371bd4fe43Sopenharmony_ci* 在调用前要保证VI设备处于禁用状态。如果VI设备已处于使能状态,可以使用HI_MPI_VI_DisableDev来禁用设备
5381bd4fe43Sopenharmony_ci
5391bd4fe43Sopenharmony_ci* 参数pstDevAttr主要用来配置指定VI设备的视频接口模式,用于与外围camera、sensor或codec对接,支持的接口模式包括MIPI Rx(MIPI/LVDS/HISPI)、SLVS-EC。用户需要配置以下几类信息,具体属性意义参见**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》3.6“数据类型”部分的说明:
5401bd4fe43Sopenharmony_ci  * 接口模式信息:接口模式为MIPI Rx(MIPI/LVDS/HISPI)、SLVS-EC等模式
5411bd4fe43Sopenharmony_ci  * 工作模式信息:1路、2路、4路复合模式
5421bd4fe43Sopenharmony_ci  * 数据布局信息:复合模式下多路数据的排布
5431bd4fe43Sopenharmony_ci  *  数据信息:逐行输入、YUV数据输入顺序
5441bd4fe43Sopenharmony_ci  * 同步时序信息:垂直、水平同步信号的属性
5451bd4fe43Sopenharmony_ci
5461bd4fe43Sopenharmony_ci* WDR模式下不支持BAS功能。
5471bd4fe43Sopenharmony_ci
5481bd4fe43Sopenharmony_ci
5491bd4fe43Sopenharmony_ci
5501bd4fe43Sopenharmony_ci针对HI_MPI_VI_SetDevAttr 接口参数涉及到VI_DEV_ATTR_S结构体进行说明:
5511bd4fe43Sopenharmony_ci
5521bd4fe43Sopenharmony_ci以下结构体可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_vi.h文件中找到
5531bd4fe43Sopenharmony_ci
5541bd4fe43Sopenharmony_ci**VI_DEV_ATTR_S**
5551bd4fe43Sopenharmony_ci
5561bd4fe43Sopenharmony_ci【说明】
5571bd4fe43Sopenharmony_ci
5581bd4fe43Sopenharmony_ci定义视频输入设备的属性
5591bd4fe43Sopenharmony_ci
5601bd4fe43Sopenharmony_ci【定义】
5611bd4fe43Sopenharmony_ci
5621bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/044VI_DEV_ATTR_S%E5%AE%9A%E4%B9%89.png)
5631bd4fe43Sopenharmony_ci
5641bd4fe43Sopenharmony_ci【成员】
5651bd4fe43Sopenharmony_ci
5661bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/045VI_DEV_ATTR_S%E6%88%90%E5%91%98.png)
5671bd4fe43Sopenharmony_ci
5681bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/046VI_DEV_ATTR_S%E6%88%90%E5%91%98.png)
5691bd4fe43Sopenharmony_ci
5701bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/047VI_DEV_ATTR_S%E6%88%90%E5%91%98.png)
5711bd4fe43Sopenharmony_ci
5721bd4fe43Sopenharmony_ci【芯片差异】
5731bd4fe43Sopenharmony_ci
5741bd4fe43Sopenharmony_ci* 自行查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》VI_DEV_ATTR_S结构体芯片差异部分。
5751bd4fe43Sopenharmony_ci
5761bd4fe43Sopenharmony_ci【注意事项】
5771bd4fe43Sopenharmony_ci
5781bd4fe43Sopenharmony_ci* as32AdChnId为无效参数,推荐统一将数组as32AdChnId的值都设为-1
5791bd4fe43Sopenharmony_ci
5801bd4fe43Sopenharmony_ci* 不支持多路复合只有1路复合工作模式,必须设置为VI_WORK_MODE_1Multiplex,否则报错。
5811bd4fe43Sopenharmony_ci
5821bd4fe43Sopenharmony_ci* stSize中u32Width必须等于实际输入图像的宽度,u32Height必须等于实际输入图像的高度,否则会导致没有图像输出。
5831bd4fe43Sopenharmony_ci
5841bd4fe43Sopenharmony_ci* 只有DEV0支持DATA_RATE_X2。enDataRate的值需与mipi_data_rate_t(详情请参考MIPI章节)保持一致。
5851bd4fe43Sopenharmony_ci
5861bd4fe43Sopenharmony_ci* 并行模式时,必须配置enDataRate为DATA_RATE_X2。
5871bd4fe43Sopenharmony_ci
5881bd4fe43Sopenharmony_ci* DATA_RATE_X2通路配置:MIPI0配置为MIPI_DATA_RATE_X2,DEV0配置DATA_RATE_X2,DEV0绑定PIPE0,其他通路不支持。
5891bd4fe43Sopenharmony_ci
5901bd4fe43Sopenharmony_ci* 当接口模式为VI_MODE_MIPI_YUV420_NORMAL,VI_MODE_MIPI_YUV420_LEGACY,VI_MODE_MIPI_YUV422时bDataReverse必须为HI_FALSE,且掩码的设置必须为au32ComponentMask[0] = 0xFF000000,au32ComponentMask[1]= 0x00FF0000,即高8bit输入Y数据,低8bit输入C数据,否则会导致图像异常或无图像等现像。
5911bd4fe43Sopenharmony_ci
5921bd4fe43Sopenharmony_ci**HI_MPI_VI_EnableDev**
5931bd4fe43Sopenharmony_ci
5941bd4fe43Sopenharmony_ci【描述】
5951bd4fe43Sopenharmony_ci
5961bd4fe43Sopenharmony_ci* 启动VI设备
5971bd4fe43Sopenharmony_ci
5981bd4fe43Sopenharmony_ci【语法】
5991bd4fe43Sopenharmony_ci
6001bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_EnableDev(VI_DEV ViDev);
6011bd4fe43Sopenharmony_ci
6021bd4fe43Sopenharmony_ci【参数】
6031bd4fe43Sopenharmony_ci
6041bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/048HI_MPI_VI_EnableDev%E5%8F%82%E6%95%B0.png)
6051bd4fe43Sopenharmony_ci
6061bd4fe43Sopenharmony_ci【返回值】
6071bd4fe43Sopenharmony_ci
6081bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/049HI_MPI_VI_EnableDev%E8%BF%94%E5%9B%9E%E5%80%BC.png)
6091bd4fe43Sopenharmony_ci
6101bd4fe43Sopenharmony_ci【芯片差异】
6111bd4fe43Sopenharmony_ci
6121bd4fe43Sopenharmony_ci* 无。
6131bd4fe43Sopenharmony_ci
6141bd4fe43Sopenharmony_ci【需求】
6151bd4fe43Sopenharmony_ci
6161bd4fe43Sopenharmony_ci* 头文件:hi_comm_vi.hmpi_vi.h
6171bd4fe43Sopenharmony_ci
6181bd4fe43Sopenharmony_ci* 库文件:libmpi.a
6191bd4fe43Sopenharmony_ci
6201bd4fe43Sopenharmony_ci【注意】
6211bd4fe43Sopenharmony_ci
6221bd4fe43Sopenharmony_ci* 启用前必须已经设置设备属性,否则返回失败。
6231bd4fe43Sopenharmony_ci
6241bd4fe43Sopenharmony_ci* 可重复启用,不返回失败。
6251bd4fe43Sopenharmony_ci
6261bd4fe43Sopenharmony_ci* Hi3516DV300支持同时启动两个VI DEV。
6271bd4fe43Sopenharmony_ci
6281bd4fe43Sopenharmony_ci**HI_MPI_VI_SetDevBindPipe**
6291bd4fe43Sopenharmony_ci
6301bd4fe43Sopenharmony_ci【描述】
6311bd4fe43Sopenharmony_ci
6321bd4fe43Sopenharmony_ci* 设置VI设备与物理PIPE的绑定关系
6331bd4fe43Sopenharmony_ci
6341bd4fe43Sopenharmony_ci【语法】
6351bd4fe43Sopenharmony_ci
6361bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_SetDevBindPipe(VI_DEV ViDev, const VI_DEV_BIND_PIPE_S *pstDevBindPipe);
6371bd4fe43Sopenharmony_ci
6381bd4fe43Sopenharmony_ci【参数】
6391bd4fe43Sopenharmony_ci
6401bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/050HI_MPI_VI_SetDevBindPipe%E5%8F%82%E6%95%B0.png)
6411bd4fe43Sopenharmony_ci
6421bd4fe43Sopenharmony_ci【返回值】
6431bd4fe43Sopenharmony_ci
6441bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/051HI_MPI_VI_SetDevBindPipe%E8%BF%94%E5%9B%9E%E5%80%BC.png)
6451bd4fe43Sopenharmony_ci
6461bd4fe43Sopenharmony_ci【芯片差异】
6471bd4fe43Sopenharmony_ci
6481bd4fe43Sopenharmony_ci* 无
6491bd4fe43Sopenharmony_ci
6501bd4fe43Sopenharmony_ci【需求】
6511bd4fe43Sopenharmony_ci
6521bd4fe43Sopenharmony_ci* 头文件:hi_comm_vi.hmpi_vi.h
6531bd4fe43Sopenharmony_ci
6541bd4fe43Sopenharmony_ci* 库文件:libmpi.a
6551bd4fe43Sopenharmony_ci
6561bd4fe43Sopenharmony_ci
6571bd4fe43Sopenharmony_ci
6581bd4fe43Sopenharmony_ci针对HI_MPI_VI_SetDevBindPipe接口入参涉及的VI_DEV_BIND_PIPE_S进行如下说明:
6591bd4fe43Sopenharmony_ci
6601bd4fe43Sopenharmony_ci**VI_DEV_BIND_PIPE_S**
6611bd4fe43Sopenharmony_ci
6621bd4fe43Sopenharmony_ci【说明】
6631bd4fe43Sopenharmony_ci
6641bd4fe43Sopenharmony_ci* 定义 VI DEV 与 PIPE 的绑定关系。
6651bd4fe43Sopenharmony_ci
6661bd4fe43Sopenharmony_ci【定义】
6671bd4fe43Sopenharmony_ci
6681bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/052VI_DEV_BIND_PIPE_S%E5%AE%9A%E4%B9%89.png)
6691bd4fe43Sopenharmony_ci
6701bd4fe43Sopenharmony_ci【成员】
6711bd4fe43Sopenharmony_ci
6721bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/053VI_DEV_BIND_PIPE_S%E6%88%90%E5%91%98.png)
6731bd4fe43Sopenharmony_ci
6741bd4fe43Sopenharmony_ci【注意】
6751bd4fe43Sopenharmony_ci
6761bd4fe43Sopenharmony_ci* 无。
6771bd4fe43Sopenharmony_ci
6781bd4fe43Sopenharmony_ci**HI_MPI_VI_CreatePipe**
6791bd4fe43Sopenharmony_ci
6801bd4fe43Sopenharmony_ci【描述】
6811bd4fe43Sopenharmony_ci
6821bd4fe43Sopenharmony_ci* 创建一个VI PIPE
6831bd4fe43Sopenharmony_ci
6841bd4fe43Sopenharmony_ci【语法】
6851bd4fe43Sopenharmony_ci
6861bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_CreatePipe(VI_PIPE ViPipe, const VI_PIPE_ATTR_S *pstPipeAttr);
6871bd4fe43Sopenharmony_ci
6881bd4fe43Sopenharmony_ci【参数】
6891bd4fe43Sopenharmony_ci
6901bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/054HI_MPI_VI_CreatePipe%E5%8F%82%E6%95%B0.png)
6911bd4fe43Sopenharmony_ci
6921bd4fe43Sopenharmony_ci【返回值】
6931bd4fe43Sopenharmony_ci
6941bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/055HI_MPI_VI_CreatePipe%E5%8F%82%E6%95%B0.png)
6951bd4fe43Sopenharmony_ci
6961bd4fe43Sopenharmony_ci【芯片差异】
6971bd4fe43Sopenharmony_ci
6981bd4fe43Sopenharmony_ci* 自行查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》HI_MPI_VI_CreatePipe芯片差异部分。
6991bd4fe43Sopenharmony_ci
7001bd4fe43Sopenharmony_ci【需求】
7011bd4fe43Sopenharmony_ci
7021bd4fe43Sopenharmony_ci* 头文件:hi_comm_vi.hmpi_vi.h
7031bd4fe43Sopenharmony_ci
7041bd4fe43Sopenharmony_ci* 库文件:libmpi.a
7051bd4fe43Sopenharmony_ci
7061bd4fe43Sopenharmony_ci【注意】
7071bd4fe43Sopenharmony_ci
7081bd4fe43Sopenharmony_ci* 只有PIPE0支持并行模式。
7091bd4fe43Sopenharmony_ci
7101bd4fe43Sopenharmony_ci* 物理PIPE属性中的u32MaxW、u32MaxH、enPixFmt、enBitWidth等必须与前端进入VI的时序设置保持一致,否则会出现错误。
7111bd4fe43Sopenharmony_ci
7121bd4fe43Sopenharmony_ci* 不支持重复创建。
7131bd4fe43Sopenharmony_ci
7141bd4fe43Sopenharmony_ci* 当VI离线且输入图像大于4096时,不支持压缩。
7151bd4fe43Sopenharmony_ci
7161bd4fe43Sopenharmony_ci* WDR模式下需要创建多个物理PIPE绑定到同一个开了WDR的设备上,当进行切换时,需要把所有绑定到该设备的物理PIPE销毁再重建。不能使用上次使用过而未销毁的物理PIPE,否则可能造成错误。
7171bd4fe43Sopenharmony_ci
7181bd4fe43Sopenharmony_ci
7191bd4fe43Sopenharmony_ci
7201bd4fe43Sopenharmony_ci针对HI_MPI_VI_CreatePipe接口中入参VI_PIPE_ATTR_S结构体进行如下说明:
7211bd4fe43Sopenharmony_ci
7221bd4fe43Sopenharmony_ci**VI_PIPE_ATTR_S**
7231bd4fe43Sopenharmony_ci
7241bd4fe43Sopenharmony_ci【描述】
7251bd4fe43Sopenharmony_ci
7261bd4fe43Sopenharmony_ci* 设置VI PIPE属性
7271bd4fe43Sopenharmony_ci
7281bd4fe43Sopenharmony_ci【定义】
7291bd4fe43Sopenharmony_ci
7301bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/056VI_PIPE_ATTR_S%E5%AE%9A%E4%B9%89.png)
7311bd4fe43Sopenharmony_ci
7321bd4fe43Sopenharmony_ci【成员】
7331bd4fe43Sopenharmony_ci
7341bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/057VI_PIPE_ATTR_S%E6%88%90%E5%91%98.png)
7351bd4fe43Sopenharmony_ci
7361bd4fe43Sopenharmony_ci<img src="./figures/hispark_taurus_helloworld_sample/058VI_PIPE_ATTR_S%E6%88%90%E5%91%98.png" style="zoom:130%;" />
7371bd4fe43Sopenharmony_ci
7381bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/059VI_PIPE_ATTR_S%E6%88%90%E5%91%98.png)
7391bd4fe43Sopenharmony_ci
7401bd4fe43Sopenharmony_ci【芯片差异】
7411bd4fe43Sopenharmony_ci
7421bd4fe43Sopenharmony_ci* 自行查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》VI_PIPE_ATTR_S结构体芯片差异内容。
7431bd4fe43Sopenharmony_ci
7441bd4fe43Sopenharmony_ci【注意事项】
7451bd4fe43Sopenharmony_ci
7461bd4fe43Sopenharmony_ci* 自行查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》VI_PIPE_ATTR_S结构体注意事项内容。
7471bd4fe43Sopenharmony_ci
7481bd4fe43Sopenharmony_ci**HI_MPI_VI_SetPipeVCNumber**
7491bd4fe43Sopenharmony_ci
7501bd4fe43Sopenharmony_ci【描述】
7511bd4fe43Sopenharmony_ci
7521bd4fe43Sopenharmony_ci* 设置VI物理PIPE对接前端sensor或者AD的VC号。
7531bd4fe43Sopenharmony_ci
7541bd4fe43Sopenharmony_ci【语法】
7551bd4fe43Sopenharmony_ci
7561bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_SetPipeVCNumber(VI_PIPE ViPipe, HI_U32 u32VCNumber); 
7571bd4fe43Sopenharmony_ci
7581bd4fe43Sopenharmony_ci【参数】
7591bd4fe43Sopenharmony_ci
7601bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/060HI_MPI_VI_SetPipeVCNumber%E5%8F%82%E6%95%B0.png)
7611bd4fe43Sopenharmony_ci
7621bd4fe43Sopenharmony_ci【返回值】
7631bd4fe43Sopenharmony_ci
7641bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/061HI_MPI_VI_SetPipeVCNumber%E8%BF%94%E5%9B%9E%E5%80%BC.png)
7651bd4fe43Sopenharmony_ci
7661bd4fe43Sopenharmony_ci【芯片差异】
7671bd4fe43Sopenharmony_ci
7681bd4fe43Sopenharmony_ci* 无。
7691bd4fe43Sopenharmony_ci
7701bd4fe43Sopenharmony_ci【需求】
7711bd4fe43Sopenharmony_ci
7721bd4fe43Sopenharmony_ci* 头文件:mpi_vi.h
7731bd4fe43Sopenharmony_ci
7741bd4fe43Sopenharmony_ci【注意】
7751bd4fe43Sopenharmony_ci
7761bd4fe43Sopenharmony_ci* 必须在 PIPE 创建后,使能之前调用。
7771bd4fe43Sopenharmony_ci
7781bd4fe43Sopenharmony_ci* 虚拟 PIPE 不支持。
7791bd4fe43Sopenharmony_ci
7801bd4fe43Sopenharmony_ci  
7811bd4fe43Sopenharmony_ci
7821bd4fe43Sopenharmony_ci**HI_MPI_VI_DestroyPipe**
7831bd4fe43Sopenharmony_ci
7841bd4fe43Sopenharmony_ci【描述】
7851bd4fe43Sopenharmony_ci
7861bd4fe43Sopenharmony_ci* 销毁一个VI PIPE
7871bd4fe43Sopenharmony_ci
7881bd4fe43Sopenharmony_ci【语法】
7891bd4fe43Sopenharmony_ci
7901bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_DestroyPipe(VI_PIPE ViPipe);
7911bd4fe43Sopenharmony_ci
7921bd4fe43Sopenharmony_ci【参数】
7931bd4fe43Sopenharmony_ci
7941bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/062HI_MPI_VI_DestroyPipe%20%E5%8F%82%E6%95%B0.png)
7951bd4fe43Sopenharmony_ci
7961bd4fe43Sopenharmony_ci【返回值】
7971bd4fe43Sopenharmony_ci
7981bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/063HI_MPI_VI_DestroyPipe%E8%BF%94%E5%9B%9E%E5%80%BC.png)
7991bd4fe43Sopenharmony_ci
8001bd4fe43Sopenharmony_ci【芯片差异】
8011bd4fe43Sopenharmony_ci
8021bd4fe43Sopenharmony_ci* 无。
8031bd4fe43Sopenharmony_ci
8041bd4fe43Sopenharmony_ci【需求】
8051bd4fe43Sopenharmony_ci
8061bd4fe43Sopenharmony_ci* 头文件:hi_comm.hmpi_vi.h
8071bd4fe43Sopenharmony_ci
8081bd4fe43Sopenharmony_ci【注意】
8091bd4fe43Sopenharmony_ci
8101bd4fe43Sopenharmony_ci* 使用本接口前,需先调用HI_MPI_VI_StopPipe(ViPipe)停止PIPE,否则提示失败。
8111bd4fe43Sopenharmony_ci* 在未创建PIPE或重复销毁PIPE时,调用本接口,将提示PIPE不存在。
8121bd4fe43Sopenharmony_ci
8131bd4fe43Sopenharmony_ci
8141bd4fe43Sopenharmony_ci
8151bd4fe43Sopenharmony_ci**HI_MPI_VI_StartPipe**
8161bd4fe43Sopenharmony_ci
8171bd4fe43Sopenharmony_ci【配置】
8181bd4fe43Sopenharmony_ci
8191bd4fe43Sopenharmony_ci* 启用VI PIPE
8201bd4fe43Sopenharmony_ci
8211bd4fe43Sopenharmony_ci【语法】
8221bd4fe43Sopenharmony_ci
8231bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_StartPipe(VI_PIPE ViPipe);
8241bd4fe43Sopenharmony_ci
8251bd4fe43Sopenharmony_ci【参数】
8261bd4fe43Sopenharmony_ci
8271bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/064HI_MPI_VI_StartPipe%E5%8F%82%E6%95%B0.png)
8281bd4fe43Sopenharmony_ci
8291bd4fe43Sopenharmony_ci【返回值】
8301bd4fe43Sopenharmony_ci
8311bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/065HI_MPI_VI_StartPipe%E8%BF%94%E5%9B%9E%E5%80%BC.png)
8321bd4fe43Sopenharmony_ci
8331bd4fe43Sopenharmony_ci【芯片差异】
8341bd4fe43Sopenharmony_ci
8351bd4fe43Sopenharmony_ci* 无
8361bd4fe43Sopenharmony_ci
8371bd4fe43Sopenharmony_ci【需求】
8381bd4fe43Sopenharmony_ci
8391bd4fe43Sopenharmony_ci* 头文件:hi_comm_vi.hmpi_vi.h
8401bd4fe43Sopenharmony_ci
8411bd4fe43Sopenharmony_ci* 库文件:libmpi.a
8421bd4fe43Sopenharmony_ci
8431bd4fe43Sopenharmony_ci【注意】
8441bd4fe43Sopenharmony_ci
8451bd4fe43Sopenharmony_ci* PIPE必须已创建
8461bd4fe43Sopenharmony_ci* 重复调用该函数设置同一个PIPE返回成功。
8471bd4fe43Sopenharmony_ci
8481bd4fe43Sopenharmony_ci
8491bd4fe43Sopenharmony_ci
8501bd4fe43Sopenharmony_ci**HI_MPI_VI_SetChnAttr**
8511bd4fe43Sopenharmony_ci
8521bd4fe43Sopenharmony_ci【描述】
8531bd4fe43Sopenharmony_ci
8541bd4fe43Sopenharmony_ci* 设置VI通道属性
8551bd4fe43Sopenharmony_ci
8561bd4fe43Sopenharmony_ci【语法】
8571bd4fe43Sopenharmony_ci
8581bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_SetChnAttr(VI_PIPE ViPipe, VI_CHN ViChn, const VI_CHN_ATTR_S *pstChnAttr);
8591bd4fe43Sopenharmony_ci
8601bd4fe43Sopenharmony_ci【参数】
8611bd4fe43Sopenharmony_ci
8621bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/066%20HI_MPI_VI_SetChnAttr%E5%8F%82%E6%95%B0.png)
8631bd4fe43Sopenharmony_ci
8641bd4fe43Sopenharmony_ci【返回值】
8651bd4fe43Sopenharmony_ci
8661bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/067HI_MPI_VI_SetChnAttr%E8%BF%94%E5%9B%9E%E5%80%BC.png)
8671bd4fe43Sopenharmony_ci
8681bd4fe43Sopenharmony_ci【芯片差异】
8691bd4fe43Sopenharmony_ci
8701bd4fe43Sopenharmony_ci* 自行查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》中的HI_MPI_VI_SetChnAttr芯片差异内容。
8711bd4fe43Sopenharmony_ci
8721bd4fe43Sopenharmony_ci【注意事项】
8731bd4fe43Sopenharmony_ci
8741bd4fe43Sopenharmony_ci* 自行查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》中的HI_MPI_VI_SetChnAttr注意事项内容。
8751bd4fe43Sopenharmony_ci
8761bd4fe43Sopenharmony_ci
8771bd4fe43Sopenharmony_ci
8781bd4fe43Sopenharmony_ci**HI_MPI_VI_EnableChn**
8791bd4fe43Sopenharmony_ci
8801bd4fe43Sopenharmony_ci【描述】
8811bd4fe43Sopenharmony_ci
8821bd4fe43Sopenharmony_ci* 启动VI通道
8831bd4fe43Sopenharmony_ci
8841bd4fe43Sopenharmony_ci【语法】
8851bd4fe43Sopenharmony_ci
8861bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_EnableChn(VI_PIPE ViPipe, VI_CHN ViChn);
8871bd4fe43Sopenharmony_ci
8881bd4fe43Sopenharmony_ci【参数】
8891bd4fe43Sopenharmony_ci
8901bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/068HI_MPI_VI_EnableChn%E5%8F%82%E6%95%B0.png)
8911bd4fe43Sopenharmony_ci
8921bd4fe43Sopenharmony_ci【返回值】
8931bd4fe43Sopenharmony_ci
8941bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/069HI_MPI_VI_EnableChn%E8%BF%94%E5%9B%9E%E5%80%BC.png)
8951bd4fe43Sopenharmony_ci
8961bd4fe43Sopenharmony_ci【芯片差异】
8971bd4fe43Sopenharmony_ci
8981bd4fe43Sopenharmony_ci* 无
8991bd4fe43Sopenharmony_ci
9001bd4fe43Sopenharmony_ci【需求】
9011bd4fe43Sopenharmony_ci
9021bd4fe43Sopenharmony_ci* 头文件:hi_comm_vi.hmpi_vi.h
9031bd4fe43Sopenharmony_ci
9041bd4fe43Sopenharmony_ci* 库文件:libmpi.h
9051bd4fe43Sopenharmony_ci
9061bd4fe43Sopenharmony_ci【注意】
9071bd4fe43Sopenharmony_ci
9081bd4fe43Sopenharmony_ci* PIPE必须已创建,否则会返回失败。
9091bd4fe43Sopenharmony_ci* 必须先设置通道属性。 
9101bd4fe43Sopenharmony_ci* 若启用扩展通道,则必须保证此通道绑定的源物理通道已经使能,否则返回失败错误码。 
9111bd4fe43Sopenharmony_ci* 可重复启用VI通道,不返回失败。 
9121bd4fe43Sopenharmony_ci* VI在线VPSS在线模式、VI 离线VPSS在线模式,VI并行VPSS并行模式下,启动VI通道不生效,直接返回成功。
9131bd4fe43Sopenharmony_ci
9141bd4fe43Sopenharmony_ci
9151bd4fe43Sopenharmony_ci
9161bd4fe43Sopenharmony_ci**HI_MPI_VI_StopPipe**
9171bd4fe43Sopenharmony_ci
9181bd4fe43Sopenharmony_ci【描述】
9191bd4fe43Sopenharmony_ci
9201bd4fe43Sopenharmony_ci* 禁用VI PIPE。
9211bd4fe43Sopenharmony_ci
9221bd4fe43Sopenharmony_ci【语法】
9231bd4fe43Sopenharmony_ci
9241bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_StopPipe(VI_PIPE ViPipe);
9251bd4fe43Sopenharmony_ci
9261bd4fe43Sopenharmony_ci【参数】
9271bd4fe43Sopenharmony_ci
9281bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/070HI_MPI_VI_StopPipe%E5%8F%82%E6%95%B0.png)
9291bd4fe43Sopenharmony_ci
9301bd4fe43Sopenharmony_ci【返回值】
9311bd4fe43Sopenharmony_ci
9321bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/071HI_MPI_VI_StopPipe%E8%BF%94%E5%9B%9E%E5%80%BC.png)
9331bd4fe43Sopenharmony_ci
9341bd4fe43Sopenharmony_ci【芯片差异】
9351bd4fe43Sopenharmony_ci
9361bd4fe43Sopenharmony_ci* 无。
9371bd4fe43Sopenharmony_ci
9381bd4fe43Sopenharmony_ci【需求】
9391bd4fe43Sopenharmony_ci
9401bd4fe43Sopenharmony_ci* 头文件:hi_comm_vi.hmpi_vi.h
9411bd4fe43Sopenharmony_ci
9421bd4fe43Sopenharmony_ci【注意】
9431bd4fe43Sopenharmony_ci
9441bd4fe43Sopenharmony_ci* PIPE必须已创建。
9451bd4fe43Sopenharmony_ci
9461bd4fe43Sopenharmony_ci* 重复调用该函数设置同一个PIPE返回成功。
9471bd4fe43Sopenharmony_ci
9481bd4fe43Sopenharmony_ci
9491bd4fe43Sopenharmony_ci
9501bd4fe43Sopenharmony_ci**HI_MPI_VI_DisableDev**
9511bd4fe43Sopenharmony_ci
9521bd4fe43Sopenharmony_ci【描述】
9531bd4fe43Sopenharmony_ci
9541bd4fe43Sopenharmony_ci* 禁用VI设备。
9551bd4fe43Sopenharmony_ci
9561bd4fe43Sopenharmony_ci【语法】
9571bd4fe43Sopenharmony_ci
9581bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_DisableDev(VI_DEV ViDev);
9591bd4fe43Sopenharmony_ci
9601bd4fe43Sopenharmony_ci【参数】
9611bd4fe43Sopenharmony_ci
9621bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/072HI_MPI_VI_DisableDev%E5%8F%82%E6%95%B0.png)
9631bd4fe43Sopenharmony_ci
9641bd4fe43Sopenharmony_ci【返回值】
9651bd4fe43Sopenharmony_ci
9661bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/073HI_MPI_VI_DisableDev%E8%BF%94%E5%9B%9E%E5%80%BC.png)
9671bd4fe43Sopenharmony_ci
9681bd4fe43Sopenharmony_ci【芯片差异】
9691bd4fe43Sopenharmony_ci
9701bd4fe43Sopenharmony_ci* 无。
9711bd4fe43Sopenharmony_ci
9721bd4fe43Sopenharmony_ci【需求】
9731bd4fe43Sopenharmony_ci
9741bd4fe43Sopenharmony_ci* 头文件:hi_comm_vi.hmpi_vi.h
9751bd4fe43Sopenharmony_ci
9761bd4fe43Sopenharmony_ci* 库文件:libmpi.a
9771bd4fe43Sopenharmony_ci
9781bd4fe43Sopenharmony_ci【注意】
9791bd4fe43Sopenharmony_ci
9801bd4fe43Sopenharmony_ci* 需先销毁所有与该VI设备绑定的物理PIPE后,再禁用VI设备
9811bd4fe43Sopenharmony_ci
9821bd4fe43Sopenharmony_ci* 可重复禁用,不返回失败。
9831bd4fe43Sopenharmony_ci
9841bd4fe43Sopenharmony_ci* 支持低功耗处理,禁用VI设备后将完全关闭该设备,需要重新设置属性,才能使能VI设备。
9851bd4fe43Sopenharmony_ci
9861bd4fe43Sopenharmony_ci
9871bd4fe43Sopenharmony_ci
9881bd4fe43Sopenharmony_ci**HI_MPI_VI_DisableChn**
9891bd4fe43Sopenharmony_ci
9901bd4fe43Sopenharmony_ci【描述】
9911bd4fe43Sopenharmony_ci
9921bd4fe43Sopenharmony_ci* 禁用VI通道。
9931bd4fe43Sopenharmony_ci
9941bd4fe43Sopenharmony_ci【语法】
9951bd4fe43Sopenharmony_ci
9961bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VI_DisableChn(VI_PIPE ViPipe, VI_CHN ViChn);
9971bd4fe43Sopenharmony_ci
9981bd4fe43Sopenharmony_ci【参数】
9991bd4fe43Sopenharmony_ci
10001bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/074HI_MPI_VI_DisableChn%E5%8F%82%E6%95%B0.png)
10011bd4fe43Sopenharmony_ci
10021bd4fe43Sopenharmony_ci【返回值】
10031bd4fe43Sopenharmony_ci
10041bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/075HI_MPI_VI_DisableChn%E8%BF%94%E5%9B%9E%E5%80%BC.png)
10051bd4fe43Sopenharmony_ci
10061bd4fe43Sopenharmony_ci【芯片差异】
10071bd4fe43Sopenharmony_ci
10081bd4fe43Sopenharmony_ci* 无。
10091bd4fe43Sopenharmony_ci
10101bd4fe43Sopenharmony_ci【需求】
10111bd4fe43Sopenharmony_ci
10121bd4fe43Sopenharmony_ci* 头文件:hi_comm_vi.hmpi_vi.h
10131bd4fe43Sopenharmony_ci
10141bd4fe43Sopenharmony_ci* 库文件:libmpi.a
10151bd4fe43Sopenharmony_ci
10161bd4fe43Sopenharmony_ci【注意】
10171bd4fe43Sopenharmony_ci
10181bd4fe43Sopenharmony_ci* PIPE必须已创建,否则会返回失败。
10191bd4fe43Sopenharmony_ci
10201bd4fe43Sopenharmony_ci* 若禁用物理通道,则必须保证此通道绑定的扩展通道已经全部禁用,否则返回失败的错误码。
10211bd4fe43Sopenharmony_ci
10221bd4fe43Sopenharmony_ci* 可重复禁用VI通道,不返回失败。
10231bd4fe43Sopenharmony_ci
10241bd4fe43Sopenharmony_ci* VI在线VPSS在线模式、VI离线VPSS在线模式,VI并行VPSS并行模式下,禁用VI通道不生效,直接返回成功。
10251bd4fe43Sopenharmony_ci
10261bd4fe43Sopenharmony_ci
10271bd4fe43Sopenharmony_ci
10281bd4fe43Sopenharmony_ci**SAMPLE_COMM_VI_CreateIsp**
10291bd4fe43Sopenharmony_ci
10301bd4fe43Sopenharmony_ciISP通过一系列数字图像处理算法完成对数字图像的效果处理。主要包括3A、坏点校正、去噪、强光抑制、背光补偿、色彩增强、镜头阴影校正等处理。
10311bd4fe43Sopenharmony_ci
10321bd4fe43Sopenharmony_ciISP包括逻辑部分以及运行在其上的firmware ISP部分底层接口优先参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiISP 开发参考.pdf》指导手册,针对SAMPLE_COMM_VI_CreateIsp用到关键底层接口做如下说明:
10331bd4fe43Sopenharmony_ci
10341bd4fe43Sopenharmony_ci**注:下文涉及的所有AE库接口都只是针对上海海思AE库,如果客户自己实现AE库,不需要关注这些接口,且无法使用这些接口。所有AWB库接口都只是针对上海海思AWB库,如果客户自己实现AWB库,不需要关注这些接口,且无法使用这些接口。**
10351bd4fe43Sopenharmony_ci
10361bd4fe43Sopenharmony_ci以下接口可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_isp.h文件中找到
10371bd4fe43Sopenharmony_ci
10381bd4fe43Sopenharmony_ci**HI_MPI_ISP_MemInit**
10391bd4fe43Sopenharmony_ci
10401bd4fe43Sopenharmony_ci【描述】
10411bd4fe43Sopenharmony_ci
10421bd4fe43Sopenharmony_ci* 初始化ISP外部寄存器
10431bd4fe43Sopenharmony_ci
10441bd4fe43Sopenharmony_ci【语法】
10451bd4fe43Sopenharmony_ci
10461bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_ISP_MemInit(VI_PIPE ViPipe);
10471bd4fe43Sopenharmony_ci
10481bd4fe43Sopenharmony_ci【参数】
10491bd4fe43Sopenharmony_ci
10501bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/076HI_MPI_ISP_MemInit%E5%8F%82%E6%95%B0.png)
10511bd4fe43Sopenharmony_ci
10521bd4fe43Sopenharmony_ci【返回值】
10531bd4fe43Sopenharmony_ci
10541bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/077HI_MPI_ISP_MemInit%E8%BF%94%E5%9B%9E%E5%80%BC.png)
10551bd4fe43Sopenharmony_ci
10561bd4fe43Sopenharmony_ci【需求】
10571bd4fe43Sopenharmony_ci
10581bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_isp.h
10591bd4fe43Sopenharmony_ci
10601bd4fe43Sopenharmony_ci* 库文件:libisp.a
10611bd4fe43Sopenharmony_ci
10621bd4fe43Sopenharmony_ci【注意事项】
10631bd4fe43Sopenharmony_ci
10641bd4fe43Sopenharmony_ci* 自行查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiISP 开发参考.pdf》指导手册中的HI_MPI_ISP_MemInit结构体注意事项内容。
10651bd4fe43Sopenharmony_ci
10661bd4fe43Sopenharmony_ci**HI_MPI_ISP_Init**
10671bd4fe43Sopenharmony_ci
10681bd4fe43Sopenharmony_ci【描述】
10691bd4fe43Sopenharmony_ci
10701bd4fe43Sopenharmony_ci* 初始化ISP firmware
10711bd4fe43Sopenharmony_ci
10721bd4fe43Sopenharmony_ci【语法】
10731bd4fe43Sopenharmony_ci
10741bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_ISP_Init(VI_PIPE ViPipe);
10751bd4fe43Sopenharmony_ci
10761bd4fe43Sopenharmony_ci【参数】
10771bd4fe43Sopenharmony_ci
10781bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/078HI_MPI_ISP_Init%E5%8F%82%E6%95%B0.png)
10791bd4fe43Sopenharmony_ci
10801bd4fe43Sopenharmony_ci【返回值】
10811bd4fe43Sopenharmony_ci
10821bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/079HI_MPI_ISP_Init%E8%BF%94%E5%9B%9E%E5%80%BC.png)
10831bd4fe43Sopenharmony_ci
10841bd4fe43Sopenharmony_ci【需求】
10851bd4fe43Sopenharmony_ci
10861bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_isp.h
10871bd4fe43Sopenharmony_ci
10881bd4fe43Sopenharmony_ci* 库文件:libisp.a
10891bd4fe43Sopenharmony_ci
10901bd4fe43Sopenharmony_ci【注意】
10911bd4fe43Sopenharmony_ci
10921bd4fe43Sopenharmony_ci* 自行参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiISP 开发参考.pdf》指导手册中的HI_MPI_ISP_Init注意事项内容。
10931bd4fe43Sopenharmony_ci
10941bd4fe43Sopenharmony_ci
10951bd4fe43Sopenharmony_ci
10961bd4fe43Sopenharmony_ci**HI_MPI_ISP_Exit**
10971bd4fe43Sopenharmony_ci
10981bd4fe43Sopenharmony_ci【描述】
10991bd4fe43Sopenharmony_ci
11001bd4fe43Sopenharmony_ci* 退出ISP firmware
11011bd4fe43Sopenharmony_ci
11021bd4fe43Sopenharmony_ci【语法】
11031bd4fe43Sopenharmony_ci
11041bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_ISP_Exit(VI_PIPE ViPipe);
11051bd4fe43Sopenharmony_ci
11061bd4fe43Sopenharmony_ci【参数】
11071bd4fe43Sopenharmony_ci
11081bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/080HI_MPI_ISP_Exit%E5%8F%82%E6%95%B0.png)
11091bd4fe43Sopenharmony_ci
11101bd4fe43Sopenharmony_ci【返回值】
11111bd4fe43Sopenharmony_ci
11121bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/081HI_MPI_ISP_Exit%E8%BF%94%E5%9B%9E%E5%80%BC.png)
11131bd4fe43Sopenharmony_ci
11141bd4fe43Sopenharmony_ci【需求】
11151bd4fe43Sopenharmony_ci
11161bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_isp.h
11171bd4fe43Sopenharmony_ci
11181bd4fe43Sopenharmony_ci* 库文件:libisp.a
11191bd4fe43Sopenharmony_ci
11201bd4fe43Sopenharmony_ci【注意】
11211bd4fe43Sopenharmony_ci
11221bd4fe43Sopenharmony_ci* 调用HI_MPI_ISP_Init和HI_MPI_ISP_Run之后,再调用本接口退出ISP firmware。 
11231bd4fe43Sopenharmony_ci
11241bd4fe43Sopenharmony_ci* 不支持多进程,必须要与 sensor_register_callback、HI_MPI_AE_Register、HI_MPI_AWB_Register、HI_MPI_ISP_MemInit、HI_MPI_ISP_Init、HI_MPI_ISP_Run 接口在同一个进程调用。 
11251bd4fe43Sopenharmony_ci
11261bd4fe43Sopenharmony_ci* 支持重复调用本接口。
11271bd4fe43Sopenharmony_ci
11281bd4fe43Sopenharmony_ci* 在拼接模式时,必须先退出主pipe,后退出其他pipe。 
11291bd4fe43Sopenharmony_ci
11301bd4fe43Sopenharmony_ci* 不支持相同ViPipe时,多线程执行ISP创建和销毁(多线程同时调用sensor_register_callback、HI_MPI_AE_Register、HI_MPI_AWB_Register、HI_MPI_ISP_MemInit、HI_MPI_ISP_Init、HI_MPI_ISP_Exit) 
11311bd4fe43Sopenharmony_ci
11321bd4fe43Sopenharmony_ci* 推荐调用 HI_MPI_ISP_Init 之后,在调用本接口。
11331bd4fe43Sopenharmony_ci
11341bd4fe43Sopenharmony_ci
11351bd4fe43Sopenharmony_ci
11361bd4fe43Sopenharmony_ci**HI_MPI_ISP_SetPubAttr**
11371bd4fe43Sopenharmony_ci
11381bd4fe43Sopenharmony_ci【描述】
11391bd4fe43Sopenharmony_ci
11401bd4fe43Sopenharmony_ci* 设置 ISP 公共属性。
11411bd4fe43Sopenharmony_ci
11421bd4fe43Sopenharmony_ci【语法】
11431bd4fe43Sopenharmony_ci
11441bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_ISP_SetPubAttr(VI_PIPE ViPipe, const ISP_PUB_ATTR_S *pstPubAttr);
11451bd4fe43Sopenharmony_ci
11461bd4fe43Sopenharmony_ci【参数】
11471bd4fe43Sopenharmony_ci
11481bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/082HI_MPI_ISP_SetPubAttr%E5%8F%82%E6%95%B0.png)
11491bd4fe43Sopenharmony_ci
11501bd4fe43Sopenharmony_ci【返回值】
11511bd4fe43Sopenharmony_ci
11521bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/083HI_MPI_ISP_SetPubAttr%E8%BF%94%E5%9B%9E%E5%80%BC.png)
11531bd4fe43Sopenharmony_ci
11541bd4fe43Sopenharmony_ci【需求】
11551bd4fe43Sopenharmony_ci
11561bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_isp.h
11571bd4fe43Sopenharmony_ci
11581bd4fe43Sopenharmony_ci* 库文件:libisp.a
11591bd4fe43Sopenharmony_ci
11601bd4fe43Sopenharmony_ci【注意】
11611bd4fe43Sopenharmony_ci
11621bd4fe43Sopenharmony_ci* 自行参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiISP 开发参考.pdf》HI_MPI_ISP_SetPubAttr中的注意内容。
11631bd4fe43Sopenharmony_ci
11641bd4fe43Sopenharmony_ci
11651bd4fe43Sopenharmony_ci
11661bd4fe43Sopenharmony_ci**HI_MPI_ISP_Run**
11671bd4fe43Sopenharmony_ci
11681bd4fe43Sopenharmony_ci【描述】
11691bd4fe43Sopenharmony_ci
11701bd4fe43Sopenharmony_ci* 运行ISP firmware
11711bd4fe43Sopenharmony_ci
11721bd4fe43Sopenharmony_ci【语法】
11731bd4fe43Sopenharmony_ci
11741bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_ISP_Run(VI_PIPE ViPipe);
11751bd4fe43Sopenharmony_ci
11761bd4fe43Sopenharmony_ci【参数】
11771bd4fe43Sopenharmony_ci
11781bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/084HI_MPI_ISP_Run%E5%8F%82%E6%95%B0.png)
11791bd4fe43Sopenharmony_ci
11801bd4fe43Sopenharmony_ci【返回值】
11811bd4fe43Sopenharmony_ci
11821bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/085HI_MPI_ISP_Run%E8%BF%94%E5%9B%9E%E5%80%BC.png)
11831bd4fe43Sopenharmony_ci
11841bd4fe43Sopenharmony_ci【需求】
11851bd4fe43Sopenharmony_ci
11861bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_isp.h
11871bd4fe43Sopenharmony_ci
11881bd4fe43Sopenharmony_ci* 库文件:libisp.a
11891bd4fe43Sopenharmony_ci
11901bd4fe43Sopenharmony_ci【注意】
11911bd4fe43Sopenharmony_ci
11921bd4fe43Sopenharmony_ci* 运行前需要确保sensor已经初始化,并且向ISP注册了回调函数。
11931bd4fe43Sopenharmony_ci
11941bd4fe43Sopenharmony_ci* 运行前需要确保已调用HI_MPI_ISP_Init初始化ISP
11951bd4fe43Sopenharmony_ci
11961bd4fe43Sopenharmony_ci* 不支持多进程,必须要与sensor_register_callback、HI_MPI_AE_Register、HI_MPI_AWB_Register、HI_MPI_ISP_MemInit、HI_MPI_ISP_Init、HI_MPI_ISP_Exit接口在同一个进程调用。
11971bd4fe43Sopenharmony_ci
11981bd4fe43Sopenharmony_ci* 该接口是阻塞接口,建议用户采用实时线程处理。
11991bd4fe43Sopenharmony_ci
12001bd4fe43Sopenharmony_ci
12011bd4fe43Sopenharmony_ci
12021bd4fe43Sopenharmony_ci此接口可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_awb.h文件中找到
12031bd4fe43Sopenharmony_ci
12041bd4fe43Sopenharmony_ci**HI_MPI_AWB_UnRegister**
12051bd4fe43Sopenharmony_ci
12061bd4fe43Sopenharmony_ci【描述】
12071bd4fe43Sopenharmony_ci
12081bd4fe43Sopenharmony_ci* 向ISP注消AWB库。
12091bd4fe43Sopenharmony_ci
12101bd4fe43Sopenharmony_ci【语法】
12111bd4fe43Sopenharmony_ci
12121bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_AWB_UnRegister(VI_PIPE ViPipe, ALG_LIB_S*pstAwbLib);
12131bd4fe43Sopenharmony_ci
12141bd4fe43Sopenharmony_ci【参数】
12151bd4fe43Sopenharmony_ci
12161bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/086HI_MPI_AWB_UnRegister%E5%8F%82%E6%95%B0.png)
12171bd4fe43Sopenharmony_ci
12181bd4fe43Sopenharmony_ci【返回值】
12191bd4fe43Sopenharmony_ci
12201bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/087HI_MPI_AWB_UnRegister%E8%BF%94%E5%9B%9E%E5%80%BC.png)
12211bd4fe43Sopenharmony_ci
12221bd4fe43Sopenharmony_ci【需求】
12231bd4fe43Sopenharmony_ci
12241bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_awb.h
12251bd4fe43Sopenharmony_ci
12261bd4fe43Sopenharmony_ci* 库文件:libisp.a
12271bd4fe43Sopenharmony_ci
12281bd4fe43Sopenharmony_ci【注意】
12291bd4fe43Sopenharmony_ci
12301bd4fe43Sopenharmony_ci* 该接口调用了ISP库提供的AWB反注册回调接口HI_MPI_ISP_AWBLibRegCallBack,以实现AWB向ISP库反注册的功能。
12311bd4fe43Sopenharmony_ci* 用户调用此接口完成上海海思AWB库向ISP库反注册,此接口不支持多进程操作。
12321bd4fe43Sopenharmony_ci* 
12331bd4fe43Sopenharmony_ci
12341bd4fe43Sopenharmony_ci以下接口可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_ae.h文件中找到
12351bd4fe43Sopenharmony_ci
12361bd4fe43Sopenharmony_ci**HI_MPI_AE_UnRegister**
12371bd4fe43Sopenharmony_ci
12381bd4fe43Sopenharmony_ci【描述】
12391bd4fe43Sopenharmony_ci
12401bd4fe43Sopenharmony_ci* 向ISP反注册AE库。
12411bd4fe43Sopenharmony_ci
12421bd4fe43Sopenharmony_ci【语法】
12431bd4fe43Sopenharmony_ci
12441bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_AE_UnRegister(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib);
12451bd4fe43Sopenharmony_ci
12461bd4fe43Sopenharmony_ci【参数】
12471bd4fe43Sopenharmony_ci
12481bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/088HI_MPI_AE_UnRegister%E5%8F%82%E6%95%B0.png)
12491bd4fe43Sopenharmony_ci
12501bd4fe43Sopenharmony_ci【返回值】
12511bd4fe43Sopenharmony_ci
12521bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/089HI_MPI_AE_UnRegister%E8%BF%94%E5%9B%9E%E5%80%BC.png)
12531bd4fe43Sopenharmony_ci
12541bd4fe43Sopenharmony_ci【需求】
12551bd4fe43Sopenharmony_ci
12561bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_ae.h
12571bd4fe43Sopenharmony_ci
12581bd4fe43Sopenharmony_ci* 库文件:libisp.alib_hiae.a
12591bd4fe43Sopenharmony_ci
12601bd4fe43Sopenharmony_ci【注意】
12611bd4fe43Sopenharmony_ci
12621bd4fe43Sopenharmony_ci* 该接口调用了ISP库提供的AE反注册回调接口HI_MPI_ISP_AELibUnRegCallBack,以实现AE向ISP库反注册的功能。
12631bd4fe43Sopenharmony_ci
12641bd4fe43Sopenharmony_ci* 此接口不支持多进程操作。
12651bd4fe43Sopenharmony_ci
12661bd4fe43Sopenharmony_ci
12671bd4fe43Sopenharmony_ci
12681bd4fe43Sopenharmony_ci**HI_MPI_AE_Register**
12691bd4fe43Sopenharmony_ci
12701bd4fe43Sopenharmony_ci【描述】
12711bd4fe43Sopenharmony_ci
12721bd4fe43Sopenharmony_ci* 向ISP注册AE库。
12731bd4fe43Sopenharmony_ci
12741bd4fe43Sopenharmony_ci【语法】
12751bd4fe43Sopenharmony_ci
12761bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_AE_Register(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib);
12771bd4fe43Sopenharmony_ci
12781bd4fe43Sopenharmony_ci【参数】
12791bd4fe43Sopenharmony_ci
12801bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/090HI_MPI_AE_Register%E5%8F%82%E6%95%B0.png)
12811bd4fe43Sopenharmony_ci
12821bd4fe43Sopenharmony_ci【返回值】
12831bd4fe43Sopenharmony_ci
12841bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/091HI_MPI_AE_Register%E8%BF%94%E5%9B%9E%E5%80%BC.png)
12851bd4fe43Sopenharmony_ci
12861bd4fe43Sopenharmony_ci【需求】
12871bd4fe43Sopenharmony_ci
12881bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_ae.h
12891bd4fe43Sopenharmony_ci
12901bd4fe43Sopenharmony_ci* 库文件:libisp.alib_hiae.a
12911bd4fe43Sopenharmony_ci
12921bd4fe43Sopenharmony_ci【注意】
12931bd4fe43Sopenharmony_ci
12941bd4fe43Sopenharmony_ci* 该接口调用了ISP库提供的AE注册回调接口HI_MPI_ISP_AELibRegCallBack,以实现上海海思AE库向ISP库注册的功能。
12951bd4fe43Sopenharmony_ci* AE库可以注册多个实例。
12961bd4fe43Sopenharmony_ci* 此接口不支持多进程操作。
12971bd4fe43Sopenharmony_ci
12981bd4fe43Sopenharmony_ci
12991bd4fe43Sopenharmony_ci
13001bd4fe43Sopenharmony_ci以下接口可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_awb.h文件中找到
13011bd4fe43Sopenharmony_ci
13021bd4fe43Sopenharmony_ci**HI_MPI_AWB_Register**
13031bd4fe43Sopenharmony_ci
13041bd4fe43Sopenharmony_ci【描述】
13051bd4fe43Sopenharmony_ci
13061bd4fe43Sopenharmony_ci* 向ISP注册AWB库。
13071bd4fe43Sopenharmony_ci
13081bd4fe43Sopenharmony_ci【语法】
13091bd4fe43Sopenharmony_ci
13101bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_AWB_Register(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib);
13111bd4fe43Sopenharmony_ci
13121bd4fe43Sopenharmony_ci【参数】
13131bd4fe43Sopenharmony_ci
13141bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/092HI_MPI_AWB_Register%E5%8F%82%E6%95%B0.png)
13151bd4fe43Sopenharmony_ci
13161bd4fe43Sopenharmony_ci【返回值】
13171bd4fe43Sopenharmony_ci
13181bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/093HI_MPI_AWB_Register%E8%BF%94%E5%9B%9E%E5%80%BC.png)
13191bd4fe43Sopenharmony_ci
13201bd4fe43Sopenharmony_ci【需求】
13211bd4fe43Sopenharmony_ci
13221bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_awb.h
13231bd4fe43Sopenharmony_ci
13241bd4fe43Sopenharmony_ci* 库文件:libisp.a
13251bd4fe43Sopenharmony_ci
13261bd4fe43Sopenharmony_ci【注意】
13271bd4fe43Sopenharmony_ci
13281bd4fe43Sopenharmony_ci* 该接口调用了ISP库提供的AWB注册回调接口HI_MPI_ISP_AWBLibRegCallBack,以实现向ISP库注册的功能。
13291bd4fe43Sopenharmony_ci
13301bd4fe43Sopenharmony_ci* 用户调用此接口完成上海海思AWB库向ISP库注册。
13311bd4fe43Sopenharmony_ci
13321bd4fe43Sopenharmony_ci* AWB库可以注册多个实例,此接口不支持多进程操作。
13331bd4fe43Sopenharmony_ci
13341bd4fe43Sopenharmony_ci
13351bd4fe43Sopenharmony_ci
13361bd4fe43Sopenharmony_ci以下接口可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_isp.h文件中找到
13371bd4fe43Sopenharmony_ci
13381bd4fe43Sopenharmony_ci**HI_MPI_ISP_AWBLibRegCallBack**
13391bd4fe43Sopenharmony_ci
13401bd4fe43Sopenharmony_ci【描述】
13411bd4fe43Sopenharmony_ci
13421bd4fe43Sopenharmony_ci* ISP提供的AWB库注册的回调接口。
13431bd4fe43Sopenharmony_ci
13441bd4fe43Sopenharmony_ci【语法】
13451bd4fe43Sopenharmony_ci
13461bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_ISP_AWBLibRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib, ISP_AWB_REGISTER_S *pstRegister);
13471bd4fe43Sopenharmony_ci
13481bd4fe43Sopenharmony_ci【参数】
13491bd4fe43Sopenharmony_ci
13501bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/094HI_MPI_ISP_AWBLibRegCallBack%E5%8F%82%E6%95%B0.png)
13511bd4fe43Sopenharmony_ci
13521bd4fe43Sopenharmony_ci【返回值】
13531bd4fe43Sopenharmony_ci
13541bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/095HI_MPI_ISP_AWBLibRegCallBack%E8%BF%94%E5%9B%9E%E5%80%BCpng.png)
13551bd4fe43Sopenharmony_ci
13561bd4fe43Sopenharmony_ci【需求】
13571bd4fe43Sopenharmony_ci
13581bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_isp.h
13591bd4fe43Sopenharmony_ci
13601bd4fe43Sopenharmony_ci* 库文件:libisp.a
13611bd4fe43Sopenharmony_ci
13621bd4fe43Sopenharmony_ci【注意】
13631bd4fe43Sopenharmony_ci
13641bd4fe43Sopenharmony_ci* ISP提供统一的AWB算法库接口,初始化、运行、控制、销毁AWB算法库。使用上海海思AWB算法库时,不需要关注此接口;使用用户自己的AWB算法库时,需要调用此接口向ISP注册回调函数。
13651bd4fe43Sopenharmony_ci
13661bd4fe43Sopenharmony_ci* 此接口不支持多进程操作。
13671bd4fe43Sopenharmony_ci
13681bd4fe43Sopenharmony_ci* 最大支持2个AWB库注册。
13691bd4fe43Sopenharmony_ci
13701bd4fe43Sopenharmony_ciISP库与AWB库间的接口如下图所示:
13711bd4fe43Sopenharmony_ci
13721bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/096ISP%E5%BA%93%E4%B8%8EAWB%E5%BA%93%E9%97%B4%E7%9A%84%E6%8E%A5%E5%8F%A3.png)
13731bd4fe43Sopenharmony_ci
13741bd4fe43Sopenharmony_ci
13751bd4fe43Sopenharmony_ci
13761bd4fe43Sopenharmony_ci**HI_MPI_ISP_AELibUnRegCallBack**
13771bd4fe43Sopenharmony_ci
13781bd4fe43Sopenharmony_ci【描述】
13791bd4fe43Sopenharmony_ci
13801bd4fe43Sopenharmony_ci* ISP提供的AE库反注册的回调接口。
13811bd4fe43Sopenharmony_ci
13821bd4fe43Sopenharmony_ci【语法】
13831bd4fe43Sopenharmony_ci
13841bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_ISP_AELibUnRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib);
13851bd4fe43Sopenharmony_ci
13861bd4fe43Sopenharmony_ci【参数】
13871bd4fe43Sopenharmony_ci
13881bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/097HI_MPI_ISP_AELibUnRegCallBack%E5%8F%82%E6%95%B0.png)
13891bd4fe43Sopenharmony_ci
13901bd4fe43Sopenharmony_ci【返回值】
13911bd4fe43Sopenharmony_ci
13921bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/098HI_MPI_ISP_AELibUnRegCallBack%E8%BF%94%E5%9B%9E%E5%80%BC.png)
13931bd4fe43Sopenharmony_ci
13941bd4fe43Sopenharmony_ci【需求】
13951bd4fe43Sopenharmony_ci
13961bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_isp.h
13971bd4fe43Sopenharmony_ci
13981bd4fe43Sopenharmony_ci* 库文件:libisp.a
13991bd4fe43Sopenharmony_ci
14001bd4fe43Sopenharmony_ci【注意】
14011bd4fe43Sopenharmony_ci
14021bd4fe43Sopenharmony_ci* 使用上海海思AE算法库时,不需要关注此接口;使用用户自己的AE算法库时,需要调用此接口向ISP反注册回调函数。
14031bd4fe43Sopenharmony_ci
14041bd4fe43Sopenharmony_ci* 此接口不支持多进程操作。
14051bd4fe43Sopenharmony_ci
14061bd4fe43Sopenharmony_ci
14071bd4fe43Sopenharmony_ci
14081bd4fe43Sopenharmony_ci**HI_MPI_ISP_AELibRegCallBack**
14091bd4fe43Sopenharmony_ci
14101bd4fe43Sopenharmony_ci【描述】
14111bd4fe43Sopenharmony_ci
14121bd4fe43Sopenharmony_ci* ISP提供的AE库注册的回调接口。
14131bd4fe43Sopenharmony_ci
14141bd4fe43Sopenharmony_ci【语法】
14151bd4fe43Sopenharmony_ci
14161bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_ISP_AELibRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib, ISP_AE_REGISTER_S *pstRegister);
14171bd4fe43Sopenharmony_ci
14181bd4fe43Sopenharmony_ci【参数】
14191bd4fe43Sopenharmony_ci
14201bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/099HI_MPI_ISP_AELibRegCallBack%E5%8F%82%E6%95%B0.png)
14211bd4fe43Sopenharmony_ci
14221bd4fe43Sopenharmony_ci【返回值】
14231bd4fe43Sopenharmony_ci
14241bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/100HI_MPI_ISP_AELibRegCallBack%E8%BF%94%E5%9B%9E%E5%80%BC.png)
14251bd4fe43Sopenharmony_ci
14261bd4fe43Sopenharmony_ci【需求】
14271bd4fe43Sopenharmony_ci
14281bd4fe43Sopenharmony_ci* 头文件:hi_comm_isp.hmpi_isp.h
14291bd4fe43Sopenharmony_ci
14301bd4fe43Sopenharmony_ci* 库文件:libisp.a
14311bd4fe43Sopenharmony_ci
14321bd4fe43Sopenharmony_ci【注意】
14331bd4fe43Sopenharmony_ci
14341bd4fe43Sopenharmony_ci* ISP提供统一的AE算法库接口,初始化、运行、控制、销毁AE算法库。使用上海海思AE算法库时,不需要关注此接口;使用用户自己的AE算法库时,需要调用此接口向ISP注册回调函数。
14351bd4fe43Sopenharmony_ci
14361bd4fe43Sopenharmony_ci* 此接口不支持多进程操作。
14371bd4fe43Sopenharmony_ci
14381bd4fe43Sopenharmony_ci* 最大支持2个AE库注册。
14391bd4fe43Sopenharmony_ci
14401bd4fe43Sopenharmony_ciISP库与AE库间的接口关系如下图所示:
14411bd4fe43Sopenharmony_ci
14421bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/101ISP%E5%BA%93%E4%B8%8EAE%E5%BA%93%E9%97%B4%E7%9A%84%E6%8E%A5%E5%8F%A3%E5%85%B3%E7%B3%BB.png)
1443