第二季2:视频缓存池的简介
以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。
一、视频缓存池的概念
(1)视频的本质是多帧图片,图片的本质是RGB或rawRGB数据,视频要占用一段连续内存。
(2)视频的裁剪、缩放、修正处理等各种操作,本质上就是对内存中的数据进行运算。
(3)视频缓存池(VB,video buffer)就是一段很大而又被合理划分和管理的内存,用来做视频数据的暂存和运算场地。
(4)“公共视频缓存池”中的“公共”,可以理解为全局变量,也就是各个模块都能访问的一段内存。
(5)视频缓存块在各个模块之间流转,实际上并没有内存复制,而是指针在传递。
(6)视频缓存池的内存由MPP来维护,我们在系统启动时就把整个SDRAM分成了2部分:系统部分(由linux kernel来维护管理)和mpp部分(由mpp系统来维护管理)。见博文第一季6:海思方案中uboot、kernel和rootfs的烧写方法中的描述“硬件上的64M内存有两个用途,一部分给OS用,一部分给MPP使用。这里32M指的是OS使用的。(剩余32M给MPP用?)”
(7)公共缓存池需要几个,每个缓存池中包含几个缓存块,每个缓存块多大,都是可以由用户程序设置好参数,然后调用MPP的相应API来向MPP申请分配的。
(8)典型的公共视频缓存池数据流图如下。(图中有两个公共缓冲池A和B,其中A包括A1…An这些缓存块。)
二、有关的数据结构与API
1、结构体VB_CONF_S
VB_CONF_S结构体是对所有公共视频缓存池进行描述,而非描述某个公共缓存池。
typedef struct hiVB_CONF_S
{HI_U32 u32MaxPoolCnt; /* max count of pools, (0,VB_MAX_POOLS] */ 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;
(1)u32MaxPoolCnt,表示缓存池的最大数目(与公共缓冲池的最大数目有什么区别?),需要根据实际情况来设置,最大不能超过VB_MAX_POOLS(这个宏的值为256)。
(2)u32BlkCnt,表示公共缓存池(上图中的A或B……)中有多少个缓存块,而u32BlkSize表示每个缓存块的大小。
(3)acMmzName[ ],表示公共缓存池(上图中的A或B……)的名字
(4)VB_MAX_COMM_POOLS,这个宏的值是16,表示最多有16个公共缓存池。
(5)根据业务的不同,公共缓存池的数量、缓存块的大小和数量不同。
2、HI_MPI_VB_SetConf
这是一个 API函数,在某个ko文件里。主要用来设置格式。(点单,返回值表示是否点单成功。)
3、HI_MPI_VB_Init
这是一个 API函数,在某个ko文件里。主要用来进行分配。(做菜,返回值表示是否做菜成功。)
第二季2:视频缓存池的简介相关推荐
- 海思芯片MPP模块——视频缓存池机制介绍
1.前言 本文是根据hi3518ev200芯片的SDK包中MPP手册进行讲解,如果想要通过第一手资料了解更多细节,请自行阅读<HiMPP IPC V2.0 媒体处理软件开发参考.pdf>: ...
- HTML5+WebGL打造的无插件纯Web 3D机房(第二季新增视频)
2019独角兽企业重金招聘Python工程师标准>>> 前情提要 前阵子写了一篇HTML5打造的无插件纯web 3D机房,介绍了如何用html5在网页上创建无插件的精美3d机房场景. ...
- 第二季4:初始化MPP系统(step12)
以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除. 前言 本文将详细介绍博文第二季3:sample_venc.c的整体分析中提及的"初始化MPP系统". MPP系统的初 ...
- 第二季3:海思MPP模块与视频缓冲池
以下内容源于朱有鹏课程,如有侵权,请告知删除. 一.MPP功能模块 1.MPP功能模块(MPP,media process platform,媒体处理平台) (1)MPP手册:\01.software ...
- Hi3518E_V200 SDK编译笔记 第二季
转载自:https://blog.csdn.net/taotongning/article/details/84882431 1.官方sampe (1)海思官方提供的sampe位于Z:\Hi3518E ...
- 《奋斗》第二季 陆涛和米莱结婚啦……
<奋斗>第二季剧情人物命运介绍. 陆涛刚到法国接到了华子向南打来的电话告知陆涛的父亲不幸去世了.陆涛认为是徐志森去世了.结果告知是陆亚迅去世了.陆涛极度伤心,决定回国参加丧礼.夏琳说等他事 ...
- 第二季5:配置视频捕获模块(step3:VI模块)
以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除. 前言 本文将详细介绍博文第二季3:sample_venc.c的整体分析提及的"配置视频捕获模块". 分析方法上,我们 ...
- 从全职高手开始的系统_动画全职高手第二季热血回归,腾讯视频的国漫IP全链路开发之道...
这个国庆档,国产动画在内容市场上的存在感比想象中更加有分量.电影市场上,动画IP电影<姜子牙>完成票房领跑,掀起观影热潮:动画番剧市场上,头部IP动画<全职高手>第二季时隔三年 ...
- Python可以这样学(第二季:tkinter案例精选)-董付国-专题视频课程
Python可以这样学(第二季:tkinter案例精选)-3592人已学习 课程介绍 董付国老师系列教材<Python程序设计基础>(ISBN:9787302410584) ...
最新文章
- ASP.NET MVC 登录验证
- 当Java 8 Streams API不够用时
- すぬけ君の地下鉄旅行 / Snuke's Subway Trip(AtCoder-2069)
- BZOJ 1303: [CQOI2009]中位数图【前缀和】
- A股开盘:深证区块链50指数涨0.02%,仁东控股跌停
- windows server 2003 IIS 调试 ASP时路径问题
- 数字信号处理课程设计---带通滤波器的设计及其matlab实,数字信号处理课程设计---带通滤波器的设计及其MATLAB实现...
- GBK/GBK2312字库寻址及使用原理
- 织梦dedecms全自动采集的方法
- linux微软公式编辑器,linux下的公式编辑器
- HTML 标签参考手册 - 功能排序
- 经度纬度地图搜索器_百度地图搜索经度纬度_地球经度纬度示意图
- 记一次Exception in thread main java.lang.NullPointerException异常
- CF100015B - Ball Painting
- 第一次学游泳技巧_第一次学游泳作文8篇
- 阿里云安全组已经开放端口但是服务器端口还是不能访问
- 建设智慧城市和智慧园区的必要性和趋势是什么?
- Android canvas
- Intel Composer XE
- 如何提高selenium脚本的执行速度
热门文章
- 【推搜】embedding评估 | faiss的top-k向量检索
- 外呼系统是怎么帮助销售提升电销效率的?
- 明晚(29日)20点,直播预告:鉴书会《你的灯亮着么》,暨“中老年产品人关怀计划” 7月收官场...
- 钢铁从福建货源网“航母”鞍山开始起飞
- Kafka Producer重试参数retries设置取舍
- Element UI 中文英文混合字符长度校验
- 【深度】从GE工业互联网到中国工业互联网
- KeyboardEvent.metaKey 苹果电脑command键按下、win键按下
- 爬虫爬取信息(python))
- STM32CubeMX生成工程顺序