二.海思Hi3516ev100视频处理子系统(VPSS)模块
1 概述
VPSS(Video Process Sub-System)支持对一幅输入图像进行统一预处理,如去噪、去隔行等,然后再对各通道分别进行缩放、锐化等处理,最后输出多种不同分辨率的图像。
VPSS 单元支持的具体图像处理功能包括 FRC(Frame Rate Control)、 Crop、 NR(Noise Reduce)、 LDC(Lens Distortion Correction)、 Rotate、 Cover/Overlay、 Scale、Mirror/Flip、 FishEye 等。
2 功能描述
2.1 基本概念
GROUP
VPSS 对用户提供组(GROUP)的概念。最大可用数为 VPSS_MAX_GRP_NUM个,各芯片的最大组数目有所不同,各 GROUP 分时复用 VPSS 硬件。每个 VPSSGROUP 包含多个通道,通道数目视方案实现有所不同,具体描述请参见CHANNEL。
CHANNEL
VPSS 组的通道。通道分为 2 种:物理通道和扩展通道。 VPSS 硬件提供多个物理通道,每个通道具有缩放、裁剪等功能。扩展通道具备缩放功能,它通过绑定物理通道,将物理通道输出作为自己的输入,把图像缩放成用户设置的目标分辨率输出。
FRC
帧率控制,分为 2 种: group 帧率控制和 chn 帧率控制。
Group 帧率控制:用于控制各 group 对输入图像的接收,只应用在 VI—VPSS的离线方案中。
Chn 帧率控制:用于控制各个物理通道图像的处理,应用在离线和在线方案中。
Crop
裁剪,分为 3 种: group 的裁剪和物理通道的裁剪以及扩展通道的裁剪。
- Group 的裁剪, VPSS 对输入图像进行裁剪。
- 物理通道的裁剪, VPSS 对各个物理通道的输出图像进行裁剪。
- 扩展通道的裁剪, VPSS 调用 VGS 对扩展通道的输出图像进行裁剪。
DEI
De-interlace,去隔行。将交错的隔行视频源还原成逐行视频源。
NR
去噪。通过参数配置,把图像中的高斯噪声去除,使得图像变得平滑,有助于降低编码码率。
Scale
缩放,对图像进行缩小放大。
LDC
Lens Distortion Correction,镜头畸变校正,一些低端镜头容易产生图像畸变,需要根据畸变程度对其图像进行校正。
Cover
视频遮挡区域,对 VPSS 的输出图像填充纯色块。
Overlay
视频叠加区域,在 GROUP 上进行位图的加载和背景色更新,支持 ARGB4444、ARGB1555、 ARGB8888 三种格式的位图。
Border
边框, VPSS 在输出图像上加边框。
备份节点
原始图像的备份节点。每个 GROUP 都有一个备份节点,用于备份即将提交硬件处理的那帧原始图像。 VPSS 在以下情况会将缓存队列队头节点的图像放入备份节点:
当队头节点的图像要经过 VPSS 硬件处理时, VPSS 会将其放入备份节点,并替换掉原有图像。
当后端绑定的接收模块要求 VPSS 将队头图像放入备份节点时, VPSS 也会替换备份节点中的图像,即使该图像不经过硬件处理。
低延时
在 VI—VPSS 的在线方案中,编码器性能足够的情况下, VPSS 支持按照,以行为单位,边采集边发送的方式,将图像发送给编码模块进行编码,用来减少 VPSS处理完整帧图像再发送给编码模块过程中,数据的延时时间。这样的方式即为低延时方案。
2.2 功能描述
VPSS 上下文关系
通过调用 SYS 模块的绑定接口,可与 VI 和 VO/VENC/IVE 等模块进行绑定,其中前者为 VPSS 的输入源,后者为 VPSS 的接收者。用户可通过提供的 MPI 接口对 GROUP进行管理。每个 GROUP 仅可与一个输入源绑定。 GROUP 的物理通道有两种工作模式: AUTO 和 USER,两种模式间可动态切换。默认的工作模式为 AUTO,此模式下各通道仅可与一个接收者绑定。若想使用 USER 模式,则需调用 MPI 接口进行设置,同时指定所需图像的大小和格式,此模式下各通道可与多个接收者绑定。需要特别注意的是, USER 模式主要用于对同一通道图像进行多路编码的场景,此模式下播放控制不生效,因此预览和回放场景下不建议使用 USER 模式。
2.3 芯片处理流程
Hi3518EV200 VPSS 的数据流图
VPSS 通道规格
3 步骤
a.创建VPSS_Group
b.绑定VI-->VPSS
c.通道设置:通道属性,通道功能,通道使能
4.函数调用图谱
- SAMPLE_COMM_SYS_GetPicSize(step4)//start vpss and vi bind vpss
- SAMPLE_COMM_VPSS_StartGroup
- HI_MPI_VPSS_CreateGrp
- HI_MPI_VPSS_GetNRParam
- HI_MPI_VPSS_SetNRParam
- HI_MPI_VPSS_StartGrp
- SAMPLE_COMM_VI_BindVpss
- SAMPLE_COMM_VI_Mode2Param
- HI_MPI_SYS_Bind
- SAMPLE_COMM_VPSS_EnableChn
- HI_MPI_VPSS_SetChnAttr
- HI_MPI_VPSS_SetChnMode
- HI_MPI_VPSS_EnableChn
5.sample
- /******************************************
- *start vpss and vi bind vpss
- ******************************************/
- SIZE_S stSize;
- pstSize->u32Width = 1280;
- pstSize->u32Height = 720;
- VpssGrp = 0;
- stVpssGrpAttr.u32MaxW = stSize.u32Width; /*MAX width of the group*/
- stVpssGrpAttr.u32MaxH = stSize.u32Height; /*MAX height of the group*/
- stVpssGrpAttr.bIeEn = HI_FALSE; /*图像增强 enable*/
- stVpssGrpAttr.bNrEn = HI_TRUE; /*噪声降低 enable*/
- stVpssGrpAttr.bHistEn = HI_FALSE; /*Hist enable*/
- stVpssGrpAttr.bDciEn = HI_FALSE; /*动态对比改进 enable*/
- stVpssGrpAttr.enDieMode = VPSS_DIE_MODE_NODIE;/*反交错 enable*/
- stVpssGrpAttr.enPixFmt = PIXEL_FORMAT_YUV_SEMIPLANAR_420;/*像素格式*/
- /******************************
- *step1 : 启用 VPSS GROUP
- *******************************/
- s32Ret = HI_MPI_VPSS_CreateGrp(VpssGrp, pstVpssGrpAttr);//创建一个 VPSS GROUP
- if (s32Ret != HI_SUCCESS)
- {
- SAMPLE_PRT("HI_MPI_VPSS_CreateGrp failed with %#x!\n", s32Ret);
- return HI_FAILURE;
- }
- /*** set vpss 3D NR(去噪) 属性 ***/
- s32Ret = HI_MPI_VPSS_GetNRParam(VpssGrp, &unNrParam);
- if (s32Ret != HI_SUCCESS)
- {
- SAMPLE_PRT("failed with %#x!\n", s32Ret);
- return HI_FAILURE;
- }
- s32Ret = HI_MPI_VPSS_SetNRParam(VpssGrp, &unNrParam);
- if (s32Ret != HI_SUCCESS)
- {
- SAMPLE_PRT("failed with %#x!\n", s32Ret);
- return HI_FAILURE;
- }
- s32Ret = HI_MPI_VPSS_StartGrp(VpssGrp);//启用 VPSS GROUP
- if (s32Ret != HI_SUCCESS)
- {
- SAMPLE_PRT("HI_MPI_VPSS_StartGrp failed with %#x\n", s32Ret);
- return HI_FAILURE;
- }
- /******************************
- *step2 : 绑定VI 和 VPSS
- *******************************/
- HI_S32 j, s32Ret;
- VPSS_GRP VpssGrp;
- MPP_CHN_S stSrcChn;
- MPP_CHN_S stDestChn;
- SAMPLE_VI_PARAM_S stViParam;
- VI_CHN ViChn;
- s32Ret = SAMPLE_COMM_VI_Mode2Param(enViMode, &stViParam);
- if (HI_SUCCESS !=s32Ret)
- {
- SAMPLE_PRT("SAMPLE_COMM_VI_Mode2Param failed!\n");
- return HI_FAILURE;
- }
- VpssGrp = 0;//VPSS GROUP 0
- ViChn = 0;//VI 通道0
- stSrcChn.enModId = HI_ID_VIU;//模块VI的ID
- stSrcChn.s32DevId = 0;
- stSrcChn.s32ChnId = ViChn;
- stDestChn.enModId = HI_ID_VPSS;//模块VPSS的ID
- stDestChn.s32DevId = VpssGrp;
- stDestChn.s32ChnId = 0;
- s32Ret = HI_MPI_SYS_Bind(&stSrcChn, &stDestChn);//绑定VI和VPSS
- if (s32Ret != HI_SUCCESS)
- {
- SAMPLE_PRT("failed with %#x!\n", s32Ret);
- return HI_FAILURE;
- }
- /******************************
- *step3 : 前面设置了VPSS组,将VI通道与VPSS组里的0通道
- *绑定起来,但还未设置0通道,下面设置0通道。
- *******************************/
- VpssChn = 0;
- stVpssChnMode.enChnMode = VPSS_CHN_MODE_USER; //设置通道为USER模式
- stVpssChnMode.bDouble = HI_FALSE; //字段帧传输,仅对VPSS_PRE0_CHN有效
- stVpssChnMode.enPixelFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; //目标图像像素格式
- stVpssChnMode.u32Width = stSize.u32Width;
- stVpssChnMode.u32Height = stSize.u32Height;
- stVpssChnMode.enCompressMode = COMPRESS_MODE_SEG; //输出的压缩模式,按照 256 bytes 为一段进行压缩。
- memset(&stVpssChnAttr, 0, sizeof(stVpssChnAttr));
- stVpssChnAttr.s32SrcFrameRate = -1; //源通道帧率控制,源帧率与目标帧率都为-1,则不进行帧率控制。
- stVpssChnAttr.s32DstFrameRate = -1; //目的通道帧率控制
- //设置 VPSS 通道属性
- s32Ret = HI_MPI_VPSS_SetChnAttr(VpssGrp, VpssChn, pstVpssChnAttr);
- if (s32Ret != HI_SUCCESS)
- {
- SAMPLE_PRT("HI_MPI_VPSS_SetChnAttr failed with %#x\n", s32Ret);
- return HI_FAILURE;
- }
- //设置 VPSS 通道工作模式
- s32Ret = HI_MPI_VPSS_SetChnMode(VpssGrp, VpssChn, pstVpssChnMode);
- if (s32Ret != HI_SUCCESS)
- {
- SAMPLE_PRT("%s failed with %#x\n", __FUNCTION__, s32Ret);
- return HI_FAILURE;
- }
- //启用 VPSS 通道
- s32Ret = HI_MPI_VPSS_EnableChn(VpssGrp, VpssChn);
- if (s32Ret != HI_SUCCESS)
- {
- SAMPLE_PRT("HI_MPI_VPSS_EnableChn failed with %#x\n", s32Ret);
- return HI_FAILURE;
- }
6.注意点
对于函数:HI_MPI_VPSS_CreateGrp
离线模式时,可创建多个 GROUP,最大 GROUP 数为 VPSS_MAX_GRP_NUM;
在线模式时,仅支持创建 1 个 GROUP,且 GROUP 号仅能为 0。
不支持重复创建。
在线模式时,由于 VI 和 VPSS 的逻辑处理需要时序严格同步,所以 GROUP 创建中的 group 的图像属性必须和 VI 的图像设置属性一致;否则会出现 VPSS 的中断错误。具体请参见 VPSS_GRP_ATTR_S
二.海思Hi3516ev100视频处理子系统(VPSS)模块相关推荐
- 海思HI3518E视频处理基础概念《三》----- 视频处理子系统VPSS
目录 视频处理子系统VPSS 1.概述 2. 基本概念 3.VPSS 上下文关系 视频处理子系统VPSS 1.概述 VPSS( Video Process Sub-System)支持对一幅输入图像进行 ...
- 海思HiMPP视频编解码开发文档
前言: 海思提供的媒体处理软件平台(Media Process Platform,简称MPP),可支持应用软件快速开发.该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供MPI(MP ...
- 海思3531DV100视频输入模块
海思3531DV100视频输入模块(VI) VI 可以对接收到的原始视频图像数据进行裁剪(Crop).水平垂直缩小(Down Scaling)和水平垂直翻转(Mirror.Flip)等处理,并实现一路 ...
- 海思NNIE开发(一):海思Hi3559AV100/Hi3519AV100 NNIE深度学习模块开发与调试记录
海思NNIE开发系列文章: 海思NNIE开发(一):海思Hi3559AV100/Hi3519AV100 NNIE深度学习模块开发与调试记录 海思NNIE开发(二):FasterRCNN在海思NNIE平 ...
- 海思Hi3559(十一)——VPSS图片放缩
参考资料 网址/文档名 1 <HiMPP V4.0媒体处理软件开发参考> 2 https://blog.csdn.net/avideointerfaces/article/details/ ...
- 海思 关于视频层和通道的认识
一.视频层和通道号的关系 SDK 将通道归属于视频层管理,一个视频层上可显示多个视频,每一个视频显示区域称为一个通道,视频被限制通道内,通道被限制在视频层内.对于一个视频层,其上面的通道都是独立的.同 ...
- 1.1 海思3518E视频编解码的一些概念
目录 1.1.1 前言 1.1.2 视频编解码的基本概念了解 1.1.1 前言 这是我第一次写博客,我写博客的目的是为了记录我的学习笔记,同时也是想把我的学习记录分享出来,供参考学习.这个学习笔记是关 ...
- 海思3518E开发笔记2.7——海思VENC(Video Encode)模块详解
目录 海思Video Encode模块架构介绍 海思Video Encode相关概念 码率控制 海思Video Encode模块功能介绍 编码通道 ROI 裁剪编码 函数调用关系 相关数据结构 流程分 ...
- 海思3518E开发笔记2.5——海思VI(video input)模块详解
目录 海思video input模块架构介绍 海思video input模块功能介绍 结构体说明 函数调用关系 流程分析 step 1: mipi configure step 2: configur ...
最新文章
- web service方法进行全文检索_SpringMVC(Web应用)配置教程终章项目实战
- unreal4怎么设置游戏模式_在Unreal4中如何连接自定义服务器
- java白色_java-将精灵颜色更改为白色
- Fedora/RedHat上使用Docker命令搭建Mysql服务器
- USACO section1.3 Barn Repair 修理牛棚(贪心)
- python中字符串(二)-访问值、更新、转义、运算
- c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...
- 企业为什么要做高端网站优化呢?
- nc windows安装教程
- 如何写好科研论文思维导图分享
- 【Python】P2525 Uim的情人节礼物·其之壱
- LBP特征原理及代码实现
- 自动定时执行任务、定时任务执行的几种实现方法
- 学 AI 容易翻车?寸步难行的程序员,90%都输在了这点上!
- 愚人节这天,我辞职了
- 网络推广都有那些平台
- Selenium4.0+Python手撸自动化框架系列之 Web元素等待方式介绍 与 封装
- Cadence orcad 原理图导出带书签目录的办法
- 想找女朋友,结果遭遇了酒托,且行且小心啊!
- crawler project:bilibili_spider
热门文章
- win10系统增加虚拟内存的方法 windows10电脑虚拟内存怎么设置?教你设置一个合理的虚拟内存
- 通过Loadrunner读取excel表数据并批量更新到Oracle中
- Linux下百度网盘一直在加载打不开
- 解决0x0000098全版本通用极速版(不重装系统)
- PAT 10. 查找指定字符 python
- 明星热图|刘亦菲拍摄全新广告大片;易烊千玺、徐新驰、王紫璇、德约科维奇代言新品牌...
- 快易搜软件,快速查找电脑文件。
- 格子游戏 解题报告
- txt阅读器, 在别人的源码上 增加书签、字体缩放、书架 功能
- 批处理脚本命令---cls、color、title