K230系统控制API参考
1. 概述
1.1 概述
系统控制根据 k230芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统内存管理,日志管理,绑定管理等模块的初始化、去初始化。
1.2 功能描述
1.2.1 视频缓存池
视频缓存池是一组缓冲区(而不是一个),主要提供给多媒体硬件设备使用,并在多媒体硬件设备之间流转。缓存池分为公共缓存池和私有缓存池,公共缓存池主要是针对VI的,使用前要根据VI的图像参数确定缓存块的大小,然后向 申请一定数量的缓存块组成一个缓存池。总体来说,对于VI输入的原始画面,一帧的大小对应一个缓存块的大小,多个缓存块相当于给VI提供了多帧缓存的机制。同时这些公共缓存块也可以给VO或VENC使用。私有的缓存池往往代表存储在内存中的数据是与多媒体设备本身紧密相关的,例如编码的码流数据与实际的图像像素组成的视频流差别还是很大的,这些码流只有编解码器可用,而VB为这些设备提供专用的 缓冲池。下图展示了虚拟VI和虚拟VO使用VB进行缓存块流转的流程。
1.2.2 系统绑定
系统绑定,即通过数据接收者绑定数据源来建立两者之间的关联关系(只允许数据接收者绑定数据源)。绑定后,数据源生成的数据将自动发送给接收者。K230大的语音和视频处理主要分为几个大的模块如下:
语音:语音输入(Audio Input,简称AI), 语音编码(Audio Encoder,简称AENC),语音识别(Audio recognize,简称AREC),语音解码(Audio Decoder,简称ADEC),语音输出(Audio Output,简称AO)
图像:视频输入(Video Input,简称VI),视频编码(Video Encoder,简称VENC),图像旋转(由GSDMA完成,简称DMA),深度处理单元(Depth Process Unit, 简称DPU),图像解码(Video Decoder,简称VDEC),视频输出(Video Output,简称VO),虚拟视频输入(Virtual Video Input,简称VVI),虚拟视频输出(Virtual Video Output,简称VVO)
K230支持的绑定关系如下
表 11
数据源 | 数据接收者 | 说明 |
---|---|---|
VI(视频输入) | GSDMA | VI的数据可以送到GSDMA进行旋转处理 |
VO | VI的数据可以直接送到VO进行显示 | |
DPU | VI的数据可以直接送到DPU进行处理 | |
VENC | VI的数据可以直接送到VENC进行处理 | |
GSDMA(图像旋转) | VO | GSDMA 处理后的数据,可以直接送给VO显示 |
DPU | GSDMA处理后的数据,可以直接送给DPU进行处理 | |
VENC | VPROC处理后的数据,可以直接送给VENC进行编码 | |
VDEC(视频解码) | GSDMA | VDEC的数据最终会本地播放,播放前可能需要做旋转 |
VO | VDEC的数据最终会本地播放 | |
DPU(深度处理单元) | 无 | DPU是视频数据的终点,不支持绑定关系 |
VENC(视频编码) | 无 | 不支持绑定关系 |
VO(视频显示) | 无 | VO是视频数据的终点,不支持绑定关系 |
AI(音频输入) | AREC | AI处理后的数据,可以直接送给语音识别模块进行识别 |
AENC | AI处理后的数据,可以直接送给语音编码模块进行编码 | |
AO | AI处理后的数据,可以直接进行播放 | |
ADEC(语音解码) | AO | ADEC处理后的数据,可以直接进行播放 |
AREC(语音识别) | AO | AREC处理后的数据,可以直接进行播放,例如本地离线语音翻译 |
AENC(语音编码) | 无 | 不支持绑定关系 |
AO(音频输出) | 无 | AO是音频数据的终点,不支持绑定关系 |
2. API 参考
2.1 多媒体内存管理
该功能模块提供以 下API:
- kd_mpi_sys_mmz_alloc
- kd_mpi_sys_mmz_alloc_cached
- kd_mpi_sys_mmap
- kd_mpi_sys_mmap_cached
- kd_mpi_sys_munmap
- kd_mpi_sys_mmz_flush_cache
- kd_mpi_sys_mmz_free
- kd_mpi_sys_get_virmem_info
- kd_mpi_vb_set_config
- kd_mpi_vb_get_config
- kd_mpi_vb_init
- kd_mpi_vb_exit
- kd_mpi_vb_create_pool
- kd_mpi_vb_destory_pool
- kd_mpi_vb_get_block
- kd_mpi_vb_release_block
- kd_mpi_vb_phyaddr_to_handle
- kd_mpi_vb_handle_to_phyaddr
- kd_mpi_vb_handle_to_pool_id
- kd_mpi_vb_inquire_user_cnt
- kd_mpi_vb_get_supplement_attr
- kd_mpi_vb_set_supplement_config
- kd_mpi_vb_get_supplement_config
- kd_mpi_vb_set_mod_pool_config
- kd_mpi_vb_get_mod_pool_config
- kd_mpi_vb_init_mod_common_pool
- kd_mpi_vb_exit_mod_common_pool
2.1.1 kd_mpi_sys_mmz_alloc
【描述】
在用户空间申请MMZ内存
【语法】
k_s32 kd_mpi_sys_mmz_alloc(k_u64* phy_addr, void** virt_addr, const k_char* mmb, const k_char* zone, k_u32 len);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
phy_addr | 物理地址指针。 | 输出 |
virt_addr | 指向虚拟地址指针的指针。 | 输出 |
mmb | Mmb 名称的字符串指针。 | 输入 |
zone | MMZ zone 名称的字符串指针。 | 输入 |
len | 内存块大小。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无。
【需求】
- 头文件:mpi_sys_api.h
- 库文件:libsys.a
【注意】
MMZ由多个zone组成,每个zone有多个MMB。你可以调用这个MPI,在MMZ的*zone分配一个大小为len的内存块*mmb。在这种情况下,指向物理地址和用户模式虚拟地址的指针被返回。如果在MMZ中存在匿名区,将*zone设置为null。如果*mmb被设置为null,创建的MMB就被命名为null。【举例】
无
【相关主题】
无
2.1.2 kd_mpi_sys_mmz_alloc_cached
【描述】
在用户空间申请带cache的MMZ内存
【语法】
k_s32 kd_mpi_sys_mmz_alloc_cached(k_u64* phy_addr, void** virt_addr, const k_char* mmb, const k_char* zone, k_u32 len);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
phy_addr | 物理地址指针。 | 输出 |
virt_addr | 指向虚拟地址指针的指针。 | 输出 |
mmb | Mmb 名称的字符串指针。 | 输入 |
zone | MMZ zone 名称的字符串指针。 | 输入 |
len | 内存块大小。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_sys_api.h
- 库文件:libsys.a
【注意】
- kd_mpi_sys_mmz_alloc_cached与kd_mpi_sys_mmz_alloc之间的区别:通过调用kd_mpi_sys_mmz_alloc_cached分配的内存支持缓存,如果要分配的内存将被频繁使用,推荐使用kd_mpi_sys_mmz_alloc_cached。这样可以提高CPU的读/写效率和系统性能。
- 当 cpu 访问此接口分配的内存时,会将内存中的数据放在 cache 中。硬件设备只能访问物理内存而不是缓存。在这种情况下kd_mpi_sys_mmz_flush_cache需要被调用来同步数据。
【举例】
无
【相关主题】
无
2.1.3 kd_mpi_sys_mmap
【描述】
memory 存储映射接口。
【语法】
void *kd_mpi_sys_mmap(k_u64 phy_addr, k_u32 size);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
phy_addr | 需映射的内存单元起始地址 | 输入 |
size | 映射的字节数 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 无效地址 |
非0 | 有效地址 |
【芯片差异】
无
【需求】
- 头文件:mpi_sys_api.h
- 库文件:libsys.a
【注意】
- 通过MMZ申请得到的物理地址才可以使用这个API进行映射
- 如果地址区间属于一个VB,那么映射的大小需要小于VB池的大小
【举例】
无
【相关主题】
2.1.4 kd_mpi_sys_mmap_cached
【描述】
memory 存储映射带cache的接口。
【语法】
void *kd_mpi_sys_mmap_cached(k_u64 phy_addr, k_u32 size);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
phy_addr | 需映射的内存单元起始地址 | 输入 |
size | 映射的字节数 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 无效地址 |
非0 | 有效地址 |
【芯片差异】
无
【需求】
- 头文件:mpi_sys_api.h
- 库文件:libsys.a
【注意】
- 通过MMZ申请得到的物理地址才可以使用这个API进行映射
- 如果地址区间属于一个VB,那么映射的大小需要小于VB池的大小
【举例】
无
【相关主题】
无
2.1.5 kd_mpi_sys_munmap
【描述】
memory 存储映射解除接口。
【语法】
void *kd_mpi_sys_mmap(void *virt_addr, k_u32 size);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
virt_addr | mmap返回的虚拟地址 | 输入 |
size | 映射的字节数 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败 |
【芯片差异】
无
【需求】
- 头文件:mpi_sys_api.h
- 库文件:libsys.a
【注意】
无
【举例】
无
【相关主题】
2.1.6 kd_mpi_sys_mmz_flush_cache
【描述】
刷新 cache 里的内容到内存并且使 cache 里的内容无效。
【语法】
k_s32 kd_mpi_sys_mmz_flush_cache(k_u64 phy_addr, void* virt_addr, k_u32 size);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
phy_addr | 待操作数据的起始物理地址。 | 输入 |
virt_addr | 待操作数据的起始虚拟地址指针。不能传 NULL | 输入 |
size | 待操作数据的大小 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_sys_api.h
- 库文件:libsys.a
【注意】
- 如果缓存中的数据是最新的数据,你需要调用这个MPI来同步数据到内存。这可以确保不能直接访问缓存的硬件可以获得正确的数据。.
- 必须先调用kd_mpi_sys_mmz_alloc_cached然后再使用这个MPI
- 若将 phy_addr 设为 0,则表示操作整个 cache 区域。(暂不支持)
- 你需要确保传输的参数是有效的
- 确保在执行刷新操作时不调用kd_mpi_sys_mmz_free来释放被刷新的内存。否则,不可预知的异常可能会 发生。
【举例】
无
【相关主题】
2.1.7 kd_mpi_sys_mmz_free
【描述】
在用户态释放 MMZ 内存。
【语法】
k_s32 kd_mpi_sys_mmz_free(k_u64 phy_addr, void* virt_addr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
phy_addr | 物理地址。 | 输入 |
virt_addr | 虚拟地址指针。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_sys_api.h
- 库文件:libsys.a
【注意】
- 输入的地址必须为有效的物理地址,虚拟地址指针可以置为 NULL。
- 不能释放正在进行 flush 操作的内存,否则会引发不可预知的异常。
【举例】
无
【相关主题】
2.1.8 kd_mpi_sys_get_virmem_info
【描述】
根据虚拟地址获取对应的内存信息,包括物理地址及 cached 属性
【语法】
k_s32 kd_mpi_sys_get_virmem_info(const void* virt_addr, k_sys_virmem_info* mem_info);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
virt_addr | 虚拟地址指针。 | 输入 |
mem_info | 虚拟地址对应的内存信息,含物理地址、cached 属性等信息。 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_sys_api.h k_mmz_comm.h
- 库文件:libsys.a
【注意】
- 输入必须为用户态虚拟地址。
- 不支持跨进程使用。
【举例】
无
【相关主题】
2.1.9 kd_mpi_vb_set_config
【描述】
设置 MPP 视频缓存池属性。
【语法 】
k_s32 kd_mpi_vb_set_config(const k_vb_config *config);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
config | 视频缓存池属性指针。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
-
只能在系统处于未初始化的状态下,才可以设置缓存池属性,否则会返回失败。
-
公共缓存池中每个缓存块的大小应根据当前图像像素格式以及图像是否压缩而有
所不同。具体分配大小请参考 k_vb_config 结构体中的描述。
【举例】
无
【相关主题】
2.1.10 kd_mpi_vb_get_config
【描述】
获取 MPP 视频缓存池属性。
【语法】
k_s32 kd_mpi_vb_get_config(const k_vb_config *config);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
config | 视频缓存池属性指针。 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
必须先调用 kd_mpi_vb_set_config 设置 MPP 视频缓存池属性,再获取属性。
【举例】
无
【相关主题】
2.1.11 kd_mpi_vb_init
【描述】
初始化 MPP 视频缓存池。。
【语法】
k_s32 kd_mpi_vb_init(void);
【参数】
无
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
- 必须先调用 kd_mpi_vb_set_config 设置 MPP 视频缓存池属性,再初始化缓存池,否则会失 败。
- 可反复初始化,不返回失败。
【举例】
无
【相关主题】
2.1.12 kd_mpi_vb_exit
【描述】
去初始化 MPP 视频缓存池。。
【语法】
k_s32 kd_mpi_vb_exit(void);
【参数】
无
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
- 去初始化不会清除先前对缓存池的配置。
- 可反复去初始化,不返回失败。
- 退出 VB 池之前请确保 VB 池里的任何 VB 都没有被占用,否则无法退出。
【举例】
无
【相关主题】
2.1.13 kd_mpi_vb_create_pool
【描述】
创建一个视频缓存池
【语法】
k_s32 kd_mpi_vb_create_pool(k_vb_pool_config *config);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
config | 缓存池配置属性参数指针 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
非 VB_INVALID_POOLID | 有效的缓存池 ID 号 |
VB_INVALID_POOLID | 创建缓存 池失败,可能是参数非法或者保留内存不够。 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
无
【举例】
无
【相关主题】
2.1.14 kd_mpi_vb_destory_pool
【描述】
销毁一个视频缓存池。
【语法】
k_s32 kd_mpi_vb_destory_pool(k_u32 pool_id);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pool_id | 缓存池 ID 号。 取值范围:[0, VB_MAX_POOLS)。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值参见错误码。 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
- 销毁一个不存在的缓存池,会返回K_ERR_VB_UNEXIST
- 只有通过k_mpi_vb_create_pool创建的缓存池才可以销毁
【举例】
无
【相关主题】
2.1.15 kd_mpi_vb_get_block
【描述】
用户态获取一个缓存块
【语法】
k_vb_blk_handle kd_mpi_vb_get_block(k_u32 pool_id, k_u64 blk_size, const k_char *mmz_name);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pool_id | 缓存池 ID 号。 取值范围:[0, VB_MAX_POOLS)。 | 输入 |
blk_size | 缓存块大小。 取值范围:数据类型全范围,以 byte 为单位。 | 输入 |
mmz_name | 缓存池所在 DDR 的名字。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
非 VB_INVALID_HANDLE | 有效的缓存块句柄 |
VB_INVALID_HANDLE | 获取缓存块失败 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
- 用户可以在创建一个缓存池之后,调用本接口从该缓存池中获取一个缓存块;即将第 1 个参数 P设置为创建的缓存池 ID;从指定缓存池获取缓存块时,参数mmz_name 无效 *
- 如果用户需要从任意一个公共缓存池中获取一块指定大小的缓存块,则可以将第 1个参数 Pool 设置为无效 ID 号(VB_INVALID_POOLID),将第 2 个参数blk_size 设置为需要的缓存块大小,并指定要从哪个 DDR 上的公共缓存池获取缓存块。如果指定的 DDR 上并没有公共缓存池,那么将获取不到缓存块。如果mmz_name 等于 NULL,则表示在匿名DDR 上的公共缓存池获取缓存块。
【举例】
无
【相关主题】
2.1.16 kd_mpi_vb_release_block
【描述】
用户态释放一个缓存块
【语法】
k_s32 kd_mpi_vb_release_block(k_vb_blk_handle block);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
block | vb 块句柄 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,其值参见错误码。 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
获取的缓存块使用完后,应该调用此接口释放缓存块。
【举例】
无
【相关主题】
2.1.17 kd_mpi_vb_phyaddr_to_handle
【描述】
用户态通过缓存块的物理地址获取其句柄。
【语法】
k_vb_blk_handle kd_mpi_vb_phyaddr_to_handle(k_u64 phys_addr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
phys_addr | vb 块句柄 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
非 VB_INVALID_HANDLE | 有效的缓存块句柄 |
VB_INVALID_HANDLE | 获取缓存快句柄失败 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
物理地址应该是从 MPP 视频缓存池中获取的有效缓存块的地址。
【举例】
无
【相关主题】
无
2.1.18 kd_mpi_vb_handle_to_phyaddr
【描述】
用户态获取一个缓存块的物理地址
【语法】
k_u64 kd_mpi_vb_handle_to_phyaddr(k_vb_blk_handle block);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
block | vb 块句柄 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 无效返回值,缓存块句柄非法。 |
非 0 | 有效物理地址。 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
指定的缓存块应该是从 MPP 视频缓存池中获取的有效缓存块。
【举例】
无
【相关主题】
无
2.1.19 kd_mpi_vb_handle_to_pool_id
【描述】
用户态获取一个帧缓存块所在缓存池的 ID。
【语法】
k_s32 kd_mpi_vb_handle_to_pool_id(k_vb_blk_handle block);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
block | vb 块句柄 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
非 VB_INVALID_POOLID | 有效的缓存池 ID 号 |
VB_INVALID_POOLID | 获取缓存池ID失败。 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
指定的缓存块应该是从 MPP 视频缓存池中获取的有效缓存块。
【举例】
无
【相关主题】
无
2.1.20 kd_mpi_vb_inquire_user_cnt
【描述】
查询缓存块使用计数信息。
【语法】
k_s32 kd_mpi_vb_inquire_user_cnt(k_vb_blk_handle block);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
block | vb 块句柄 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
K_FAILED | 查询失败 |
其他值 | 缓存块使用计数值。 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
无。
【举例】
无
【相关主题】
无
2.1.21 kd_mpi_vb_get_supplement_attr
【描述】
获取 VB Block 内存的辅助信息。
【语法】
k_s32 kd_mpi_vb_get_supplement_attr(k_vb_blk_handle block, k_video_supplement *supplement);【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
block | vb 块句柄 | 输入 |
supplement | vb block 内存的辅助信息。 如ISP信息、DCF 信息等 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
Supplement保存的DCF和ISP的虚拟地址信息为内核态虚拟地址
【举例】
无
【相关主题】
无
2.1.22 kd_mpi_vb_set_supplement_config
【描述】
设置 VB 内存的附加信息。
有些信息需要附加在 VB 内存的后面。例如 DCF 信息、ISP 的统计信息、ISP 的一些实时参数
等,这些附加的信息可以跟着 VB 内存在 MPP 各个模块传递。用户态获取 VB 内存,也可以获
取到这些信息。
【语法】
k_s32 kd_mpi_vb_set_supplement_config(const k_vb_supplement_config *supplement_config);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
supplement_config | VB 内存附加信息控制结构体。 用于附加信息分配内存。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
- 当前支持 2 种 VB 内存附加信息,分别为:
- DCF 信息,对应结构体k_jpeg_dcf。对应的 MASK 为VB_SUPPLEMENT_JPEG_MASK。
- ISP信息,对应结果提k_isp_frame_info。对应的MASK为VB_SUPPLEMENT_ISPINFO_MASK。
- 需要在 kd_mpi_vb_init 前调用此接口,辅助信息才能生效。
【举例】
无
【相关主题】
kd_mpi_vb_get_supplement_config
2.1.23 kd_mpi_vb_get_supplement_config
【描述】
获取VB 内存的附加信息。
【语法】
k_s32 kd_mpi_vb_set_supplement_config(const k_vb_supplement_config *supplement_config);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
supplement_config | VB 内存附加信息控制结构体。 用于附加信息分配内存。 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_vb_api.h k_vb_comm.h
- 库文件:libvb.a
【注意】
无
【举例】
无
【相关主题】
kd_mpi_vb_set_supplement_config
2.1.24 kd_mpi_vb_set_mod_pool_config
【描述】
设置模块公共视频缓存池属性。
【语法】
k_s32 kd_mpi_vb_set_mod_pool_config(k_vb_uid vb_uid, const k_vb_config *config);
【参数】
参数名称 |
---|