最近在折腾HI3518C的芯片,应用到IPCamera上,最终获取多路不同分辨率的视频流供不同需求的预览切换。此处简单记录一下视频前处理元VPSS(Video Process Sub-System)的多通道间的关系以及使用心得。

HI3518C的视频子系统包括:视频系统初始化模块(MPP_SYS_CONF_S)、视频输入模块(VI)、视频前处理模块(VPSS)、视频编码模块(VENC)和视频输出模块(VO)组成。

HI3518C的VPSS是视频数据编码前的预处理单元,主要完成对一幅输入图像的统一预处理,如去噪、去隔行等,然后再对各通道分别进行缩放、锐化等处理(如:PreScale、De-ring/De-block、NR、IE、DIE、Sharpen 等,具体可参见VPSS_GRP_ATTR_S结构体),最后输出多种不同分辨率的图像。

其中,HI3518C对用提供GROUP的概念来管理VPSS,最多支持128个GROUP(我目前只使用了一个组:GROUP0)。VPSS的GROUP又包含多个通道(CHANNEL),对于不同规格的芯片,每个组包含的通道数也不相同,规格文档上都有详细说明。

HI3518C的各个GROUP包含8个CHANNEL,其中2个物理通道(PHY CHN)、一个直通通道(Bypass)和5个扩展通道(EXT CHN)。

物理通道是由硬件提供的,各物理通道的功能和限制各不相同;直通通道具备CROP功能,可以把不需要作预处理的一幅幅图像直接透传给接收者;扩展通道具备缩放功能,当它绑定到物理通道后,可以把从物理通道获取到的图像缩小或放大成用户所需要的不同分辨率的图像。Hi3518C 提供 5 路扩展通道以提供更好的灵活性,扩展通道具备缩放和帧率控制功能,不经过其他硬件算法单元处理。

用户在使用的时候,需要首先创建VPSS GROUP,然后设置好GROUP属性并启用VPSS GROUP之后,再把VI作为源通道,把VPSS作为目标通道,通过调用 HI_MPI_SYS_Bind 绑定VI到VPSS,就可以建立视频输入到视频预处理间的通路,使得前端采集到的视频数据经由此通路到达VPSS单元。注意,每个 GROUP 仅可与一个输入源绑定。

然后,就是根据实际需要来创建多个VPSS CHANNEL,从CHANNEL中获得所需要的目标分辨率的图像输出了。

HI3518C的物理通道0无缩放能力,支持锐化,不支持抽场,一般用于大码流编码和JPEG抓拍。

HI3518C的物理通道1,水平、垂直均最大支持 8 倍缩小,水平、垂直均最大支持 8 倍放大,支持锐化, 不支持抽场,一般用于小码流编码和CVBS(复合视频广播信号)预览。

因此,用户可以通过CHANNEL(0)来获取到前端图像采集模块所支持的最大像素分辨率的图像,也就是说,如果前端sensor支持的最大图像分辨率为1920*1080像素,那么经CHANNEL0所得到的图像就是1920*1080像素格式,并且不可以把该通道的数据再作为其它扩展通道的源来进行图像的放大或缩小处理。

用户可以通过CHANNEL(1)来获取到的图像为用户任意指定的合法的像素大小,通过指定像素格式及宽高大小,进行预处理后可以作为视频编码模块(VENC)的输入。同时,用户可以把该通道作为后面所要建立的扩展通道的源,通过设置所要建立的扩展通道的属性(主要指:绑定的源通道号、图像帧率、图像宽高等,见VPSS_EXT_CHN_ATTR_S结构体),再经由各扩展通道来获取到的所需的目标分辨率。

用户还可通过扩展通道CHANNEL(3、4、5、6、7)来获取除VI所支持的最大分辨率以外的各种符合标准的不同分辨率图像,比如前端sensor支持最大分辨率为1920*1080,那么结合扩展通道的使用,用户就可以获取到HD720(1280*720)、VGA(640*480)、QVGA(320*240)、CIF(352*288)、QCIF(176*144)等分辨率的图像了。

注意,当把通道 1 作为输入源的时候,要设置通道 1 为USER模式。因为HI3518C只有两个物理通道,通道0不具备缩放功能,所以只有通道1可以作为扩展通道的源,对图像进行缩放处理。

其中,VPSS GROUP有两种工作模式:AUTO 和 USER,两种模式间可动态切换。默认的工作模式为 AUTO,此模式下各通道仅可与一个接收者绑定。若想使用 USER 模式,则需调用 MPI 接口进行设置,同时指定所需图像的大小和格式,此模式下各通道可与多个接收者绑定。需要特别注意的是,USER 模式主要用于对同一通道图像进行多路编码的场景,此模式下播放控制不生效,因此预览和回放场景下不建议使用。Bypass 通道只能工作在 AUTO 模式,可与多个接收者绑定。

海思HI35XX之----视频处理单元各通道间的关系的更多相关文章

  1. 海思hi35xx 开发学习(3):视频输入

    视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口.LVDS 接口和 HISPI 接口),SLVS-EC,BT.1120,BT.656,BT.601,DC 等接口接收视频数据.V ...

  2. 海思HI35xx平台软件开发快速入门之H264解码实例学习

    ref :https://blog.csdn.net/wytzsjzly/article/details/82500277   前言 H264视频编码技术诞生于2003年,至今已有十余载,技术相当成熟 ...

  3. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

  4. 海思hi35xx 开发学习(2):系统控制

    应用程序启动 MPP 业务前,必须完成 MPP 系统初始化工作.同理,应用程序退出MPP 业务后,也要完成 MPP 系统去初始化工作,释放资源. 视频缓存池 一组大小相同.物理地址连续的缓存块组成一个 ...

  5. 海思hi35xx 开发学习(1):海思媒体处理平台架构

    处理平台架构图: 主要分为: 视频输入(VI):VI 模块捕获视频图像,可对其做剪切.去噪等处理,并输出多路不同分辨率的图像数据. 视频处理(VPSS):VPSS 模块接收 VI 和解码模块发送过来的 ...

  6. OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台

    前言   移植opencv到海思平台,opencv支持对视频进行解码,需要对应的ffmpeg支持.   Ffmpeg的移植   Ffmpeg的移植请参考之前的文章:<FFmpeg开发笔记(十): ...

  7. (转)海思平台HI35XX系列内存设置

    海思平台的内存分为两部分,一部分给系统使用,另外的一部分给多媒体使用.可以通过cat /proc/meminfo查看系统内存和cat /proc/media-mem 查看多媒体内存使用情况. /pro ...

  8. 海思Hi3519A MPP从入门到精通(一 系统概述)

    1. 概述 海思提供的媒体处理软件平台(Media Process Platform,简称 MPP),可支持应用软件快速 开发.该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供 M ...

  9. 建立live555海思编码推流服务

    因项目需要,这一周弄了一下live555.需求:海思编码——>RTSP server,使用VLC可以访问,类似于网络摄像机的需求.看了一下,live555的架构太复杂了,半桶水的C++水平还真的 ...

随机推荐

  1. ES6的新特性(8)——数组的扩展

    数组的扩展 扩展运算符 含义 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1, 2, 3]) / ...

  2. ionic 开发实例

    ionic 开发实例 一.ionic初始化项目 1:安装ionic npm install -g ionic 2:初始化项目框架 我们可以用命令创建一个应用程序,可以使用我们的一个现成的应用程序模板, ...

  3. scrum立会报告+燃尽图(第三周第三次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2286 项目地址:https://coding.net/u/wuyy694 ...

  4. “Hello World!”团队第九次会议

    今天是我们团队“Hello World!”团队召开的第九次会议.博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七.燃尽图 一.会议时间 20 ...

  5. 冲刺ing-3

    第三次Scrum冲刺 队员完成的任务 队员 完成任务 吴伟华 分配任务,燃尽图 蔺皓雯 编写博客,美化主界面 蔡晨旸 美化主界面 曾茜 主页面设计 鲁婧楠 服务器建构 杨池宇 服务器建构 成员遇到的问 ...

  6. Traffic Steering for Service Function Chaining

    Introduction 目前通过vlan标签来把流量引向对应的sfc 以前的sfc静态(SFs相邻组成SFC),有了sdn之后具有动态性.(SFs不需要彼此相邻.将流量动态地导向所需的SFs.) 流 ...

  7. Struts2:<s:action>的使用

    <s:action name=”actionName” namespace=”/” executeResult=”true”> <s:action>可以在jsp中直接调用act ...

  8. Oracle数据库表空间常用操作

    1. 查看所有表空间大小 SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tables ...

  9. 最简单的Linux下apache+mysql+php安装

    转载:http://www.jb51.net/article/29843.htm ubuntu下需要先更新系统后 流程笔记: 1.打开终端,输入“sudo apt-get install apache ...

  10. django-registration中的问题

    https://github.com/ubernostrum/django-registration.git https://django-registration.readthedocs.io/en ...