会看到线程中有
Buffer_Handle hOutBuf;
不看还以为是定义了个buf,实际上是个结构体
定义语句 typedef struct _Buffer_Object *Buffer_Handle;
结构体定义typedef struct _Buffer_Object {
Buffer_Type type;
_Buffer_State origState;
_Buffer_State usedState;
Memory_AllocParams memParams;
Int8 *userPtr;
Int32 physPtr;
Int id;
Bool reference;
BufTab_Handle hBufTab;
} _Buffer_Object;
这就是为什么在将视频数据写入文件的时候用Buffer_getUserPtr(hOutBuf)函数不直接用hOutBuf的原因
这是程序设计巧妙之处:平时申请内存空间或者线程共享数据的时候会只申请个buf,这里大多数的共享的都不是个buf,而是一个结构体,里面包含很多的参数,当真正用到数据的时候再编写数据提取函数来获取数据指针
关于Buffer_getUserPtr(hOutBuf)函数的定义
Int8 *Buffer_getUserPtr(Buffer_Handle hBuf)
{
assert(hBuf);
return hBuf->userPtr;
}
最后
以上就是轻松眼睛最近收集整理的关于DVSDK中的 Buffer_Handle结构的全部内容,更多相关DVSDK中的内容请搜索靠谱客的其他文章。
发表评论 取消回复