HI3518E MPP功能模块和视频缓存池

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33894122/article/details/82831246

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,即可播放声音。

MPP模块工作流程


视频编解码缓存池

主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。
这里公共缓存池很类似于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的每个模块不会干等,类似于流水线操作,还有其中每个模块对图像处理都是指针传递,不涉及内存的拷贝,除非需要一路输入多路输出。

猜你喜欢

转载自blog.csdn.net/qq_33894122/article/details/82831246