DaVinci的Buffer_Handle和BufTab C…
2015-10-31 11:14
246 查看
DaVinci的dvsdk里面,所有的内存用的都是CMEM,而比较上层的一个封装就是BufTab和Buffer_Handle了
每个Tab可以控制好多块内存块。
具体到内存块有两种,一种是创建的时候指定他的大小啊,物理地址啥的。另外一种就是仅仅创建出这个
结构的一个实例,而物理地址啊啥的都留空,等到回头用的时候,用指针搞定。
第一类,对应的配置里面有一个叫reference的变量,配成false的话,创建的时候就直接创建出来内存块
了,reference这点BufTab和Buffer_Handle的创建配置是一样的。
第二类,reference配置成true,这样的话,创建之后,指针没有指向,而需要后面重新指定。指定的时
候,要用Buffer_setUserPtr,同时还要设一下大小,Buffer_setNumBytesUsed,同时用这两个,不然程
序会down掉的。
我试验了,使用CMEM手动分配物理空间,用reference=TRUE的配置,声明一个Buffer_handle的结构,使
用cmem函数直接申请空间,然后再配置Buffer_handle的指针。
CMEM_AllocParams cmem_params;
Int8 *ptr_area_fifo;
cmem_params.type = CMEM_POOL;
cmem_params.flags = CMEM_NONCACHED;
for(loop_num = 0; loop_num < fifo_total; loop_num++)
{
ptr_area_fifo = (Int8 *)CMEM_alloc(bufSize,
&cmem_params);
//hBufTab is created while its
reference=TRUE.
hDstBuf = BufTab_getBuf(hBufTab, loop_num);
Buffer_setNumBytesUsed(hDstBuf, bufSize);
if (Buffer_setUserPtr(hDstBuf, ptr_area_fifo)
< 0) {
printf("error while set prt
into bufTab, id=%d\n", loop_num);
}
}
每个Tab可以控制好多块内存块。
具体到内存块有两种,一种是创建的时候指定他的大小啊,物理地址啥的。另外一种就是仅仅创建出这个
结构的一个实例,而物理地址啊啥的都留空,等到回头用的时候,用指针搞定。
第一类,对应的配置里面有一个叫reference的变量,配成false的话,创建的时候就直接创建出来内存块
了,reference这点BufTab和Buffer_Handle的创建配置是一样的。
第二类,reference配置成true,这样的话,创建之后,指针没有指向,而需要后面重新指定。指定的时
候,要用Buffer_setUserPtr,同时还要设一下大小,Buffer_setNumBytesUsed,同时用这两个,不然程
序会down掉的。
我试验了,使用CMEM手动分配物理空间,用reference=TRUE的配置,声明一个Buffer_handle的结构,使
用cmem函数直接申请空间,然后再配置Buffer_handle的指针。
CMEM_AllocParams cmem_params;
Int8 *ptr_area_fifo;
cmem_params.type = CMEM_POOL;
cmem_params.flags = CMEM_NONCACHED;
for(loop_num = 0; loop_num < fifo_total; loop_num++)
{
ptr_area_fifo = (Int8 *)CMEM_alloc(bufSize,
&cmem_params);
//hBufTab is created while its
reference=TRUE.
hDstBuf = BufTab_getBuf(hBufTab, loop_num);
Buffer_setNumBytesUsed(hDstBuf, bufSize);
if (Buffer_setUserPtr(hDstBuf, ptr_area_fifo)
< 0) {
printf("error while set prt
into bufTab, id=%d\n", loop_num);
}
}
相关文章推荐
- jquery插件jquery.lazyload实现的图片延迟加载
- CSS垂直居中
- JS实现的论坛Ajax打分效果完整实例
- jQuery读取xml文件
- 【剑指offer】-二维数组中的查找
- javascript this 代表的上下文,JavaScript 函数的四种调用形式
- JS实现来回出现文字的状态栏特效代码
- jQuery学习之prop和attr的区别示例介绍
- 关于jquery和子页面向父页面传值
- 超实用的JavaScript代码段 Item4 --发送短信验证码
- 超实用的JavaScript代码段 Item4 --发送短信验证码
- 使用html添加链接
- express和json的调用
- JS实现的3D拖拽翻页效果代码
- 在为知笔记中使用JQuery
- 一个前端博客(7)——事件绑定和移除事件
- Jsp动作组件、内置对象
- form表单回车提交问题,JS监听回车事件
- Javascript,闭包
- bug ReferenceError: Promise is not defined