HI3518E MPP功能模块和视频缓存池
MPP
MPP:Media Process Platform 媒体处理平台。
海思媒体处理平台的主要内部处理流程,主要分为视频输入( VI)、视频处理( VPSS)、视频编码(VENC)、视频解码( VDEC)、视频输出(VO)、视频侦测分析(VDA)、音频输入(AI)、音频输出(AO)、音频编码(AENC)、音频解码( ADEC)、区域管理( REGION)等模块。
下面详细介绍各个模块及其流程:
- VI:Video in,视频输入模块捕获视频图像,可以在后期对图像剪切、缩放,并输出多路不同分辨率图像数据。
- VDEC:Video decode,视频解码模块对编码后的视频码流进行解码,并将解码后的图像数据送入VPSS进行处理或者直接送至VO进行显示。(解码格式:H.264 H.265 MPEG)
- VPSS:Video Process Sub-System,视频处理子系统 接收VI和解码模块传送来的视频图像数据,进行图像去燥、增强、锐化处理,实现同源输出多路不同分辨率的图像数据用于编码、预览、抓拍。
- VDA:Video detection analyse,视频侦测分析模块接收VI传入的图像,进行移动、遮挡侦测等,最后输出侦测分析结果
- VO:视频输出模块接收VPSS处理后的图像,可以进行播放、暂停控制等,最后按用户配置输出到外围视频设备。
- AI:音频输入模块捕获音频数据,然后AENC模块支持按多种音频协议对音频数据进行编码。
- ADEC:音频解码模块用于直接对音频码流进行解码,并将音频数据送入AO,即可播放声音。
视频编解码缓存池
主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。
这里公共缓存池很类似于ucosii中的内存管理。
就是利用内存管理控制块来管理大片内存
typedef struct hiVB_CONF_S
{
HI_U32 u32MaxPoolCnt; /* max count of pools, (0,VB_MAX_POOLS] 最大视频缓存池的个数,必须考录到mpp系统和实际内存情况*/
struct hiVB_CPOOL_S
{
HI_U32 u32BlkSize; /*视频缓存池中单个内存块的大小*/
HI_U32 u32BlkCnt; /*视频缓存池中内存块的个数*/
HI_CHAR acMmzName[MAX_MMZ_NAME_LEN]; /*视频缓存池的名字*/
}astCommPool[VB_MAX_COMM_POOLS]; /*多少个视频缓存池*/
} VB_CONF_S; /*系统中整个视频缓存池的控制块*/
使用视频缓存池可以让MPP的每个模块不会干等,类似于流水线操作,还有其中每个模块对图像处理都是指针传递,不涉及内存的拷贝,除非需要一路输入多路输出。