关于vb的一些疑问

Viewed 113

image.png

  1. max_pool_cnt指的是所有内存池的数量是么?
  2. VB_MAX_COMM_POOLS指的是公共内存池的数量是么? 如果是的话 那剩余可自行申请的内存池数量是否就是max_pool_cnt - VB_MAX_COMM_POOLS?
  3. 自行申请内存池是不是先调用 kd_mpi_vb_create_pool 然后再将 kd_mpi_vb_create_pool 返回的内存池编号作为参数去调用 kd_mpi_vb_get_block 就可以使用了啊?
  4. blk_cnt 和 blk_size 是不是只要内存足够就可以任意设定大小?
  5. 系统内置的那些模块 比如ai ao vi vo venc...等等等等 他们是自动去这些公共内存池中 自动选择适合他们大小的内存块使用? 而不需要手动为他们指定他们使用的内存池? 他们是不是永远都只会在这些公共内存池中选择可用的内存块? 而不会在我调用 kd_mpi_vb_create_pool 创建的内存池中去选择可用的内存块?

sdk是rtos_only

2 Answers
  1. 是的
  2. 不是,剩余可自行申请的内存池数量是max_pool_cnt减去config中配置了blk和blk_size的common vb的数量
  3. 是的
  4. 是的
  5. 有些模块支持传入自己申请的vb,比如编解码模块,可以查看他们的API手册

要如何为venc vicap分配合适数量的vb呢? 有什么取值范围么? 我在楼下附上了一个初始化vb和venc vicap的图 报错了