VB结构体如下所示:
如图所示,总共有两个公共缓存池,每个缓存池有多个缓存块.vi采集到数据后存放在缓存块Bm中,然后交给VPSS处理,最后根据情况还会使用多个缓存块Bi,Bj,Bk最后释放回到缓存池中.
其结构体如下可以官方文档 HiMPP IPC V2.0 媒体处理软件开发参考.pdf中有详细说明
typedef struct hiVB_CONF_S
{
HI_U32 `; /* 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;
u32MaxPoolCnt:为整个系统可容纳的缓存池个数
astCommPool:为公共缓存池.
然后venc中代码相关的是
stVbConf.u32MaxPoolCnt = 128;//这个就是一个经验值.
HI_MPI_VB_SetConf(pstVbConf);海思提供的API,将分配的内存注册进内核.