MPP模块
海思提供的媒体软件处理平台,可支持应用软件快速开发。该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供MPI(MPP Programe Interface)接口完成相应功能,如下未系统层次图。
视频流整个处理流程
VI: 视频输入处理模块,可以对视频进行裁剪和缩放,且可以输出多路不同分辨率码流
VENC: 解码模块对编码后的视频码流进行解码,并将解析后的图像数据送 VPSS 进行图像处理或直接送 VO 显示。可对 H264/MPEG4/MPEG2 格式的视频码流进行解码
VPSS: 视频处理子模块,模块接收 VI 和解码模块发送过来的图像,可对图像进行去噪、图像增强、锐化等处理,并实现同源输出多路不同分辨率的图像数据用于编码、预览或抓拍
VDA: 模块接收 VI 的输出图像,并进行移动侦测和遮挡侦测,最后输出侦测分析结果。
VO: 模块接收 VPSS 处理后的输出图像,可进行播放控制等处理,最后按用户配置的输出协议输出给外围视频设备。
AI: 模块捕获音频数据,然后 AENC 模块支持按多种音频协议对其进行编码,最后输出音频码流。
AO: 用户从网络或外围存储设备获取的音频码流可直接送给 ADEC 模块,ADEC 支持解码多种不同的音频格式码流,解码后数据送给 AO 模块即可播放声音
视频缓存池
- 视频的本质是多帧图片,图片的本质是RGB或rawRGB数据,要占用一段连续内存
- 视频的裁剪、缩放、修正处理等各种操作,本质上就是对内存中的数据进行运算
- 视频缓存池(VB, video buffer)就是一段很大,又被合理划分和管理的内存,用来做视频数据的暂存和运算场地
- 公共视频缓存池的公共2字,可以理解为全局变量,也就是各个模块都能访问的一段内存
- 看似视频缓存块在各个模块之间流转,实际上并没有内存复制,而是指针在传递
- 视频缓存池的内存由MPP来维护,我们在系统启动时就把整个SDRAM分成了2部分:系统部分(由linux kernel来维护管理)和mpp部分(由mpp系统来维护管理)
- 缓存池需要几个,每个中包含几个缓存块,每个缓存块多大,都是可以由用户程序设置好参数,