下面给出基于Hi3559AV100的视频采集整体设计,具体设计将在后续给出:

图形采集端整体设计

  Hi3559AV100软件程序按结构划分可分为4层,第一层是硬件驱动层,第二层是操作系统层,第三层是媒体软件处理平台(MPP,MediaProcessPlatform)。第四层是应用层,其系统层次结构如图1所示:

图1 Hi35xx典型系统层次结构

  硬件驱动层指Hi3559AV100的相关硬件处理单元的驱动程序,负责为操作系统以及上层软件提供设备的操作接口。在嵌入式处理器Hi3559中,海思对Hi3559芯片内部的硬件处理单元提供了相应的驱动,包括GMAC、I2C、USB、串口等硬件驱动,能够大大缩短开发时间,降低开发难度。

  操作系统层采用裁剪的Linux内核HiLinux。操作系统层提供了媒体处理平台的所需的基础函数,以支持媒体处理平台在操作系统上正常运行。

  媒体软件处理平台(MPP,Media Process Platform)是海思半导体有限公司提供的软件处理系统,主要分为视频输入(VI)、视频处理子系统(VPSS Video processing subsystem)、视频编码(VENC)、视频解码(VDEC)、视频输出(VO)、区域管理(REGION)等模块。MPP对应用层屏蔽了芯片相关的底层处理,应用软件可以直接使用MPP提供MPI(MPPProgrameInterface)接口完成相应功能。

  在之后的图像视频开发中,主要使用了MPP中的VDEC、VPSS、VO模块来实现视频解码传输、视频图像处理、以及视频输出的功能。

  Hi3559中的软件程序设计包括视频采集、视频图像处理、区域管理、视频压缩以及视频传输程序。其中,视频解码传输、视频图像处理、视频压缩、视频输出分别通过MPP中的VDEC、VPSS、VO模块实现。

  Hi3559程序设计流程如图2所示,从SD card将.h264、.h265等视频流送入到VDEC,然后VDEC绑定VPSS,利用VPSS模块对视频流做压缩等操作,之后VPSS绑定VO,VPSS数据输入至VO,最后通过HDMI输出。

图2 Hi3559程序设计流程

  系统控制根据 Hi35xx 芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统各个业务模块的初始化、去初始化以及管理 MPP 系统各个业务模块的工作状态、提供当前 MPP 系统的版本信息、提供大块物理内存管理等功能。应用程序启动 MPP 业务前,必须完成 MPP 系统初始化工作。同理,应用程序退出MPP 业务后,也要完成 MPP 系统去初始化工作,释放资源。
  视频缓存池主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。一组大小相同、物理地址连续的缓存块组成一个视频缓存池。必须在系统初始化之前配置公共视频缓存池。根据业务的不同,公共缓存池的数量、缓存块的大小和数量不同。
  所的视频输入通道都可以从公共视频缓存池中获取视频缓存块用于保存采集的图像,如图3中所示 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 显示完之后释放回公共视频缓存池。 


图3 典型的公共视频缓存池数据流图
  VDEC 模块提供驱动视频解码硬件工作的 MPI 接口,实现视频解码功能。码流方式采用按帧发送(VIDEO_MODE_FRAME),用户每次发送完整一帧码流到解码器,每调用一次发送接口,解码器就认为该帧码流已经结束,开始解码图像,因此需保证每次调用发送接口发送的码流必须为一帧,否则会出现解码错误。通过该发送方式可以达到快速解码的目的。在模式 VIDEO_MODE_FRAME 下发送码流时,解码输出的图像时间戳 PTS 为发送码流接口(HI_MPI_VDEC_SendStream)中用户送入的 PTS,解码器不会更改此值;如果用户配置的 PTS 值为 0,则表示用户不进行帧率控制,而是由视频输出模块(VO)进行帧率控制;如果用户送入的 PTS 值为-1,则表示此图像不会被视频输出模块(VO)显示;如果是其他值,则表示视频输出模块(VO)根据用户

设置的 PTS 值进行帧率控制。
  VPSS(Video Process Sub-System)是视频处理子系统,支持的具体图像处理功能包括FRC(Frame Rate Control)、CROP、Sharpen、3DNR、Scale、像素格式转换、LDC、Spread、固定角度旋转、任意角度旋转、鱼眼校正、Cover/Coverex、Overlayex、Mosaic、Mirror/Flip、HDR、Aspect Ratio、压缩解压等。

图4 VPSS上下文关系

  通过调用 SYS 模块的绑定接口,可与 AVS/USER/VDEC/VI 和 VO/VENC/SVP 等模块进行绑定,目前现在VDEC与VO和VPSS绑定,其中前者为 VPSS 的输入源,后者为 VPSS 的接收者。用户可通过 MPI 接口对 GROUP 进行管理。每个 GROUP 仅可与一个输入源绑定。GROUP 的物理通道两种工作模式:AUTO 和 USER,两种模式间可动态切换。AUTO 模式下各通道仅可与一个接收者绑定,主要用于预览和回放场景下做播放控制。USER 模式下各通道可与多个接收者绑定。需要特别注意的是,USER 模式主要用于对同一通道图像进行多路编码的场景,此模式下播放控制不生效,因此回放场景下不建议使用 USER 模式。VPSS 只工作在 离线模式下才支持 AUTO 模式。 


图5 Hi3559AV100 VPSS 的数据流图
  VO(Video Output,视频输出)模块主动从内存相应位置读取视频和图形数据,并通过相应的显示设备输出视频和图形。

  后面将出一系列基于Hi3559AV100平台的整个开发随笔,供大家参考。

  备注:若需转载,麻烦大家转载说明出处,谢谢大家^-^

基于Hi3559AV100的视频采集(VDEC-VPSS-VO)整体框图设计的更多相关文章

  1. 基于Hadoop的大数据平台实施记——整体架构设计[转]

    http://blog.csdn.net/jacktan/article/details/9200979 大数据的热度在持续的升温,继云计算之后大数据成为又一大众所追捧的新星.我们暂不去讨论大数据到底 ...

  2. 基于Hadoop的大数据平台实施记——整体架构设计

    大数据的热度在持续的升温,继云计算之后大数据成为又一大众所追捧的新星.我们暂不去讨论大数据到底是否适用于您的组织,至少在互联网上已经被吹嘘成无所不能的超级战舰.好像一夜之间我们就从互联网时代跳跃进了大 ...

  3. 基于Hi3559AV100 RFCN实现细节解析-(2)RFCN数据流分析

    下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...

  4. 基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析一 :

    下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...

  5. 基于Video4Linux的视频采集模块开发(转)

    Linux系统中,摄像头驱动程序安装好后,为了进行视频采集必须加入Video4Linux模块,从而可以通过Video4Linux模块提供的编程接口(API)从摄像头设备中获取图像帧.下面具体研究基于V ...

  6. 基于FPGA的LCD+CMOS视频采集显示使用小结

    基于FPGA的LCD+CMOS视频采集显示 液晶显示器采用扫描模式,RGB888 电源采用:+5V供电 usb供电有时候会出现供电不足的问题 显示器接口有两种选择:16bit或24bit  分别对应 ...

  7. 基于PCIe的多路视频采集与显示子系统

    基于PCIe的多路视频采集与显示子系统 1        概述 视频采集与显示子系统可以实时采集多路视频信号,并存储到视频采集队列中,借助高效的硬实时视频帧出入队列管理和PCIe C2H DMA引擎, ...

  8. 基于Camera Link和PCIe DMA的多通道视频采集和显示系统

    基于Camera Link和PCIe DMA的多通道视频采集和显示系统 在主机端PCIe驱动的控制和调度下,视频采集与显示系统可以同时完成对多个Camera Link接口视频采集以及Camera Li ...

  9. 基于PCIe DMA的8通道视频采集&显示IP,兼容V4L2

    基于PCIe DMA的8通道视频采集&显示IP,兼容V4L2 Video Capture&Display IP for V4L2 在主机端视频设备内核驱动V4L2 的控制和调度下,Vi ...

随机推荐

  1. 三维CAD——基于B_rep的建模操作

    内容来自高老师的<三维CAD建模>课,本文就主要介绍半边结构和欧拉操作以及代码实现. 1. 边界表示法及其数据结构 · 拓扑结构 a.拓扑元素:面.边.点.体 b.拓扑关系:9种.V{V} ...

  2. Link/Cut Tree CodeForces - 614A 暴力+爆 long long 处理

    题意: 给你一个区间[l,r],让你从小到大输出k^x,设y=k^x,要保证y在区间[l,r]中 题解: 就算k是最小的2也不需要枚举多少次就到long long的极限了,所以暴力没商量,根本不会TL ...

  3. JavaScript——二

    样式: 实验二. querySelectorAll()里面如果填id名称就直接写,如果要确定某个属性的值,就要用到[ ]来具体选择,其中写多个以空格隔开就表达第一个声明下的第二个标签内部的某个属性 这 ...

  4. Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math (数学)

    题意:给你一个正整数\(n\),求两个正整数\(a\)和\(b\),使得\(a+b=n\),并且\(LCM(a,b)\)要尽可能的小. 题解:首先对于偶数,构造\(\frac{n}{2}\)和\(\f ...

  5. Ubuntu Live CD联网修复

    此模式下可以联网修复ubuntu系统下绝大多数问题.进入LIVE CD模式,打开终端执行以下命令: #此处/dev/sda1为ubuntu根分区,工作中根据实际分区情况更改 sudo mount /d ...

  6. python之字符串replace的方法

    1.描述 replace()方法把字符串中的old(旧字符串)替换成new(新字符串),如果有指定第三个参数max,则替换的不超过max次 2.语法 str.replace(old,new[,max] ...

  7. .NET Core项目自动化测试和代码覆盖率审查

    这篇文章给大家分享一下,如何配置.NET Core项目自动化测试和代码覆盖率审查. 基本知识,请参考这里: https://docs.microsoft.com/en-us/dotnet/core/t ...

  8. Postman查看上传文件过程时出现400 - Required MultipartFile parameter 'files' is not present错误

    我在利用postman查看上传图片文件时,出现了如下图的错误,看到之后很懵逼. 图1 上网搜了一下,归结下来就是参数不一致导致的.不过还有一些是由于没加注解,如下图示: 图2 关于参数不一致问题,主要 ...

  9. You Don't Know Chrome Features

    You Don't Know Chrome Features URL auto convert to QR Code click the tab URL address click QRCode ic ...

  10. Web SQL& IndexedDB

    Web SQL& IndexedDB https://developer.mozilla.org/en/docs/Web/API/IndexedDB_API https://mdn.githu ...