第二季3:海思MPP模块与视频缓冲池
以下内容源于朱有鹏课程,如有侵权,请告知删除。
一、MPP功能模块
1、MPP功能模块(MPP,media process platform,媒体处理平台)
(1)MPP手册:\01.software\board\document_cn目录下的《HiMPP IPC V2.0 媒体处理软件开发参考.pdf》提取码:1111
(2)详见MPP手册的系统概述1.3部分。
- 以ko和api形式提供,和驱动处于同一层次。
- 处理流程主要分为视频输入(VI)、视频处理(VPSS)、视频编码(VENC)、视频解码(VDEC)、视频输出(VO)、视频侦测分析(VDA)、音频输入(AI)、音频输出(AO)、音频编码(AENC)、音频解码(ADEC)、区域管理(REGION)等模块。
- VI 模块捕获视频图像,可对其做剪切、缩放等处理,并输出多路不同分辨率的图像数据。
- 解码模块对编码后的视频码流进行解码,并将解析后的图像数据送 VPSS 进行图像处理或直接送 VO 显示。可对H264/MPEG4/MPEG2 格式的视频码流进行解码。
- VPSS 模块接收 VI 和解码模块发送过来的图像,可对图像进行去噪、图像增强、锐化等处理,并实现同源输出多路不同分辨率的图像数据用于编码、预览或抓拍。
- 编码模块接收 VI 捕获并经 VPSS 处理后输出的图像数据,可叠加用户通过 Region模块设置的 OSD(水印信息)图像,然后按不同协议进行编码并输出相应码流。
- VDA 模块接收 VI 的输出图像,并进行移动侦测和遮挡侦测,最后输出侦测分析结果。
- VO 模块接收 VPSS 处理后的输出图像,可进行播放控制等处理,最后按用户配置的输出协议输出给外围视频设备。
2、使用SI软件,把MPP文件夹倒入,从例子sample_venc.c文件中的SAMPLE_VENC_1080P_CLASSIC函数开始看
- PAYLOAD_TYPE_E(传输的格式类型是什么)
- PIC_SIZE_E(图像分辨率大小)
- VB_CONF_S(视频缓存池)
二、视频缓存池
1、概念
(1)视频的本质是多帧图片,图片的本质是RGB或rawRGB数据,要占用一段连续内存。
(2)视频的裁剪、缩放、修正处理等各种操作,本质上就是对内存中的数据进行运算。
(3)视频缓存池(VB, video buffer)就是一段很大,又被合理划分和管理的内存,用来做视频数据的暂存和运算场地。
(4)“公共视频缓存池“”中的“公共”二字,可以理解为全局变量,也就是各个模块都能访问的一段内存。
(5)看似视频缓存块在各个模块之间流转,实际上并没有内存复制,而是指针在传递。
(6)视频缓存池的内存由MPP来维护,我们在系统启动时就把整个SDRAM分成了2部分:系统部分(由linux kernel来维护管理)和mpp部分(由mpp系统来维护管理)。
(7)缓存池需要几个,每个中包含几个缓存块,每个缓存块多大,都是可以由用户程序设置好参数,然后调用MPP的相应API来向MPP申请分配的。
2、相关的数据结构和API
(1)VB_CONF_S 结构体
- u32MaxPoolCnt,这个根据实际情况设置数目,最大不能超过VB_MAX_POOLS;
- u32BlkCnt表示A(或者B,或者C……)中有多少个块,u32BlkSize表示每个块的大小是多少。
- acMmzName[ ]表示A(或者B……)这个公共池的名字(便于调试)。.
- VB_MAX_COMM_POOLS这里是16,表示最大有16个公共池(ABC……P)
(2)HI_MPI_VB_SetConf,是 API函数,在某个ko文件里
- 用来设置格式。(点单,返回值表示是否点单成功)
(3)HI_MPI_VB_Init,是 API函数,在某个ko文件里
- 用来进行分配。(做菜,返回值表示是否做菜成功)
以上函数均在mpp手册里面查询可得。手册中举例为下面:
第二季3:海思MPP模块与视频缓冲池相关推荐
- 海思(MPP)媒体处理软件平台(3)-----VDEC
sample_vdec(视频解码) (测试环境,在HI3531D开发板上运行,查看代码使用VSCode) 运行 /nfsroot/mpp/sample/vdec # ./sample_vdec/*** ...
- 第二季4:初始化MPP系统(step12)
以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除. 前言 本文将详细介绍博文第二季3:sample_venc.c的整体分析中提及的"初始化MPP系统". MPP系统的初 ...
- 华为海思MPP媒体处理软件开发学习(基础)
1.系统概述 1.1概述 海思提供的媒体处理软件平台(Media Process Platform,简称 MPP),可支持应用软件快速 开发.该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软 ...
- 第二季2:/package/mpp/sample的总体分析
1.sample的整体架构 (1)sample其实有很多例程. 将sample文件夹(+同层目录的include文件夹)导入SI后,搜索main时发现很多main函数. 每一个例程面向一个典型应用,而 ...
- 海思 hisi SDK中视频层号和通道号的理解
SDK 将通道归属于视频层管理,一个视频层上可显示多个视频,每一个视频显示区域称为一个通道,视频被限制通道内,通道被限制在视频层内.对于一个视频层,其上面的通道都是独立的.同时,不同的视频层上的通道也 ...
- 海思Hi3518EV200+4G+RS232视频监控摄像开发板防雷防静电推荐图
一.适用场合 视频.监控.摄像 二.芯片参数 处理器内核 * ARM926@ 540MHz,32KB I-Cache,32KB D-Cache 视频编码 * H.264 MP/HP Level4.0 ...
- 海思HI3518EV300作为USB视频设备的相关配置
作为USB设备,由于需求上没有要求设备需要播放声音,所以把扬声器去掉了,但是在开发过程中遇到设备插到电脑上,电脑将板子的扬声器作为了默认音频输出设备,而板子又没有扬声器,所以电脑识别扬声器失败,出现下 ...
- 海思芯片MPP模块——视频缓存池机制介绍
1.前言 本文是根据hi3518ev200芯片的SDK包中MPP手册进行讲解,如果想要通过第一手资料了解更多细节,请自行阅读<HiMPP IPC V2.0 媒体处理软件开发参考.pdf>: ...
- 1.海思项目整理 编译烧录+启动参数+sample编译+bayeRGBYUV+MPP(VB+VI+VPSS)
1.1.2.检测开发板 (4)SecureCRT监视打开,开发板开机,自动挂载到/home/aston/rootfs中 (5)自动加入/mnt中,执行./sample_venc即可 (6)在vlc中输 ...
最新文章
- python编程爱心-如何用python画爱心
- oracle 唯一约束作用,想问下在表上建唯一索引和使用索引+唯一约束,从功能和性能来说有什么差别?...
- 《Android开发从零开始》——10. LinearLayout学习
- python实现手机号归属地相关信息查询
- 牛客15666 又见斐波那契(矩阵快速幂)
- 更优雅的 node.js 框架 :nestjs 5.1 发布 ,支持异步动态 modules 。
- 方向导数、梯度与梯度下降
- Win7 便签设置字体方法
- jackson dataformat yaml简介及使用
- ftps linux 服务器,linux下ftps服务器的搭建总结
- Endnote如何添加CAJ格式文件
- 微波射频工程师必读经典参考书
- win11任务栏无响应/卡死
- [二分][dp凸优化] Luogu P4383 林克卡特树lct
- Windows10任务栏图标变白色解决方法
- wxFormBuilder摸索--小白上手--做一个编辑器
- 更新3ds时和用读卡器读取传输文件操作不当导致的tf卡损坏无法读取需要格式化时出现的问题以及不想丢失文件并且修复的详细解决方法
- Pinia全新一代状态管理工具Pinia-Vue3全家桶
- uniapp引入uview文件查找失败:‘uview-ui‘ at main.js:
- TF-IDF 词向量
热门文章
- 牛客网——最简真分数
- 【SCOI2005】【BZOJ1087】互不侵犯King(状压dp)
- 关于C/C++中的“auto”关键字
- Net框架下-ORM框架LLBLGen的简介(转载)
- 字符串匹配的KMP算法(转)
- Socket、Http、TCP/IP、UDP的联系与区别
- 李洋疯狂C语言之合法帧
- 阿里云 Aliplayer高级功能介绍(九):自动播放体验
- 更改阿里云域名解析台里某个域名绑定的IP之后不能解析到新IP
- SQLServer 维护脚本分享(08)临时数据库(tempdb)