11bd4fe43Sopenharmony_ci### 3.1.4 VO理论及实现方式
21bd4fe43Sopenharmony_ci
31bd4fe43Sopenharmony_ci#### 3.1.4.1 VO理论
41bd4fe43Sopenharmony_ci
51bd4fe43Sopenharmony_ciVO(Video Output,视频输出)模块主动从内存相应位置读取视频和图形数据,并通过相应的显示设备输出视频和图形。Hi3516DV300支持的显示/回写设备、视频层和图形层情况如下表所示,其他芯片型号请自行查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》中的表4-1内容。
61bd4fe43Sopenharmony_ci
71bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/124Hi3516DV300%E6%94%AF%E6%8C%81%E7%9A%84%E6%98%BE%E7%A4%BA%E5%9B%9E%E5%86%99%E8%AE%BE%E5%A4%87%E6%83%85%E5%86%B5.png)
81bd4fe43Sopenharmony_ci
91bd4fe43Sopenharmony_ci注:缩写解释
101bd4fe43Sopenharmony_ci
111bd4fe43Sopenharmony_ciDHD0:Device HD0,超高清设备0。
121bd4fe43Sopenharmony_ci
131bd4fe43Sopenharmony_ciDHD1:Device HD1,高清设备1。
141bd4fe43Sopenharmony_ci
151bd4fe43Sopenharmony_ciVHD0:Video layer of HD0,超高清视频层0,隶属于DHD0。
161bd4fe43Sopenharmony_ci
171bd4fe43Sopenharmony_ciVHD1:Video layer of HD1,高清视频层1,隶属于DHD1。
181bd4fe43Sopenharmony_ci
191bd4fe43Sopenharmony_ciVHD2:Video layer of HD2,高清视频层2,Hi3559AV100上隶属于DHD0,Hi3519AV100/Hi3556AV100上可以绑定至DHD0或者DHD1,用作PIP层。
201bd4fe43Sopenharmony_ci
211bd4fe43Sopenharmony_ciWD:Write Back Channel Device,回写通道设备。
221bd4fe43Sopenharmony_ci
231bd4fe43Sopenharmony_ci图形层G3:Graphic layer3,用作鼠标层,DHD0和DHD1中均有此项,但只能绑定其中一个设备,G3默认绑定在DHD1上
241bd4fe43Sopenharmony_ci
251bd4fe43Sopenharmony_ci**VO基本概念:**
261bd4fe43Sopenharmony_ci
271bd4fe43Sopenharmony_ci* 超高清、高清和标清显示设备
281bd4fe43Sopenharmony_ci
291bd4fe43Sopenharmony_ciSDK将高清和标清显示设备分别标示为DHDx(Device High Definition x)和DSDx(Device Standard Definition x),其中,x为索引号,从0开始取值,表示第几路高清/标清显示设备。例如第0路高清设备标示为DHD0,第0路标清显示设备标示为DSD0。所有高清和标清显示设备又可分别简称为HD和SD设备。Hi3516DV300中有1个高清显示设备DHD0。由于DHD0能够支持到4K(3840x2160)的时序,因此DHD0也可以称之为超高清显示设备。
301bd4fe43Sopenharmony_ci
311bd4fe43Sopenharmony_ci* 视频层
321bd4fe43Sopenharmony_ci
331bd4fe43Sopenharmony_ci对于固定在每个显示设备上面对应的视频层,SDK也对应采取VHDx和VSDx来标示。芯片支持显示设备的情况请参见表4-1。芯片HD设备功能对比参考表4-2。芯片VHD视频层功能对比如表4-3所示。视频层和显示设备的实际显示分辨率依赖于具体输出接口,设备上视频输出接口支持的最大时序见表4-4所示。
341bd4fe43Sopenharmony_ci
351bd4fe43Sopenharmony_ci**注:表4-1,表4-2,表4-3,表4-4均来自源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中的《HiMPP媒体处理软件 V4.0 开发参考.pdf》,对应各自的芯片型号查阅即可。**
361bd4fe43Sopenharmony_ci
371bd4fe43Sopenharmony_ci#### 3.1.4.2 实现方式
381bd4fe43Sopenharmony_ci
391bd4fe43Sopenharmony_ci在启动vo之前需要先config vo,围绕SAMPLE_VO_CONFIG_S结构体进行配置,该结构体由3大部分组成:device、layer、channel,如下图所示:
401bd4fe43Sopenharmony_ci
411bd4fe43Sopenharmony_ci此结构体可在 device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/common/sample_comm.h中找到
421bd4fe43Sopenharmony_ci
431bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/125VO%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8F.png)
441bd4fe43Sopenharmony_ci
451bd4fe43Sopenharmony_ci
461bd4fe43Sopenharmony_ci
471bd4fe43Sopenharmony_ciconfig vo代码实现细节如下图所示:
481bd4fe43Sopenharmony_ci
491bd4fe43Sopenharmony_ci可参考源码device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c中的StVoParamCfg( )接口
501bd4fe43Sopenharmony_ci
511bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/126config%20vo%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0.png)
521bd4fe43Sopenharmony_ci
531bd4fe43Sopenharmony_ci需要配置mipi参数,配置前先仔细阅读mipi参数文档(由屏幕厂商提供),通过SAMPLE_VO_CONFIG_MIPI接口进行配置,如下图所示:
541bd4fe43Sopenharmony_ci
551bd4fe43Sopenharmony_ci注:关于config mipi参与细节,自行查阅device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c 中SAMPLE_VO_CONFIG_MIPI内容即可。
561bd4fe43Sopenharmony_ci
571bd4fe43Sopenharmony_ci下图可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件的SampleVioVpssVoMipi()接口中找到。
581bd4fe43Sopenharmony_ci
591bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/127SAMPLE_VO_CONFIG_MIPI%E5%86%85%E5%AE%B9.png)
601bd4fe43Sopenharmony_ci
611bd4fe43Sopenharmony_ci接下来需要start vo,start vo可参考SampleCommVoStartMipi接口,如下图所示:
621bd4fe43Sopenharmony_ci
631bd4fe43Sopenharmony_ci下图可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件的SampleVioVpssVoMipi()接口中找到。
641bd4fe43Sopenharmony_ci
651bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/128SAMPLE_COMM_VO_StartVO_MIPI%E6%8E%A5%E5%8F%A3.png)
661bd4fe43Sopenharmony_ci
671bd4fe43Sopenharmony_ci关于SampleCommVoStartMipi接口调用的底层API进行如下说明:
681bd4fe43Sopenharmony_ci
691bd4fe43Sopenharmony_ci**VO_PUB_ATTR_S**
701bd4fe43Sopenharmony_ci
711bd4fe43Sopenharmony_ci此结构体可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/hi_comm_vo_dev.h中找到
721bd4fe43Sopenharmony_ci
731bd4fe43Sopenharmony_ci【说明】
741bd4fe43Sopenharmony_ci
751bd4fe43Sopenharmony_ci定义视频输出公共属性结构体。
761bd4fe43Sopenharmony_ci
771bd4fe43Sopenharmony_ci【定义】
781bd4fe43Sopenharmony_ci
791bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/129VO_PUB_ATTR_S%E5%AE%9A%E4%B9%89.png)
801bd4fe43Sopenharmony_ci
811bd4fe43Sopenharmony_ci【成员】
821bd4fe43Sopenharmony_ci
831bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/130VO_PUB_ATTR_S%E6%88%90%E5%91%98.png)
841bd4fe43Sopenharmony_ci
851bd4fe43Sopenharmony_ci【芯片差异】
861bd4fe43Sopenharmony_ci
871bd4fe43Sopenharmony_ci**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》VO_PUB_ATTR_S结构体芯片差异内容。
881bd4fe43Sopenharmony_ci
891bd4fe43Sopenharmony_ci【注意事项】
901bd4fe43Sopenharmony_ci
911bd4fe43Sopenharmony_ci**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》VO_PUB_ATTR_S结构体注意事项内容。
921bd4fe43Sopenharmony_ci
931bd4fe43Sopenharmony_ci**VO_VIDEO_LAYER_ATTR_S**
941bd4fe43Sopenharmony_ci
951bd4fe43Sopenharmony_ci此结构体可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/hi_comm_vo.h中找到
961bd4fe43Sopenharmony_ci
971bd4fe43Sopenharmony_ci【说明】
981bd4fe43Sopenharmony_ci
991bd4fe43Sopenharmony_ci定义视频层属性。
1001bd4fe43Sopenharmony_ci
1011bd4fe43Sopenharmony_ci在视频层属性中存在三个概念,即设备分辨率、显示分辨率和图像分辨率。每种分辨率的概念可以从下图中可以看出:
1021bd4fe43Sopenharmony_ci
1031bd4fe43Sopenharmony_ci* 图像分辨率指放置各个通道图像的画布大小。
1041bd4fe43Sopenharmony_ci
1051bd4fe43Sopenharmony_ci* 显示分辨率是把图像分辨率中描述的画布经过VO放大后的显示区域。
1061bd4fe43Sopenharmony_ci
1071bd4fe43Sopenharmony_ci* 设备分辨率与设备时序一致,即如果时序为1920 x 1080,那设备分辨率就为1920 x 1080。
1081bd4fe43Sopenharmony_ci
1091bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/131%E5%AE%9A%E4%B9%89%E8%A7%86%E9%A2%91%E5%B1%82%E5%B1%9E%E6%80%A7.png)
1101bd4fe43Sopenharmony_ci
1111bd4fe43Sopenharmony_ci视频层的内存使用分为通道聚集(如图a所示)和非聚集(如图b所示)两种方式。
1121bd4fe43Sopenharmony_ci
1131bd4fe43Sopenharmony_ci* **聚集方式:**
1141bd4fe43Sopenharmony_ci
1151bd4fe43Sopenharmony_ci  * 决定内存分配大小的因素:实际显示通道的分辨率的总和。
1161bd4fe43Sopenharmony_ci
1171bd4fe43Sopenharmony_ci  * 不支持视频层的放大功能。
1181bd4fe43Sopenharmony_ci
1191bd4fe43Sopenharmony_ci  * 仅适用于MULTI模式。
1201bd4fe43Sopenharmony_ci
1211bd4fe43Sopenharmony_ci  * 聚集方式开启后,对于MULTI模式下的视频层,可以调用通道显示位置接口(HI_MPI_VO_SetChnDisplayPosition)来合理布局通道的显示位置。
1221bd4fe43Sopenharmony_ci
1231bd4fe43Sopenharmony_ci* **非聚集方式:**
1241bd4fe43Sopenharmony_ci* 决定内存分配大小的因素:显示图像的起始坐标(0,0)与最右下角的坐标所决定的区域大小和缩放比例(图像分辨率与显示分辨率的比)。
1251bd4fe43Sopenharmony_ci  
1261bd4fe43Sopenharmony_ci* 支持视频层的放大功能。通过视频放大功能,在相同显示分辨率情况下,依据适当的比例把图像分辨率调小,那么需要分配的内存也相应减少,这种情况下可以做到节省内存,但是会因放大导致图像质量下降。
1271bd4fe43Sopenharmony_ci  
1281bd4fe43Sopenharmony_ci* 在拼接好图像画面后,通道画面的显示位置不可以调整。
1291bd4fe43Sopenharmony_ci
1301bd4fe43Sopenharmony_ci图a 视频层使用聚集内存方式的场景a(聚集使用内存)
1311bd4fe43Sopenharmony_ci
1321bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/132%E8%81%9A%E9%9B%86%E4%BD%BF%E7%94%A8%E5%86%85%E5%AD%98.png)
1331bd4fe43Sopenharmony_ci
1341bd4fe43Sopenharmony_ci图b 视频层使用非聚集内存方式的场景b(非聚集使用内存)
1351bd4fe43Sopenharmony_ci
1361bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/133%E9%9D%9E%E8%81%9A%E9%9B%86%E4%BD%BF%E7%94%A8%E5%86%85%E5%AD%98.png)
1371bd4fe43Sopenharmony_ci
1381bd4fe43Sopenharmony_ci【定义】
1391bd4fe43Sopenharmony_ci
1401bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/134VO_VIDEO_LAYER_ATTR_S%E5%AE%9A%E4%B9%89.png)
1411bd4fe43Sopenharmony_ci
1421bd4fe43Sopenharmony_ci【成员】
1431bd4fe43Sopenharmony_ci
1441bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/135VO_VIDEO_LAYER_ATTR_S%E6%88%90%E5%91%98.png)
1451bd4fe43Sopenharmony_ci
1461bd4fe43Sopenharmony_ci【差异说明】
1471bd4fe43Sopenharmony_ci
1481bd4fe43Sopenharmony_ci**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》VO_VIDEO_LAYER_ATTR_S结构体差异说明内容。
1491bd4fe43Sopenharmony_ci
1501bd4fe43Sopenharmony_ci【注意事项】
1511bd4fe43Sopenharmony_ci
1521bd4fe43Sopenharmony_ci**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》VO_VIDEO_LAYER_ATTR_S结构体注意事项内容。
1531bd4fe43Sopenharmony_ci
1541bd4fe43Sopenharmony_ci**VO_CSC_S**
1551bd4fe43Sopenharmony_ci
1561bd4fe43Sopenharmony_ci此结构体可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/hi_comm_vo_dev.h中找到
1571bd4fe43Sopenharmony_ci
1581bd4fe43Sopenharmony_ci【说明】
1591bd4fe43Sopenharmony_ci
1601bd4fe43Sopenharmony_ci定义图像输出效果结构体。
1611bd4fe43Sopenharmony_ci
1621bd4fe43Sopenharmony_ci【定义】
1631bd4fe43Sopenharmony_ci
1641bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/136VO_CSC_S%E5%AE%9A%E4%B9%89.png)
1651bd4fe43Sopenharmony_ci
1661bd4fe43Sopenharmony_ci【成员】
1671bd4fe43Sopenharmony_ci
1681bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/137VO_CSC_S%E6%88%90%E5%91%98.png)
1691bd4fe43Sopenharmony_ci
1701bd4fe43Sopenharmony_ci在SampleCommVoStartMipi接口中,调用了SampleCommVoStartDevMipi来启动device,对SampleCommVoStartDevMipi接口调用的底层接口做如下说明:
1711bd4fe43Sopenharmony_ci
1721bd4fe43Sopenharmony_ci**VO_USER_INTFSYNC_INFO_S**
1731bd4fe43Sopenharmony_ci
1741bd4fe43Sopenharmony_ci此结构体可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/hi_comm_vo_dev.h中找到
1751bd4fe43Sopenharmony_ci
1761bd4fe43Sopenharmony_ci【说明】
1771bd4fe43Sopenharmony_ci
1781bd4fe43Sopenharmony_ci用户接口时序信息,包括配置时钟源类型、时钟大小、时钟分频比和时钟相位,它们的拓扑关系如下图所示:
1791bd4fe43Sopenharmony_ci
1801bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/139%E7%94%A8%E6%88%B7%E6%8E%A5%E5%8F%A3%E6%97%B6%E5%BA%8F%E4%BF%A1%E6%81%AF.png)
1811bd4fe43Sopenharmony_ci
1821bd4fe43Sopenharmony_ci【定义】
1831bd4fe43Sopenharmony_ci
1841bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/140VO_USER_INTFSYNC_INFO_S%E5%AE%9A%E4%B9%89.png)
1851bd4fe43Sopenharmony_ci
1861bd4fe43Sopenharmony_ci【成员】
1871bd4fe43Sopenharmony_ci
1881bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/141VO_USER_INTFSYNC_INFO_S%E6%88%90%E5%91%98.png)
1891bd4fe43Sopenharmony_ci
1901bd4fe43Sopenharmony_ci【注意事项】
1911bd4fe43Sopenharmony_ci
1921bd4fe43Sopenharmony_ci**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》VO_USER_INTFSYNC_INFO_S结构体中的注意事项内容,里面介绍了不同芯片的时钟分频比配置方法、前置分频配置方法、用户时序信息推导方法等,开发者自行查阅即可。
1931bd4fe43Sopenharmony_ci
1941bd4fe43Sopenharmony_ci
1951bd4fe43Sopenharmony_ci
1961bd4fe43Sopenharmony_ci以下四个接口可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/hi_comm_vo_dev.h中找到
1971bd4fe43Sopenharmony_ci
1981bd4fe43Sopenharmony_ci**HI_MPI_VO_SetPubAttr**
1991bd4fe43Sopenharmony_ci
2001bd4fe43Sopenharmony_ci【描述】
2011bd4fe43Sopenharmony_ci
2021bd4fe43Sopenharmony_ci配置视频输出设备的公共属性。
2031bd4fe43Sopenharmony_ci
2041bd4fe43Sopenharmony_ci【语法】
2051bd4fe43Sopenharmony_ci
2061bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetPubAttr(VO_DEVVoDev, const VO_PUB_ATTR_S *pstPubAttr);
2071bd4fe43Sopenharmony_ci
2081bd4fe43Sopenharmony_ci【参数】
2091bd4fe43Sopenharmony_ci
2101bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/142HI_MPI_VO_SetPubAttr%E5%8F%82%E6%95%B0.png)
2111bd4fe43Sopenharmony_ci
2121bd4fe43Sopenharmony_ci【返回值】
2131bd4fe43Sopenharmony_ci
2141bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/143HI_MPI_VO_SetPubAttr%E8%BF%94%E5%9B%9E%E5%80%BC.png)
2151bd4fe43Sopenharmony_ci
2161bd4fe43Sopenharmony_ci【需求】
2171bd4fe43Sopenharmony_ci
2181bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
2191bd4fe43Sopenharmony_ci
2201bd4fe43Sopenharmony_ci* 库文件:libmpi.a
2211bd4fe43Sopenharmony_ci
2221bd4fe43Sopenharmony_ci【注意】
2231bd4fe43Sopenharmony_ci
2241bd4fe43Sopenharmony_ci* 视频输出设备属性为静态属性,必须在执行HI_MPI_VO_Enable前配置。
2251bd4fe43Sopenharmony_ci
2261bd4fe43Sopenharmony_ci* 各个DEV的使用说明详见VO_DEV。
2271bd4fe43Sopenharmony_ci
2281bd4fe43Sopenharmony_ci* 视频输出设备属性的使用说明详见VO_PUB_ATTR_S章节。
2291bd4fe43Sopenharmony_ci
2301bd4fe43Sopenharmony_ci
2311bd4fe43Sopenharmony_ci
2321bd4fe43Sopenharmony_ci**HI_MPI_VO_SetDevFrameRate**
2331bd4fe43Sopenharmony_ci
2341bd4fe43Sopenharmony_ci【描述】
2351bd4fe43Sopenharmony_ci
2361bd4fe43Sopenharmony_ci* 设置设备用户时序下设备帧率。
2371bd4fe43Sopenharmony_ci
2381bd4fe43Sopenharmony_ci【语法】
2391bd4fe43Sopenharmony_ci
2401bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_SetDevFrameRate(VO_DEVVoDev, HI_U32 u32FrameRate);
2411bd4fe43Sopenharmony_ci
2421bd4fe43Sopenharmony_ci【参数】
2431bd4fe43Sopenharmony_ci
2441bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/144HI_MPI_VO_SetDevFrameRate%E5%8F%82%E6%95%B0.png)
2451bd4fe43Sopenharmony_ci
2461bd4fe43Sopenharmony_ci【返回值】
2471bd4fe43Sopenharmony_ci
2481bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/145HI_MPI_VO_SetDevFrameRate%E8%BF%94%E5%9B%9E%E5%80%BC.png)
2491bd4fe43Sopenharmony_ci
2501bd4fe43Sopenharmony_ci【需求】
2511bd4fe43Sopenharmony_ci
2521bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
2531bd4fe43Sopenharmony_ci
2541bd4fe43Sopenharmony_ci* 库文件:libmpi.a
2551bd4fe43Sopenharmony_ci
2561bd4fe43Sopenharmony_ci【注意】
2571bd4fe43Sopenharmony_ci
2581bd4fe43Sopenharmony_ci* 只能在用户时序下使用。
2591bd4fe43Sopenharmony_ci
2601bd4fe43Sopenharmony_ci* 只能在调用HI_MPI_VO_SetPubAttr之后、HI_MPI_VO_Enable之前调用。
2611bd4fe43Sopenharmony_ci
2621bd4fe43Sopenharmony_ci
2631bd4fe43Sopenharmony_ci
2641bd4fe43Sopenharmony_ci**HI_MPI_VO_SetUserIntfSyncInfo**
2651bd4fe43Sopenharmony_ci
2661bd4fe43Sopenharmony_ci【描述】
2671bd4fe43Sopenharmony_ci
2681bd4fe43Sopenharmony_ci* 设置用户接口时序信息,用于配置时钟源、时钟大小和时钟分频比。
2691bd4fe43Sopenharmony_ci
2701bd4fe43Sopenharmony_ci【语法】
2711bd4fe43Sopenharmony_ci
2721bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_SetUserIntfSyncInfo (VO_DEV VoDev, VO_USER_INTFSYNC_INFO_S *pstUserInfo);
2731bd4fe43Sopenharmony_ci
2741bd4fe43Sopenharmony_ci【参数】
2751bd4fe43Sopenharmony_ci
2761bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/146HI_MPI_VO_SetUserIntfSyncInfo%E5%8F%82%E6%95%B0.png)
2771bd4fe43Sopenharmony_ci
2781bd4fe43Sopenharmony_ci【返回值】
2791bd4fe43Sopenharmony_ci
2801bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/147HI_MPI_VO_SetUserIntfSyncInfo%E8%BF%94%E5%9B%9E%E5%80%BC.png)
2811bd4fe43Sopenharmony_ci
2821bd4fe43Sopenharmony_ci【需求】
2831bd4fe43Sopenharmony_ci
2841bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
2851bd4fe43Sopenharmony_ci
2861bd4fe43Sopenharmony_ci* 库文件:libmpi.a
2871bd4fe43Sopenharmony_ci
2881bd4fe43Sopenharmony_ci【注意】
2891bd4fe43Sopenharmony_ci
2901bd4fe43Sopenharmony_ci* 在调用该接口前,必须对设备公共属性进行配置,否则返回设备未配置错误。
2911bd4fe43Sopenharmony_ci
2921bd4fe43Sopenharmony_ci* 只有物理设备支持设置用户时序信息。
2931bd4fe43Sopenharmony_ci
2941bd4fe43Sopenharmony_ci* 时钟源类型和时钟大小为静态信息,必须在执行HI_MPI_VO_Enable前配置。
2951bd4fe43Sopenharmony_ci
2961bd4fe43Sopenharmony_ci* 仅在HI_MPI_VO_SetPubAttr中接口数据VO_PUB_ATTR_S的enIntfSync成员设置为VO_OUTPUT_USER时有效。
2971bd4fe43Sopenharmony_ci
2981bd4fe43Sopenharmony_ci具体用户时序调试方法可参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP 媒体处理软件V4.0 FAQ》,用户时序时钟相关的配置可参考VO_USER_INTFSYNC_INFO_S。
2991bd4fe43Sopenharmony_ci
3001bd4fe43Sopenharmony_ci
3011bd4fe43Sopenharmony_ci
3021bd4fe43Sopenharmony_ci**HI_MPI_VO_Enable**
3031bd4fe43Sopenharmony_ci
3041bd4fe43Sopenharmony_ci【描述】
3051bd4fe43Sopenharmony_ci
3061bd4fe43Sopenharmony_ci* 启动视频输出设备。
3071bd4fe43Sopenharmony_ci
3081bd4fe43Sopenharmony_ci【语法】
3091bd4fe43Sopenharmony_ci
3101bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_Enable (VO_DEV VoDev);
3111bd4fe43Sopenharmony_ci
3121bd4fe43Sopenharmony_ci【参数】
3131bd4fe43Sopenharmony_ci
3141bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/148HI_MPI_VO_Enable%E5%8F%82%E6%95%B0.png)
3151bd4fe43Sopenharmony_ci
3161bd4fe43Sopenharmony_ci【返回值】
3171bd4fe43Sopenharmony_ci
3181bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/149HI_MPI_VO_Enable%E8%BF%94%E5%9B%9E%E5%80%BC.png)
3191bd4fe43Sopenharmony_ci
3201bd4fe43Sopenharmony_ci【需求】
3211bd4fe43Sopenharmony_ci
3221bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
3231bd4fe43Sopenharmony_ci
3241bd4fe43Sopenharmony_ci* 库文件:libmpi.a
3251bd4fe43Sopenharmony_ci
3261bd4fe43Sopenharmony_ci【注意】
3271bd4fe43Sopenharmony_ci
3281bd4fe43Sopenharmony_ci* 由于系统没有初始化设备为使能状态,所以在使用视频输出功能前必须先进行设备使能操作。
3291bd4fe43Sopenharmony_ci* 在调用设备使能前,必须对设备公共属性进行配置,否则返回设备未配置错误。
3301bd4fe43Sopenharmony_ci* 为适应开机画面与正常操作界面间顺畅切换,此处需要检查VO硬件是否已经使能,如果已使能则返回成功,且沿用已有时序配置。如果希望更改VO的时序配置,则需要先调用HI_MPI_VO_Disable接口,强制关闭VO硬件后再使能。
3311bd4fe43Sopenharmony_ci* 各个DEV的使用说明详见VO_DEV。
3321bd4fe43Sopenharmony_ci* 重复调用此接口,会返回设备已使能。
3331bd4fe43Sopenharmony_ci
3341bd4fe43Sopenharmony_ci关于SampleCommVoStartDevMipi接口实现细节如下图所示:
3351bd4fe43Sopenharmony_ci
3361bd4fe43Sopenharmony_ci以下截图可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件中找到
3371bd4fe43Sopenharmony_ci
3381bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/196SampleCommVOStartDevMipi.png)
3391bd4fe43Sopenharmony_ci
3401bd4fe43Sopenharmony_ci在SampleCommVoStartMipi接口中,调用了SampleCommVoGetWhMipi来获取mipi设备的宽、高,如下图所示:
3411bd4fe43Sopenharmony_ci
3421bd4fe43Sopenharmony_ci以下截图可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件中找到
3431bd4fe43Sopenharmony_ci
3441bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/197getmipidevice.png)
3451bd4fe43Sopenharmony_ci
3461bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/151SAMPLE_COMM_VO_GetWH_MIPI.png)
3471bd4fe43Sopenharmony_ci
3481bd4fe43Sopenharmony_ci进入SampleCommVoGetWhMipi接口,需要在最后配置下MIPI屏宽高的一个case,taurus套件使用的mipi屏宽800,高480,如下图所示:
3491bd4fe43Sopenharmony_ci
3501bd4fe43Sopenharmony_ci以下截图可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件中找到
3511bd4fe43Sopenharmony_ci
3521bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/152%E9%85%8D%E7%BD%AE%E4%B8%8BMIPI%E5%B1%8F%E5%AE%BD%E9%AB%98.png)
3531bd4fe43Sopenharmony_ci
3541bd4fe43Sopenharmony_ci若SampleCommVoGetWhMipi接口等执行失败,会进入SAMPLE_COMM_VO_StopDev接口终止设备,该接口调用的底层接口如下:
3551bd4fe43Sopenharmony_ci
3561bd4fe43Sopenharmony_ci**HI_MPI_VO_Disable**
3571bd4fe43Sopenharmony_ci
3581bd4fe43Sopenharmony_ci此接口可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/hi_comm_vo_dev.h文件中找到
3591bd4fe43Sopenharmony_ci
3601bd4fe43Sopenharmony_ci【描述】
3611bd4fe43Sopenharmony_ci
3621bd4fe43Sopenharmony_ci* 禁用视频输出设备。
3631bd4fe43Sopenharmony_ci
3641bd4fe43Sopenharmony_ci【语法】
3651bd4fe43Sopenharmony_ci
3661bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_Disable(VO_DEV VoDev);
3671bd4fe43Sopenharmony_ci
3681bd4fe43Sopenharmony_ci【参数】
3691bd4fe43Sopenharmony_ci
3701bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/153HI_MPI_VO_Disable%E5%8F%82%E6%95%B0.png)
3711bd4fe43Sopenharmony_ci
3721bd4fe43Sopenharmony_ci【返回值】
3731bd4fe43Sopenharmony_ci
3741bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/154HI_MPI_VO_Disable%E8%BF%94%E5%9B%9E%E5%80%BC.png)
3751bd4fe43Sopenharmony_ci
3761bd4fe43Sopenharmony_ci【需求】
3771bd4fe43Sopenharmony_ci
3781bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
3791bd4fe43Sopenharmony_ci
3801bd4fe43Sopenharmony_ci* 库文件:libmpi.a
3811bd4fe43Sopenharmony_ci
3821bd4fe43Sopenharmony_ci【注意】
3831bd4fe43Sopenharmony_ci
3841bd4fe43Sopenharmony_ci* 设备禁止前必须先禁止该设备上的视频层。
3851bd4fe43Sopenharmony_ci* 设备禁止前,如果有使能WBC,则必须关闭该使能。
3861bd4fe43Sopenharmony_ci* 调用HI_MPI_VO_Enable后,如果未调用该接口进行禁止,则VO设备将一直保持使能状态,并且下次设置设备属性时不会生效。
3871bd4fe43Sopenharmony_ci* 设备禁止后需要重新设置设备公共属性,才可使能设备。
3881bd4fe43Sopenharmony_ci
3891bd4fe43Sopenharmony_ciSAMPLE_COMM_VO_StopDev接口代码实现细节如下:
3901bd4fe43Sopenharmony_ci
3911bd4fe43Sopenharmony_ci以下device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/common/sample_comm_vo.c文件中找到
3921bd4fe43Sopenharmony_ci
3931bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/155SAMPLE_COMM_VO_StopDev.png)
3941bd4fe43Sopenharmony_ci
3951bd4fe43Sopenharmony_ci在SampleCommVoStartMipi接口中,调用了HI_MPI_VO_SetDisplayBufLen、HI_MPI_VO_SetVideoLayerPartitionMode、HI_MPI_VO_GetVideoLayerCSC、HI_MPI_VO_SetVideoLayerCSC底层接口,分别执行设置显示缓冲的长度、设置视频层的分割模式、获取设备输出图像效果、设置视频层输出图像效果的业务,上述接口详细说明如下:
3961bd4fe43Sopenharmony_ci
3971bd4fe43Sopenharmony_ci**VO_LAYER**
3981bd4fe43Sopenharmony_ci
3991bd4fe43Sopenharmony_ci此结构体可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/hi_common.h文件中找到
4001bd4fe43Sopenharmony_ci
4011bd4fe43Sopenharmony_ci【说明】
4021bd4fe43Sopenharmony_ci
4031bd4fe43Sopenharmony_ci* 定义视频层号。
4041bd4fe43Sopenharmony_ci
4051bd4fe43Sopenharmony_ci【定义】
4061bd4fe43Sopenharmony_ci
4071bd4fe43Sopenharmony_ci* typedef HI_S32 VO_LAYER;
4081bd4fe43Sopenharmony_ci
4091bd4fe43Sopenharmony_ci【成员】
4101bd4fe43Sopenharmony_ci
4111bd4fe43Sopenharmony_ci* 请根据芯片类型查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》VO_LAYER中的成员内容。
4121bd4fe43Sopenharmony_ci
4131bd4fe43Sopenharmony_ci【芯片差异】
4141bd4fe43Sopenharmony_ci
4151bd4fe43Sopenharmony_ci* 请根据芯片类型查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》VO_LAYER中的芯片差异内容。
4161bd4fe43Sopenharmony_ci
4171bd4fe43Sopenharmony_ci
4181bd4fe43Sopenharmony_ci
4191bd4fe43Sopenharmony_ci以下四个接口可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_vo.h文件中找到
4201bd4fe43Sopenharmony_ci
4211bd4fe43Sopenharmony_ci**HI_MPI_VO_SetDisplayBufLen**
4221bd4fe43Sopenharmony_ci
4231bd4fe43Sopenharmony_ci此接口可以在
4241bd4fe43Sopenharmony_ci
4251bd4fe43Sopenharmony_ci【描述】
4261bd4fe43Sopenharmony_ci
4271bd4fe43Sopenharmony_ci* 设置显示缓冲的长度。
4281bd4fe43Sopenharmony_ci
4291bd4fe43Sopenharmony_ci【语法】
4301bd4fe43Sopenharmony_ci
4311bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_SetDisplayBufLen(VO_LAYER VoLayer, HI_U32 u32BufLen);
4321bd4fe43Sopenharmony_ci
4331bd4fe43Sopenharmony_ci【参数】
4341bd4fe43Sopenharmony_ci
4351bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/156HI_MPI_VO_SetDisplayBufLen%E5%8F%82%E6%95%B0.png)
4361bd4fe43Sopenharmony_ci
4371bd4fe43Sopenharmony_ci【返回值】
4381bd4fe43Sopenharmony_ci
4391bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/157HI_MPI_VO_SetDisplayBufLen%E8%BF%94%E5%9B%9E%E5%80%BC.png)
4401bd4fe43Sopenharmony_ci
4411bd4fe43Sopenharmony_ci【需求】
4421bd4fe43Sopenharmony_ci
4431bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
4441bd4fe43Sopenharmony_ci
4451bd4fe43Sopenharmony_ci* 库文件:libmpi.a
4461bd4fe43Sopenharmony_ci
4471bd4fe43Sopenharmony_ci【注意】
4481bd4fe43Sopenharmony_ci
4491bd4fe43Sopenharmony_ci* 调用前需保证视频输出视频层未使能。
4501bd4fe43Sopenharmony_ci
4511bd4fe43Sopenharmony_ci* 缓冲长度默认值是0,默认是VO直通模式显示。
4521bd4fe43Sopenharmony_ci
4531bd4fe43Sopenharmony_ci* 当不满足VO直通的条件时,需要调用该接口设置缓冲的长度,否则VO无法正常工作。
4541bd4fe43Sopenharmony_ci
4551bd4fe43Sopenharmony_ci* 非直通情况下,当VO所有通道输入性能总和超过3840x2160@60(或7680x4320@15)时,VGS处理一帧的时间耗费得更多,一块缓存被占用的时间也更久,因此,设备帧率不变的情况下,需要将缓冲长度设置为大于等于4以满足低延时显示
4561bd4fe43Sopenharmony_ci
4571bd4fe43Sopenharmony_ci**HI_MPI_VO_SetVideoLayerPartitionMode**
4581bd4fe43Sopenharmony_ci
4591bd4fe43Sopenharmony_ci【描述】
4601bd4fe43Sopenharmony_ci
4611bd4fe43Sopenharmony_ci* 设置视频层的分割模式。
4621bd4fe43Sopenharmony_ci
4631bd4fe43Sopenharmony_ci【语法】
4641bd4fe43Sopenharmony_ci
4651bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_SetVideoLayerPartitionMode(VO_LAYER VoLayer, VO_PART_MODE_E enPartMode);
4661bd4fe43Sopenharmony_ci
4671bd4fe43Sopenharmony_ci【参数】
4681bd4fe43Sopenharmony_ci
4691bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/158HI_MPI_VO_SetVideoLayerPartitionMode%E5%8F%82%E6%95%B0.png)
4701bd4fe43Sopenharmony_ci
4711bd4fe43Sopenharmony_ci【返回值】
4721bd4fe43Sopenharmony_ci
4731bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/159HI_MPI_VO_SetVideoLayerPartitionMode%E8%BF%94%E5%9B%9E%E5%80%BC.png)
4741bd4fe43Sopenharmony_ci
4751bd4fe43Sopenharmony_ci【需求】
4761bd4fe43Sopenharmony_ci
4771bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.hhi_defines.h
4781bd4fe43Sopenharmony_ci
4791bd4fe43Sopenharmony_ci* 库文件:libmpi.a
4801bd4fe43Sopenharmony_ci
4811bd4fe43Sopenharmony_ci【注意】
4821bd4fe43Sopenharmony_ci
4831bd4fe43Sopenharmony_ci请查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》HI_MPI_VO_SetVideoLayerPartitionMode结构体中注意事项内容
4841bd4fe43Sopenharmony_ci
4851bd4fe43Sopenharmony_ci**HI_MPI_VO_GetVideoLayerCSC**
4861bd4fe43Sopenharmony_ci
4871bd4fe43Sopenharmony_ci【描述】
4881bd4fe43Sopenharmony_ci
4891bd4fe43Sopenharmony_ci* 获取设备输出图像效果。
4901bd4fe43Sopenharmony_ci
4911bd4fe43Sopenharmony_ci【语法】
4921bd4fe43Sopenharmony_ci
4931bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_GetVideoLayerCSC(VO_LAYER VoLayer, VO_CSC_S *pstVideoCSC);
4941bd4fe43Sopenharmony_ci
4951bd4fe43Sopenharmony_ci【参数】
4961bd4fe43Sopenharmony_ci
4971bd4fe43Sopenharmony_ci| 参数名称    | 描述                                         | 输入/输出 |
4981bd4fe43Sopenharmony_ci| ----------- | -------------------------------------------- | --------- |
4991bd4fe43Sopenharmony_ci| VoLayer     | 视频输出视频层号。  取值范围:物理视频层号。 | 输入      |
5001bd4fe43Sopenharmony_ci| pstVideoCSC | 图像输出效果结构体指针。                     | 输出      |
5011bd4fe43Sopenharmony_ci
5021bd4fe43Sopenharmony_ci【返回值】
5031bd4fe43Sopenharmony_ci
5041bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/162HI_MPI_VO_GetVideoLayerCSC%E8%BF%94%E5%9B%9E%E5%80%BC.png)
5051bd4fe43Sopenharmony_ci
5061bd4fe43Sopenharmony_ci【需求】
5071bd4fe43Sopenharmony_ci
5081bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
5091bd4fe43Sopenharmony_ci
5101bd4fe43Sopenharmony_ci* 库文件:libmpi.a
5111bd4fe43Sopenharmony_ci
5121bd4fe43Sopenharmony_ci【注意】
5131bd4fe43Sopenharmony_ci
5141bd4fe43Sopenharmony_ci* 该接口主要用于获取图像的输出效果,包括亮度、对比度、色调、饱和度,其取值范围均为[0, 100]。
5151bd4fe43Sopenharmony_ci
5161bd4fe43Sopenharmony_ci**HI_MPI_VO_SetVideoLayerCSC**
5171bd4fe43Sopenharmony_ci
5181bd4fe43Sopenharmony_ci【描述】
5191bd4fe43Sopenharmony_ci
5201bd4fe43Sopenharmony_ci* 设置视频层输出图像效果。
5211bd4fe43Sopenharmony_ci
5221bd4fe43Sopenharmony_ci【语法】
5231bd4fe43Sopenharmony_ci
5241bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_SetVideoLayerCSC(VO_LAYER VoLayer, const VO_CSC_S *pstVideoCSC);
5251bd4fe43Sopenharmony_ci
5261bd4fe43Sopenharmony_ci【参数】
5271bd4fe43Sopenharmony_ci
5281bd4fe43Sopenharmony_ci| 参数名称    | 描述                                         | 输入/输出 |
5291bd4fe43Sopenharmony_ci| ----------- | -------------------------------------------- | --------- |
5301bd4fe43Sopenharmony_ci| VoLayer     | 视频输出视频层号。  取值范围:物理视频层号。 | 输入      |
5311bd4fe43Sopenharmony_ci| pstVideoCSC | 图像输出效果结构体指针。                     | 输入      |
5321bd4fe43Sopenharmony_ci
5331bd4fe43Sopenharmony_ci【返回值】
5341bd4fe43Sopenharmony_ci
5351bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/163HI_MPI_VO_SetVideoLayerCSC%E8%BF%94%E5%9B%9E%E5%80%BC.png)
5361bd4fe43Sopenharmony_ci
5371bd4fe43Sopenharmony_ci【芯片差异】
5381bd4fe43Sopenharmony_ci
5391bd4fe43Sopenharmony_ci* 请查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》HI_MPI_VO_SetVideoLayerCSC结构体芯片差异内容。
5401bd4fe43Sopenharmony_ci
5411bd4fe43Sopenharmony_ci【需求】
5421bd4fe43Sopenharmony_ci
5431bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
5441bd4fe43Sopenharmony_ci
5451bd4fe43Sopenharmony_ci* 库文件:libmpi.a
5461bd4fe43Sopenharmony_ci
5471bd4fe43Sopenharmony_ci【注意】
5481bd4fe43Sopenharmony_ci
5491bd4fe43Sopenharmony_ci* 请查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》HI_MPI_VO_SetVideoLayerCSC结构体注意事项内容。
5501bd4fe43Sopenharmony_ci
5511bd4fe43Sopenharmony_ci在SampleCommVoStartMipi接口中,需要调用SAMPLE_COMM_VO_StartLayer接口来start layer,如下图所示:
5521bd4fe43Sopenharmony_ci
5531bd4fe43Sopenharmony_ci以下截图可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件中找到
5541bd4fe43Sopenharmony_ci
5551bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/198startlayer.png)
5561bd4fe43Sopenharmony_ci
5571bd4fe43Sopenharmony_ci进入SAMPLE_COMM_VO_StartLayer接口进行分析,分析其调用的底层接口。
5581bd4fe43Sopenharmony_ci
5591bd4fe43Sopenharmony_ci以下两个接口可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_vo.h文件中找到
5601bd4fe43Sopenharmony_ci
5611bd4fe43Sopenharmony_ci**HI_MPI_VO_SetVideoLayerAttr**
5621bd4fe43Sopenharmony_ci
5631bd4fe43Sopenharmony_ci【描述】
5641bd4fe43Sopenharmony_ci
5651bd4fe43Sopenharmony_ci* 设置视频层属性。
5661bd4fe43Sopenharmony_ci
5671bd4fe43Sopenharmony_ci【语法】
5681bd4fe43Sopenharmony_ci
5691bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_SetVideoLayerAttr(VO_LAYER VoLayer, const VO_VIDEO_LAYER_ATTR_S *pstLayerAttr);
5701bd4fe43Sopenharmony_ci
5711bd4fe43Sopenharmony_ci【参数】
5721bd4fe43Sopenharmony_ci
5731bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/165HI_MPI_VO_SetVideoLayerAttr%E5%8F%82%E6%95%B0.png)
5741bd4fe43Sopenharmony_ci
5751bd4fe43Sopenharmony_ci【返回值】
5761bd4fe43Sopenharmony_ci
5771bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/166HI_MPI_VO_SetVideoLayerAttr%E8%BF%94%E5%9B%9E%E5%80%BC.png)
5781bd4fe43Sopenharmony_ci
5791bd4fe43Sopenharmony_ci【需求】
5801bd4fe43Sopenharmony_ci
5811bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
5821bd4fe43Sopenharmony_ci
5831bd4fe43Sopenharmony_ci* 库文件:libmpi.a
5841bd4fe43Sopenharmony_ci
5851bd4fe43Sopenharmony_ci【注意】
5861bd4fe43Sopenharmony_ci
5871bd4fe43Sopenharmony_ci* 需要在视频层所绑定的设备处于使能状态时才能设置视频层属性。
5881bd4fe43Sopenharmony_ci
5891bd4fe43Sopenharmony_ci* 设置视频层属性(SINGLE模式下除了pstLayerAttr中stDispRect的s32X,s32Y)必须在视频层禁止的情况下进行。
5901bd4fe43Sopenharmony_ci
5911bd4fe43Sopenharmony_ci* SINGLE模式下,视频层使能后,可单独设置视频层显示位置。
5921bd4fe43Sopenharmony_ci
5931bd4fe43Sopenharmony_ci* 视频层属性的使用说明详见VO_VIDEO_LAYER_ATTR_S。
5941bd4fe43Sopenharmony_ci
5951bd4fe43Sopenharmony_ci**HI_MPI_VO_EnableVideoLayer**
5961bd4fe43Sopenharmony_ci
5971bd4fe43Sopenharmony_ci【描述】
5981bd4fe43Sopenharmony_ci
5991bd4fe43Sopenharmony_ci* 使能视频层。
6001bd4fe43Sopenharmony_ci
6011bd4fe43Sopenharmony_ci【语法】
6021bd4fe43Sopenharmony_ci
6031bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_EnableVideoLayer (VO_LAYER VoLayer);
6041bd4fe43Sopenharmony_ci
6051bd4fe43Sopenharmony_ci【参数】
6061bd4fe43Sopenharmony_ci
6071bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/167HI_MPI_VO_EnableVideoLayer%E5%8F%82%E6%95%B0.png)
6081bd4fe43Sopenharmony_ci
6091bd4fe43Sopenharmony_ci【返回值】
6101bd4fe43Sopenharmony_ci
6111bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/168HI_MPI_VO_EnableVideoLayer%E8%BF%94%E5%9B%9E%E5%80%BC.png)
6121bd4fe43Sopenharmony_ci
6131bd4fe43Sopenharmony_ci【需求】
6141bd4fe43Sopenharmony_ci
6151bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
6161bd4fe43Sopenharmony_ci
6171bd4fe43Sopenharmony_ci* 库文件:libmpi.a
6181bd4fe43Sopenharmony_ci
6191bd4fe43Sopenharmony_ci【注意】
6201bd4fe43Sopenharmony_ci
6211bd4fe43Sopenharmony_ci* 视频层使能前必须保证该视频层所绑定的设备处于使能状态。
6221bd4fe43Sopenharmony_ci
6231bd4fe43Sopenharmony_ci* 视频层使能前必须保证该视频层已经配置。
6241bd4fe43Sopenharmony_ci
6251bd4fe43Sopenharmony_ci* 各个视频层的使用说明详见VO_LAYER。
6261bd4fe43Sopenharmony_ci
6271bd4fe43Sopenharmony_ciSAMPLE_COMM_VO_StartLayer具体代码实现细节如下:
6281bd4fe43Sopenharmony_ci
6291bd4fe43Sopenharmony_ci此截图可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/common/sample_comm_vo.c文件中找到
6301bd4fe43Sopenharmony_ci
6311bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/169SAMPLE_COMM_VO_StartLayer.png)
6321bd4fe43Sopenharmony_ci
6331bd4fe43Sopenharmony_ci在SampleCommVoStartMipi接口的最后,会调用SampleCommVoStartChnMipi接口来启动vo channels,如下图所示:
6341bd4fe43Sopenharmony_ci
6351bd4fe43Sopenharmony_ci此截图可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件中找到
6361bd4fe43Sopenharmony_ci
6371bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/199startchnmipi.png)
6381bd4fe43Sopenharmony_ci
6391bd4fe43Sopenharmony_ci若SampleCommVoStartChnMipi接口返回值不等于HI_SUCCESS,需StopLayer and StopDev,及调用SAMPLE_COMM_VO_StopLayer和SAMPLE_COMM_VO_StopDev,其中SAMPLE_COMM_VO_StopDev接口上文已经讲述,这里只分析SAMPLE_COMM_VO_StopLayer接口,如下图所示。
6401bd4fe43Sopenharmony_ci
6411bd4fe43Sopenharmony_ci此截图可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/common/sample_comm_vo.c文件中找到
6421bd4fe43Sopenharmony_ci
6431bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/171SAMPLE_COMM_VO_StopLayer.png)
6441bd4fe43Sopenharmony_ci
6451bd4fe43Sopenharmony_ci针对其调用的HI_MPI_VO_DisableVideoLayer接口作如下解释:
6461bd4fe43Sopenharmony_ci
6471bd4fe43Sopenharmony_ci此接口可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_vo.h文件中找到
6481bd4fe43Sopenharmony_ci
6491bd4fe43Sopenharmony_ci【描述】
6501bd4fe43Sopenharmony_ci
6511bd4fe43Sopenharmony_ci* 禁止视频层
6521bd4fe43Sopenharmony_ci
6531bd4fe43Sopenharmony_ci【语法】
6541bd4fe43Sopenharmony_ci
6551bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_DisableVideoLayer(VO_LAYER VoLayer);
6561bd4fe43Sopenharmony_ci
6571bd4fe43Sopenharmony_ci【参数】
6581bd4fe43Sopenharmony_ci
6591bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/172HI_MPI_VO_DisableVideoLayer%E5%8F%82%E6%95%B0.png)
6601bd4fe43Sopenharmony_ci
6611bd4fe43Sopenharmony_ci【返回值】
6621bd4fe43Sopenharmony_ci
6631bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/173HI_MPI_VO_DisableVideoLayer%E8%BF%94%E5%9B%9E%E5%80%BC.png)
6641bd4fe43Sopenharmony_ci
6651bd4fe43Sopenharmony_ci【需求】
6661bd4fe43Sopenharmony_ci
6671bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
6681bd4fe43Sopenharmony_ci
6691bd4fe43Sopenharmony_ci* 库文件:libmpi.a
6701bd4fe43Sopenharmony_ci
6711bd4fe43Sopenharmony_ci【注意】
6721bd4fe43Sopenharmony_ci
6731bd4fe43Sopenharmony_ci* 视频层禁止前必须保证其上的通道全部禁止。
6741bd4fe43Sopenharmony_ci
6751bd4fe43Sopenharmony_ci* 在禁止视频层时,非直通情况下,如果用户没有释放从VO获取的图像buffer资源,该接口会返回HI_ERR_VB_BUSY的错误码,表示VO创建的VB资源没有释放。多见于用户调用获取屏幕图像未释放的情况下。
6761bd4fe43Sopenharmony_ci
6771bd4fe43Sopenharmony_ci* 在禁止视频层时,如果用户选择了WBC数据源为VO_WBC_DATASOURCE_VIDEO模式,则必须保证将该设备的WBC功能关闭使能。
6781bd4fe43Sopenharmony_ci
6791bd4fe43Sopenharmony_ci进入SampleCommVoStartChnMipi接口进行分析,发现其调用如下底层接口,接下来进行解读。
6801bd4fe43Sopenharmony_ci
6811bd4fe43Sopenharmony_ci**VO_CHN_ATTR_S**
6821bd4fe43Sopenharmony_ci
6831bd4fe43Sopenharmony_ci此结构体可在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/hi_comm_vo.h文件中找到
6841bd4fe43Sopenharmony_ci
6851bd4fe43Sopenharmony_ci【说明】
6861bd4fe43Sopenharmony_ci
6871bd4fe43Sopenharmony_ci* 定义视频输出通道属性。
6881bd4fe43Sopenharmony_ci
6891bd4fe43Sopenharmony_ci【定义】
6901bd4fe43Sopenharmony_ci
6911bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/174VO_CHN_ATTR_S%E5%AE%9A%E4%B9%89.png)
6921bd4fe43Sopenharmony_ci
6931bd4fe43Sopenharmony_ci【成员】
6941bd4fe43Sopenharmony_ci
6951bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/175VO_CHN_ATTR_S%E6%88%90%E5%91%98.png)
6961bd4fe43Sopenharmony_ci
6971bd4fe43Sopenharmony_ci【注意事项】
6981bd4fe43Sopenharmony_ci
6991bd4fe43Sopenharmony_ci* 属性中的优先级,数值越大优先级越高。
7001bd4fe43Sopenharmony_ci* SINGLE模式下,当多个通道有重叠的显示区域时,优先级高的通道图像将覆盖优先级低的通道。优先级相同的各通道有重叠时,默认通道号大的图像将覆盖通道号小的通道图像。
7011bd4fe43Sopenharmony_ci* 通道显示区域不能超过视频层属性中设定的画布大小(stImageSize大小)。
7021bd4fe43Sopenharmony_ci* 如果有视频层放大的情况,stRect是放大前视频层上的起始位置和宽高,放大后显示的起始位置和宽高会按视频层放大的比例偏移或放大。
7031bd4fe43Sopenharmony_ci
7041bd4fe43Sopenharmony_ci
7051bd4fe43Sopenharmony_ci
7061bd4fe43Sopenharmony_ci以下四个接口可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/include/mpi_vo.h文件中找到
7071bd4fe43Sopenharmony_ci
7081bd4fe43Sopenharmony_ci**HI_MPI_VO_GetVideoLayerAttr**
7091bd4fe43Sopenharmony_ci
7101bd4fe43Sopenharmony_ci【描述】
7111bd4fe43Sopenharmony_ci
7121bd4fe43Sopenharmony_ci* 获取视频层属性。
7131bd4fe43Sopenharmony_ci
7141bd4fe43Sopenharmony_ci【语法】
7151bd4fe43Sopenharmony_ci
7161bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_GetVideoLayerAttr(VO_LAYER VoLayer, VO_VIDEO_LAYER_ATTR_S *pstLayerAttr);
7171bd4fe43Sopenharmony_ci
7181bd4fe43Sopenharmony_ci【参数】
7191bd4fe43Sopenharmony_ci
7201bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/176HI_MPI_VO_GetVideoLayerAttr%E5%8F%82%E6%95%B0.png)
7211bd4fe43Sopenharmony_ci
7221bd4fe43Sopenharmony_ci【返回值】
7231bd4fe43Sopenharmony_ci
7241bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/177HI_MPI_VO_GetVideoLayerAttr%E8%BF%94%E5%9B%9E%E5%80%BC.png)
7251bd4fe43Sopenharmony_ci
7261bd4fe43Sopenharmony_ci【需求】
7271bd4fe43Sopenharmony_ci
7281bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
7291bd4fe43Sopenharmony_ci
7301bd4fe43Sopenharmony_ci* 库文件:libmpi.a
7311bd4fe43Sopenharmony_ci
7321bd4fe43Sopenharmony_ci【注意】
7331bd4fe43Sopenharmony_ci
7341bd4fe43Sopenharmony_ci* 不调用HI_MPI_VO_EnableVideoLayer和HI_MPI_VO_SetVideoLayerAttr也可获取视频层属性。此时获取的为默认值。
7351bd4fe43Sopenharmony_ci
7361bd4fe43Sopenharmony_ci* 建议在设置视频层属性前先调用此接口获取视频层属性。
7371bd4fe43Sopenharmony_ci
7381bd4fe43Sopenharmony_ci
7391bd4fe43Sopenharmony_ci
7401bd4fe43Sopenharmony_ci**HI_MPI_VO_SetChnAttr**
7411bd4fe43Sopenharmony_ci
7421bd4fe43Sopenharmony_ci【描述】
7431bd4fe43Sopenharmony_ci
7441bd4fe43Sopenharmony_ci* 配置指定视频输出通道的属性。
7451bd4fe43Sopenharmony_ci
7461bd4fe43Sopenharmony_ci【语法】
7471bd4fe43Sopenharmony_ci
7481bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_SetChnAttr(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_ATTR_S *pstChnAttr);
7491bd4fe43Sopenharmony_ci
7501bd4fe43Sopenharmony_ci【参数】
7511bd4fe43Sopenharmony_ci
7521bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/178HI_MPI_VO_SetChnAttr%E5%8F%82%E6%95%B0.png)
7531bd4fe43Sopenharmony_ci
7541bd4fe43Sopenharmony_ci【返回值】
7551bd4fe43Sopenharmony_ci
7561bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/179HI_MPI_VO_SetChnAttr%E8%BF%94%E5%9B%9E%E5%80%BC.png)
7571bd4fe43Sopenharmony_ci
7581bd4fe43Sopenharmony_ci【需求】
7591bd4fe43Sopenharmony_ci
7601bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
7611bd4fe43Sopenharmony_ci
7621bd4fe43Sopenharmony_ci* 库文件:libmpi.a
7631bd4fe43Sopenharmony_ci
7641bd4fe43Sopenharmony_ci【注意】
7651bd4fe43Sopenharmony_ci
7661bd4fe43Sopenharmony_ci* 请查阅**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》HI_MPI_VO_SetChnAttr结构体注意事项内容。
7671bd4fe43Sopenharmony_ci
7681bd4fe43Sopenharmony_ci**HI_MPI_VO_SetChnRotation**
7691bd4fe43Sopenharmony_ci
7701bd4fe43Sopenharmony_ci【描述】
7711bd4fe43Sopenharmony_ci
7721bd4fe43Sopenharmony_ci* 设置指定视频输出通道的旋转角度。对通道设置旋转角度,该旋转角度将作用于进入通道的视频图像,具体效果是对图像旋转相应的角度后再进行显示。
7731bd4fe43Sopenharmony_ci
7741bd4fe43Sopenharmony_ci【语法】
7751bd4fe43Sopenharmony_ci
7761bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_SetChnRotation(VO_LAYER VoLayer, VO_CHN VoChn, ROTATION_E enRotation);
7771bd4fe43Sopenharmony_ci
7781bd4fe43Sopenharmony_ci【参数】
7791bd4fe43Sopenharmony_ci
7801bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/180HI_MPI_VO_SetChnRotation%E5%8F%82%E6%95%B0.png)
7811bd4fe43Sopenharmony_ci
7821bd4fe43Sopenharmony_ci【返回值】
7831bd4fe43Sopenharmony_ci
7841bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/181HI_MPI_VO_SetChnRotation%E8%BF%94%E5%9B%9E%E5%80%BC.png)
7851bd4fe43Sopenharmony_ci
7861bd4fe43Sopenharmony_ci【需求】
7871bd4fe43Sopenharmony_ci
7881bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
7891bd4fe43Sopenharmony_ci
7901bd4fe43Sopenharmony_ci* 库文件:libmpi.a
7911bd4fe43Sopenharmony_ci
7921bd4fe43Sopenharmony_ci【注意】
7931bd4fe43Sopenharmony_ci
7941bd4fe43Sopenharmony_ci* 设置旋转的角度只能是ROTATION_0, ROTATION_90, ROTATION_180, ROTATION_270其中之一。
7951bd4fe43Sopenharmony_ci
7961bd4fe43Sopenharmony_ci* VO在SINGLE模式下并且前端在预览模式下旋转功能才会生效。但如果VO前端绑定VPSS并且VPSS工作在USER模式下,即使VPSS前端为回放模式,旋转也会生效。
7971bd4fe43Sopenharmony_ci
7981bd4fe43Sopenharmony_ci* VO在MULTI模式下通道不支持旋转,即使对通道设置了旋转角度,也不生效。
7991bd4fe43Sopenharmony_ci
8001bd4fe43Sopenharmony_ci**HI_MPI_VO_EnableChn**
8011bd4fe43Sopenharmony_ci
8021bd4fe43Sopenharmony_ci【描述】
8031bd4fe43Sopenharmony_ci
8041bd4fe43Sopenharmony_ci* 启用指定的视频输出通道。
8051bd4fe43Sopenharmony_ci
8061bd4fe43Sopenharmony_ci【语法】
8071bd4fe43Sopenharmony_ci
8081bd4fe43Sopenharmony_ci* HI_S32 HI_MPI_VO_EnableChn (VO_LAYER VoLayer, VO_CHN VoChn);
8091bd4fe43Sopenharmony_ci
8101bd4fe43Sopenharmony_ci【参数】
8111bd4fe43Sopenharmony_ci
8121bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/182HI_MPI_VO_EnableChn%E5%8F%82%E6%95%B0.png)
8131bd4fe43Sopenharmony_ci
8141bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/183HI_MPI_VO_EnableChn%E8%BF%94%E5%9B%9E%E5%80%BC.png)
8151bd4fe43Sopenharmony_ci
8161bd4fe43Sopenharmony_ci【返回值】
8171bd4fe43Sopenharmony_ci
8181bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/183HI_MPI_VO_EnableChn%E5%8F%82%E6%95%B0.png)
8191bd4fe43Sopenharmony_ci
8201bd4fe43Sopenharmony_ci【需求】
8211bd4fe43Sopenharmony_ci
8221bd4fe43Sopenharmony_ci* 头文件:mpi_vo.hhi_comm_vo.h
8231bd4fe43Sopenharmony_ci
8241bd4fe43Sopenharmony_ci* 库文件:libmpi.a
8251bd4fe43Sopenharmony_ci
8261bd4fe43Sopenharmony_ci【注意】
8271bd4fe43Sopenharmony_ci
8281bd4fe43Sopenharmony_ci* 调用前必须保证视频层绑定关系存在,否则将返回失败。
8291bd4fe43Sopenharmony_ci
8301bd4fe43Sopenharmony_ci* 调用前必须使能相应设备上的视频层。
8311bd4fe43Sopenharmony_ci
8321bd4fe43Sopenharmony_ci* 通道使能前必须进行通道配置,否则返回通道未配置的错误。
8331bd4fe43Sopenharmony_ci
8341bd4fe43Sopenharmony_ci* 允许重复使能同一视频输出通道,不返回失败。
8351bd4fe43Sopenharmony_ci
8361bd4fe43Sopenharmony_ci#### 3.1.4.3 VPSS bind VO
8371bd4fe43Sopenharmony_ci
8381bd4fe43Sopenharmony_ciVPSS bind VOS绑定VPSS和VO之间的关联关系,绑定后,数据源生成的数据将自动发送给接收者,依然调用HI_MPI_SYS_Bind接口,上文已经对HI_MPI_SYS_Bind接口进行详细解释,这里不再阐述,如下图所示:
8391bd4fe43Sopenharmony_ci
8401bd4fe43Sopenharmony_ci以下截图可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件中找到
8411bd4fe43Sopenharmony_ci
8421bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/184HI_MPI_SYS_Bind1.png)
8431bd4fe43Sopenharmony_ci
8441bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/185HI_MPI_SYS_Bind2.png)
8451bd4fe43Sopenharmony_ci
8461bd4fe43Sopenharmony_ci注:SAMPLE_VIO_VPSS_VO_MIPI接口中VI、VPSS、VO每个环节均有异常判断,若进入到异常环节,均会goto到异常判断API,该部分异常判断接口较为简单,自行查阅源码即可,如下图所示:
8471bd4fe43Sopenharmony_ci
8481bd4fe43Sopenharmony_ci以下截图可以在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/helloworld/smp/sample_lcd.c文件中找到
8491bd4fe43Sopenharmony_ci
8501bd4fe43Sopenharmony_ci![](./figures/hispark_taurus_helloworld_sample/186%E6%AF%8F%E4%B8%AA%E7%8E%AF%E8%8A%82%E5%9D%87%E6%9C%89%E5%BC%82%E5%B8%B8%E5%88%A4%E6%96%AD.png)
851