目录
- 海思Video Process Sub-System模块架构介绍
- 海思Video Process Sub-System相关概念
-
- VI、VPSS的离、在线模式
- 海思Video Process Sub-System模块功能介绍
- 函数调用关系
- 相关数据结构
- 流程分析
海思Video Process Sub-System模块架构介绍
VPSS( Video Process Sub-System)支持对一幅输入图像进行统一预处理,如去噪、去隔行(隔行扫描转为逐行扫描,以前隔行扫描好做,现在为了兼容需要去隔行,一般不会碰到,看sensor手册采用什么扫描方式)等
然后再对各通道分别进行缩放、锐化等处理,最后输出多种不同分辨率的图像。
VPSS 单元支持的具体图像处理功能包括
- FRC( Frame Rate Control)
- Crop(裁剪)
- NR( Noise Reduce)
- LDC( Lens Distortion Correction镜头畸变矫正)
- Rotate(旋转)
- Cover/Overlay(覆盖、字符叠加)
- Scale(缩放)
- Mirror/Flip(镜像、翻转)
- FishEye
鱼眼,突出的曲面镜头,屈光面更宽,画面更大但画面变形更严重,这个模块用于将画面调优
海思Video Process Sub-System相关概念
-
GROUP
VPSS 对用户提供组( GROUP)的概念。最大可用数为 VPSS_MAX_GRP_NUM个,各芯片的最大组数目有所不同,各 GROUP 分时复用 VPSS 硬件。每个 VPSSGROUP 包含多个通道,通道数目视方案实现有所不同,具体描述请参见CHANNEL。
group实际上是对VPSS硬件功能的虚拟化,即若系统里只有一个group,那么这个group实际就是VPSS;若有多个group,那么就是一会给group0用一会给group1用,这就是分时复用。 -
CHANNEL
VPSS 组的通道。通道分为 2 种:物理通道和扩展通道。 VPSS 硬件提供多个物理通道,每个通道具有缩放、裁剪等功能。扩展通道具备缩放功能,它通过绑定物理通道,将物理通道输出作为自己的输入,把图像缩放成用户设置的目标分辨率输出。
chn是Grp里面的通道,这个通道有物理的有扩展的,物理通道有对应的硬件,扩展通道没有对应的硬件,扩展通道其实是对应了一些功能(缩放等)
以上为重要概念
可以理解为VPSS是流水线,group是流水线上工作的白班和夜班两组工作人员,channel就是流水线上的工人,不同channel(工作人员)的作用不一样
Grp是一个组合,一个物理硬件VPSS在软件上的一个映射,如果我们只有一个Grp的话就是物理硬件VPSS在软件上的一个1:1的一个映射。
chn是Grp里面的通道,这个通道有物理的有扩展的,物理通道有对应的硬件,扩展通道没有对应的硬件,扩展通道其实是对应了一些功能(缩放等),
注意:VI的chn和VPSS的chn是两回事,VI那边的chn是VI里面Dev里面的chn,VI那边DEV的地位有点类似于VPSS这边的Grp。
对接的时候是VI这边的chn去绑定VPSS这边的Grp。
-
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处理完整帧图像再发送给编码模块过程中,数据的延时时间。这样的方式即为低延时方案
VI、VPSS的离、在线模式
VI 和 VPSS 的协作模式分为以下 2 种(模式切换由 load 脚本参数控制,对应 sys 模块参数 vi_vpss_online):
- VI/VPSS 离线模式是指 VI 进行时序解析后将图像数据写出到 DDR, VPSS 从DDR 中载入 VI 采集的数据进行图像处理,是传统 Hi3518/Hi3520D 等芯片(老海思芯片)的VI/VPSS 的协作模式。
- VI/VPSS 在线模式是指 VI 进行时序解析后直接在芯片内部将数据传递到 VPSS,中间无 DDR 写出的过程。在线模式可以省一定的带宽和内存,降低端到端的延时。需要注意的是,在线模式时,因为 VI 不写出数据到 DDR,无法进行CoverEx、 OverlayEx、 Rotate、 LDC 等操作,需要在 VPSS 各通道写出后再进行Rotate/LDC 等处理,而且有些功能只在离线下能支持,比如 DIS。
协作模式在装载ko的时候可以设置
相关数据结构
流程分析
首先获取图像尺寸。第一个参数事编码制式,传入的是NTSC;第二个参数是第0路码流;第三个参数是用于获取图像尺寸的结构体。
然后。第一个参数是grp ,第二个参数是grp相关属性
在startgroup中有几个MPI、、、。就是创建组后获取并设置属性,再开启组
然后将VPSS的group绑定到上层VI的channel。该函数内部使用来设置dev和channel的总数和编 间隔,最后将VI的chn和VPSS的grp绑定
绑定操作是在线模式,用通道;离线模式直接通过DDR数据交互
最后使能通道。其中设置通道属性,设置通道模式是user还是auto,最后使能通道
每次对单个通道进行操作,根据通道数决定操作次数
第二次第三次只创建了channel,三个channel绑定的是同一个group
注意:每一路都会获取图像的宽高比,每一路宽高比不一样,于是压缩模式不一样,对应数据结构如下
在vpss中的压缩原因strong>
对视频进行一些操作如叠加、缩放、锐化的操作都需要涉及到内存的拷贝,内存拷贝的操作是会占用DDR的带宽。VPSS的功能主要是将VI来的视频流一路出多路,重点在缩放功能,所以需要减少DDR带宽的占用。
压缩可能造成的问题strong>
视频流压缩后,若不解压,抓出来的图会花掉,如果视频送到算法中忘记解压,那么算法结果就不准。对视频的一切操作之前都需要解压。
不过一般用不着压缩,除非用的DDR很烂,拷贝很慢。在对内存要求严苛的情况下,才会对不同模块间传输的视频流进行压缩。
帧率控制给的是-1,就是不控制帧率,可以在文档中查到
为什么要控制帧率strong>
比如主通道是25fps,算法只需要8fps,为了节省ddr贷款,把算法相关通道fps降到8就行了,抓图通道只要图就可以,1fps就够了。
帧率只会影响视频流畅度,在预览视频是一个评估标准;在不需要看视频,如送算法、抓图的情况下帧率越低越好
- 物理通道作用是大码流编码或图像抓拍
- 扩展通道用于缩放,3518e的4~11通道可以二次缩放
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!