海思Hi35XX系列(二)海思处理架构流程

一、概述

海思提供的媒体处理软件平台(Media Process Platform,简称MPP),可支持应用软件快速 开发。该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供 MPI(MPP Program Interface)接口完成相应功能。该平台支持应用软件快速开发以下

功能:输入视频捕获、H.265/H.264/JPEG编码、H.265/H.264/JPEG解码、视频输出显 示、视频图像前处理(包括去噪、增强、锐化)、图像拼接、图像几何矫正、智能、音 频捕获及输出、音频编解码等功能。

二、系统架构

MPP 平台支持的典型的系统层次如图所示,主要分为以下层次:

  • 硬件层  硬件层由Hi35xx芯片加上必要的外围器件构成。外围器件包括Flash、DDR (Double Data-Rate)、视频 Sensor 或 AD、音频 AD 等。
  • 操作系统层  基于Linux或Huawei LiteOS 的OS系统。
  • 操作系统适配层  提供操作系统系统调用基础函数,屏蔽操作系统差异,支持媒体处理平台运行在 不同的操作系统上,或相同操作系统不同版本。
  • 媒体处理平台  基于操作系统适配层,控制芯片完成相应的媒体处理功能。它对应用层屏蔽了硬 件处理细节,并为应用层提供API接口完成相应功能。
  • 其他驱动  除媒体处理平台外,海思为Hi35xx芯片的其他相关硬件处理单元提供了相应的驱动, 包括CIPHER、RTC 等驱动。
  • 应用层  基于海思媒体处理平台及其他驱动,由用户开发的应用软件系统。

三、海思媒体处理平台架构

海思媒体处理平台的主要内部处理流程如图,主要分为视频输入(VI)、视频 处理(VPSS)、视频编码(VENC)、视频解码(VDEC)、视频输出(VO)、视频拼接 (AVS)、音频输入(AI)、音频输出(AO)、音频编码(AENC)、音频解码(ADEC)、区 域管理(REGION)等模块。

镜头聚光投到sensor上(光电转化:模拟的光信号→模拟的电信号→数字的电信号)图像→VI模块输入→VSPP(图像处理)→VO(显示)、或者VENC(进行编码,各种码流:H265E、JPEG、H264E)

SD Card(硬盘之类的存储设备)→VDEC(解码)→VSPP(图像处理)→VO(显示)、或者VENC(重新编码,例如原本是1080P分辨率VSPP处理后重新编码成720P)

REGION(区域模块):主要用来叠加OSD信息(水印)

  • VI(video input):模块捕获视频图像,可对其做剪切、去噪等处理,并输出多路不同分辨率的图像数据。
  • VO(video output):模块接收VPSS处理后的输出图像,可进行播放控制等处理,最后按用户配置的输出协议输出给外围视频设备。
  • VPSS模块:接收VI和解码模块(VDEC)发送过来的图像,可对图像进行图像增强、锐化等处理,并实现同源输出多路不同分辨率的图像数据用于编码(VENC)、预览(VO)或抓拍。
  • VENC(编码模块):接收VI捕获并经VPSS处理后输出的图像数据,可叠加用户通过Region 模块设置的OSD图像,然后按不同协议进行编码并输出相应码流。
  • VDEC(解码模块):对编码后的视频码流进行解码,并将解析后的图像数据送VPSS进行图 像处理,再送VO显示。可对H.265/H.264/JPEG格式的视频码流进行解码。

可以多路采集输入,我使用的Hi3559AV100视频接口支持8路sensor输入;经过处理由AVS拼接,Hi3559AV100支持多达6路视频360°/720°全景拼接。

AVS 接收多路VI采集的图像,进行拼接合成全景图像。

四、公共视频缓存池

什么是视频缓冲池
  • (1)视频的本质是多帧图片,图片的本质是RGB或rawRGB数据,要占用一段连续内存
  • (2)视频的裁剪、缩放、修正处理等各种操作,本质上就是对内存中的数据进行运算
  • (3)视频缓存池(VB, video buffer)就是一段很大,又被合理划分和管理的内存,用来做视频数据的暂存和运算场地
  • (4)公共视频缓存池的公共2字,可以理解为全局变量,也就是各个模块都能访问的一段内存
  • (5)看似视频缓存块在各个模块之间流转,实际上并没有内存复制,而是指针在传递
  • (6)视频缓存池的内存由MPP来维护,我们在系统启动时就把整个SDRAM分成了2部分:系统部分(由linux kernel来维护管理)和mpp部分(由mpp系统来维护管理)
  • (7)缓存池需要几个,每个中包含几个缓存块,每个缓存块多大,都是可以由用户程序设置好参数,然后调用MPP的相应API来向MPP申请分配的。

  • 图中可以看到一个大的公共视频缓冲池区域,里边包含了两个视频缓冲池A和B,也可以有更多,取决于内存的大小。
  • 一个公共视频缓冲池有很多缓存块,它由大小相同地址相连的很多缓存块构成;
  • 每个公共视频缓冲池中的缓存块大小和多少自己定义(前提是内存足够);
  • 应用程序可以调用相应的API来对缓冲池进行分配;
  • 应用程序先在缓冲池中找到用的缓存块Bm,VI在缓存块Bm中传入数据并将其传递给VPSS(传递的是指针),VPSS对其进行处理并同时将缓存块Bm释放回收,VPSS将处理好的数据放入缓存块Bi中传给VENC进行编码,编码完成后发送或存储,之后Bi也被释放重新分配;Bk也一样显示完成后释放重新分配。

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白不想画工图

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值