系统控制¶
概述¶
系统控制根据芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成MPP(Media Process Platform媒体处理平台)系统各个业务模块的初始化、去初始化以及管理MPP系统各个业务模块的工作状态、提供当前MPP系统的版本信息、提供大块物理内存管理等功能。
应用程序启动MPP业务前,必须完成MPP系统初始化工作。同理,应用程序退出MPP业务后,也要完成MPP系统去初始化工作,释放资源。
须知:
无特殊说明,SS625V100/SS626V100的描述与SS528V100一致,SS524V100的描述与SS522V100一致**。**
SS528V100、SS625V100和SS524V100不支持低延时、拼接和MCF
重要概念¶
低延时¶
低延时指图像写出指定的行数到DDR后,前端模块上报中断,把图像发给后端模块处理,可以减少通路延时,且前后端模块采用特定机制保证图像是先写后读,不会出现读图像错误。
表 1 SS928V100 支持低延时的模块列表
支持低延时的模块 |
备注 |
|---|---|
VI |
支持输出低延时 |
MCF |
支持输入、输出低延时 |
VPSS |
支持输入、输出低延时 |
VO |
支持输入低延时 |
VDEC |
支持输入、输出低延时 |
VENC |
支持输入、输出低延时 |
表 2 SS626V100 支持低延时的模块列表
支持低延时的模块 |
备注 |
|---|---|
VPSS |
支持输入、输出低延时 |
VO |
支持输入低延时 |
VDEC |
支持输入、输出低延时 |
功能描述¶
视频缓存池¶
视频缓存池主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。
一组大小相同、物理地址连续的缓存块组成一个视频缓存池。必须在系统初始化之前配置公共视频缓存池。根据业务的不同,公共缓存池的数量、缓存块的大小和数量不同。
所有的视频输入通道都可以从公共视频缓存池中获取视频缓存块用于保存采集的图像,如图1中所示VI从公共视频缓存池B中获取视频缓存块Bm,缓存块Bm经 VI发送给VPSS,输入缓存块Bm经过VPSS处理之后被释放回公共视频缓存池。假设VPSS通道的工作模式是USER,则VPSS通道0从公共视频缓存池B中获取缓存块Bi作为输出图像缓存buffer发送给VENC,VPSS通道1从公共视频缓存池B中获取缓存块Bk作为输出图像缓存buffer发送给VO,Bi经VENC编码完之后释放回公共视频缓存池,Bk经VO显示完之后释放回公共视频缓存池。
图 1 典型的公共视频缓存池数据流图

不同类型的视频缓存池大小计算请参考代码ot_buffer.h
须知: SS528V100/SS524V100当图像宽度小于等于256且是紧凑段压缩时,通过ot_common_get_pic_buf_size接口获取到的内存大小与非紧凑段压缩大小相等。 SS928V100分配MCF场景所需buffer时,如果mono路不是亮度单分量图像,则需使用ot_vpss_get_mcf_color_buf_size计算buffer大小。
表 1 ot_buffer.h中视频缓存池大小计算接口简介
视频缓存池大小计算接口 |
接口简介 |
|---|---|
ot_common_get_pic_buf_cfg |
一般linear格式的YUV或者raw数据缓存池配置,VI/VPSS模块紧凑段压缩格式需使用单独计算接口 |
ot_common_get_pic_buf_size |
一般linear格式的YUV或者raw数据缓存池大小,VI/VPSS模块紧凑段压缩格式需使用单独计算接口 |
ot_hnr_get_pic_buf_size |
HNR使用的帧数据缓存池,仅SS928V100支持 |
ot_common_vi_get_raw_buf_cfg_with_compress_ratio |
raw数据根据压缩率获取缓存池配置,仅SS928V100支持 |
ot_vdec_get_pic_buf_size |
VDEC输出的YUV帧存缓存池 |
ot_vdec_get_tmv_buf_size |
VDEC输出的Tmv数据缓存池 |
ot_venc_get_pic_info_buf_size |
VENC Picture信息VB大小,支持帧节省模式计算 |
ot_venc_get_pic_buf_size |
VENC Picture VB大小,支持帧节省模式计算 |
ot_venc_get_ref_buf_size |
VENC参考帧大小,SS928V100/SS626V100不支持 |
ot_venc_get_ref_pic_info_buf_size |
VENC参考帧信息(pme、pmeinfo、tmv)大小 SS928V100/SS626V100不支持 |
ot_venc_get_qpmap_size |
qpmap映射表大小 |
ot_venc_get_qpmap_stride |
qpmap映射表stride |
ot_venc_get_roimap_size |
roi map映射表大小 |
ot_venc_get_roimap_stride |
roi map映射表stride |
ot_venc_get_skip_weight_size |
skip weight映射表大小 |
ot_venc_get_skip_weight_stride |
skip weight映射表stride |
ot_avs_get_buf_size |
AVS输入的YUV数据缓存池,仅SS928V100支持 |
ot_vpss_get_mcf_color_buf_size |
MCF场景彩色通路VPSS通道VB大小,仅SS928V100支持 |
ot_vpss_get_mcf_mono_buf_size |
MCF场景黑白通路VPSS通道VB大小,仅SS928V100支持 |
ot_common_get_vi_compact_seg_buf_size |
VI输出的YUV数据缓存池大小,仅SS928V100支持 |
ot_common_get_vpss_compact_seg_buf_size |
VPSS输出的YUV数据缓存池大小,仅SS928V100支持 |
系统绑定¶
MPP提供系统绑定接口(ss_mpi_sys_bind),即通过数据接收者绑定数据源来建立两者之间的关联关系(只允许数据接收者绑定数据源)。绑定后,数据源生成的数据将自动发送给接收者。目前MPP支持的绑定关系如表1所示。
表 1 MPP支持的绑定关系
数据源 |
数据接收者 |
|---|---|
VI |
VO |
VENC |
|
VPSS |
|
PCIV |
|
VI(虚拟PIPE) |
|
VPSS |
VO |
VENC |
|
PCIV |
|
VPSS |
|
AVS |
|
VI(虚拟PIPE) |
|
VDEC |
VPSS |
VO |
|
VENC |
|
PCIV |
|
VI(虚拟PIPE) |
|
VO(WBC) |
VO |
VENC |
|
VPSS |
|
PCIV |
|
VI(虚拟PIPE) |
|
AVS |
VPSS |
VENC |
|
VO |
|
PCIV |
|
VI(虚拟PIPE) |
|
AI |
AENC |
AO |
|
ADEC |
AO |
PCIV |
VPSS |
VENC |
|
VO |
|
MCF |
VO |
VENC |
|
VPSS |
|
VI(虚拟PIPE) |
强制销毁VB功能¶
VB在占用状态时无法被销毁,插入xx_base.ko时加上模块参数g_vb_force_exit=1,即使VB正在被使用也可强制销毁,因此请谨慎使用此功能,需保证业务正常运行时不可主动销毁VB,必须待所有业务完全退出之后才能主动销毁VB。
须知: 强制销毁VB功能是为了应用程序异常崩溃之后方便业务重启而设计的:用户态应用程序异常崩溃之后,应用程序已经无法按正常的业务退出流程操作,此时重启业务前须先进行ss_mpi_sys_exit和ss_mpi_vb_exit把上次应用程序异常崩溃之后无法销毁的VB资源先销毁,然后再进行正常的业务重启流程。
VI和VPSS工作模式¶
VI和VPSS各自的工作模式分为在线,离线,工作模式说明如表1所示。
表 1 VI和VPSS的工作模式说明
模式 |
VI_CAP与VI_PROC |
VI_PROC与VPSS |
|---|---|---|
在线模式 |
VI_CAP与VI_PROC之间在线数据流传输,此模式下VI_CAP不会写出RAW数据到DDR,而是直接把数据流送给VI_PROC。 |
VI_PROC与VPSS之间的在线数据流传输,在此模式下VI_PROC不会写出YUV数据到DDR,而是直接把数据流送给VPSS。 |
离线模式 |
VI_CAP写出RAW数据到DDR,然后VI_PROC从DDR读取RAW数据进行后处理。 |
VI_PROC写出YUV数据到DDR,然后VPSS从DDR读取YUV数据进行后处理。 |
PIPE可以设置成多种工作模式,情况如下。
第0个PIPE可以有4种模式:
VI在线VPSS离线
VI在线VPSS在线
VI离线VPSS离线
VI离线VPSS在线
其他PIPE可以有2种模式:
当第0个PIPE为VI离线VPSS在线时,绑定的其他PIPE只能设置VI离线VPSS在线。
当第0个PIPE设置成其它模式时,绑定的其他PIPE只能为VI离线VPSS离线。
PIPE在不同的工作模式下可以进行切换,此时VI需要重建,情况如下:
VI在线模式不能切换到VI离线模式。
VI离线模式不能切换到VI在线模式。
说明:
本文档中出现的“VI在线/离线”是指VI_CAP与VI_PROC之间的在线/离线模式。
本文档中出现的“VPSS在线/离线”是指VI_PROC与VPSS之间的在线/离线模式。
VI的PIPE工作模式请见表2所示。
表 2 SS928V100 VI PIPE工作模式
PIPE ID |
0 |
1 |
2 |
3 |
|---|---|---|---|---|
模式分布1 |
在线 |
离线 |
离线 |
离线 |
模式分布2 |
离线 |
离线 |
离线 |
离线 |
说明: 对于SS928V100系列,当PIPE0为在线时,其他PIPE的离线模式只能用来获取PIPE FRAME,其他功能都不能使用,即不能使用VI_PROC的功能。
VI视频模式¶
VI的视频模式分为两种:Normal模式和Advanced模式,默认为Normal模式。在单线性通路上,使用Advanced模式效果好,其它场景下使用Normal模式即可。该模式对VI所有的pipe生效。详见ss_mpi_sys_set_vi_video_mode接口描述。
logmpp日志¶
系统运行日志信息记录在logmpp文件中,运行异常时可通过查看日志文件进行问题定位,查看命令为cat /dev/logmpp。
说明: 对于SS626V100,解码通道部署在mdc上时,mdc日志记录在logmpp_mdc文件中,查看命令为cat /dev/logmpp_mdc。该功能需要使用低32bit的mmz地址,关闭该功能可在插入xx_base.ko时加上模块参数g_mdc_log_enable=0。
API参考¶
系统控制实现MPP(Media Process Platform)系统初始化、系统绑定解绑、获取MPP版本号、视频缓存池初始化、创建视频缓存池等功能。
该功能模块提供以下MPI:
ss_mpi_sys_set_cfg:配置系统控制参数。
ss_mpi_sys_get_cfg:获取系统控制参数。
ss_mpi_sys_init:初始化MPP系统。
ss_mpi_sys_exit:去初始化MPP系统。
ss_mpi_sys_bind:数据源到数据接收者绑定。
ss_mpi_sys_unbind:数据源到数据接收者解绑定。
ss_mpi_sys_get_bind_by_dst:根据目标获取绑定的源。
ss_mpi_sys_get_bind_by_src:根据源获取绑定的目标。
ss_mpi_sys_get_version:获取MPP的版本号。
ss_mpi_sys_get_chip_id:获取当前芯片的ID。
ss_mpi_sys_get_unique_id:获取当前芯片的unique ID。
ss_mpi_sys_get_custom_code:获取当前芯片的custom code。
ss_mpi_sys_get_cur_pts:获取当前时间戳。
ss_mpi_sys_init_pts_base:初始化MPP时间戳。
ss_mpi_sys_sync_pts:同步MPP时间戳。
ss_mpi_sys_mmap:memory存储映射接口。
ss_mpi_sys_mmap_cached:存储带Cache映射接口。
ss_mpi_sys_munmap:存储反映射接口。
ss_mpi_sys_flush_cache:刷新cache里的内容到内存并且使cache里的内容无效。
ss_mpi_sys_mmz_alloc:在用户态分配MMZ内存。
ss_mpi_sys_mmz_alloc_cached:在用户态分配MMZ内存,该内存支持cache缓存。
ss_mpi_sys_mmz_free:在用户态释放MMZ内存。
ss_mpi_sys_set_mem_cfg:设置模块设备通道使用内存的DDR名。
ss_mpi_sys_get_mem_cfg:获取模块设备通道使用的MMZ区域名称。
ss_mpi_sys_close_fd:关闭所有SYS打开的日志、系统Fd。
ss_mpi_sys_get_virt_mem_info:根据虚拟地址获取对应的内存信息。
ss_mpi_sys_set_scale_coef_level:设置VPSS模块和VGS模块的缩放系数等级。
ss_mpi_sys_get_scale_coef_level:获取VPSS和VGS缩放系数等级。
ss_mpi_sys_set_time_zone:设置时区信息。
ss_mpi_sys_get_time_zone:获取时区信息。
ss_mpi_sys_set_gps_info:设置GPS信息。
ss_mpi_sys_get_gps_info:获取GPS信息。
ss_mpi_sys_set_schedule_mode:设置系统调度模式。
ss_mpi_sys_get_schedule_mode:获取系统调度模式。
ss_mpi_sys_set_vi_vpss_mode:设置VI,VPSS的工作模式。
ss_mpi_sys_get_vi_vpss_mode:获取VI,VPSS的工作模式。
ss_mpi_sys_set_vi_video_mode:设置VI视频模式。
ss_mpi_sys_get_vi_video_mode:获取VI视频模式。
ss_mpi_sys_set_raw_frame_compress_param:设置RAW帧压缩参数。
ss_mpi_sys_get_raw_frame_compress_param:获取RAW帧压缩参数。
ss_mpi_sys_set_tuning_connect:设置Tuning工具连接。
ss_mpi_sys_get_tuning_connect:获取Tuning工具连接。
ss_mpi_sys_mem_share:将handle对应的mmz buffer共享给特定的进程ID。
ss_mpi_sys_mem_unshare:解除handle对应的mmz buffer对进程ID的共享。
ss_mpi_sys_mem_share_all:将handle对应的mmz buffer以不限进程ID的方式共享给所有进程。
ss_mpi_sys_mem_unshare_all:解除handle对应的mmz buffer对所有进程的共享。
ss_mpi_sys_get_mem_info_by_handle:通过handle获取mmz buffer的内存描述信息。
ss_mpi_sys_get_mem_info_by_phys:通过物理地址获取mmz buffer的内存描述信息。
ss_mpi_sys_get_mem_info_by_virt:通过用户态虚拟地址获取mmz buffer的内存描述信息。
ss_mpi_vb_set_cfg:设置MPP视频缓存池属性。
ss_mpi_vb_get_cfg:获取MPP视频缓存池属性。
ss_mpi_vb_init:初始化MPP视频缓存池。
ss_mpi_vb_exit:去初始化MPP视频缓存池。
ss_mpi_vb_create_pool:创建一个用户视频缓存池。
ss_mpi_vb_create_ext_pool:创建一个虚拟视频缓存池。
ss_mpi_vb_destroy_pool:销毁一个视频缓存池。
ss_mpi_vb_get_blk:获取一个缓存块。
ss_mpi_vb_release_blk:释放一个已经获取的缓存块。
ss_mpi_vb_insert_buf_to_ext_pool:添加一个缓存块到虚拟视频缓存池。
ss_mpi_vb_delete_buf_from_ext_pool:从虚拟视频缓存池中删除一个缓存块。
ss_mpi_vb_phys_addr_to_handle:用户态通过缓存块的物理地址获取其句柄。
ss_mpi_vb_handle_to_phys_addr:获取一个缓存块的物理地址。
ss_mpi_vb_handle_to_pool_id:获取一个缓存块所在缓存池的ID。
ss_mpi_vb_get_pool_info:获取一个视频缓存池的信息。
ss_mpi_vb_init_mod_common_pool:初始化模块公共视频缓冲池。
ss_mpi_vb_exit_mod_common_pool:注销模块公共视频缓冲池。
ss_mpi_vb_set_mod_pool_cfg:设置模块公共视频缓冲池属性。
ss_mpi_vb_get_mod_pool_cfg:获取模块公共视频缓冲池属性。
ss_mpi_vb_inquire_user_cnt:查询缓存块使用计数信息。
ss_mpi_vb_get_supplement_addr:获取VB block内存的辅助信息。
ss_mpi_vb_set_supplement_cfg:设置VB内存的附加信息。
ss_mpi_vb_get_supplement_cfg:获取VB内存的附加信息。
ss_mpi_vb_get_common_pool_id:获取公共VB池的pool ID。
ss_mpi_vb_get_mod_common_pool_id:获取模块公共VB池的pool ID。
ss_mpi_vb_pool_share:将pool ID对应的VB池共享给特定的进程ID。
ss_mpi_vb_pool_unshare:解除pool ID对应的VB池对进程ID的共享。
ss_mpi_vb_pool_share_all:将pool ID对应的VB池以不限进程ID的方式共享给所有进程。
ss_mpi_vb_pool_unshare_all:解除pool ID对应的VB池对所有进程的共享。
ss_mpi_log_set_level_cfg:设置日志等级。
ss_mpi_log_get_level_cfg:获取日志等级。
ss_mpi_log_set_wait_flag:设置读取日志时等待标志。
ss_mpi_log_read:读取日志。
ss_mpi_log_close:关闭日志文件。
ss_mpi_sys_set_cfg¶
【描述】
配置系统控制参数。
【语法】
td_s32 ss_mpi_sys_set_cfg(const ot_mpp_sys_cfg *sys_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
sys_cfg |
系统控制参数指针。 静态属性(指只能在系统未初始化、未启用设备或通道时,才能设置的属性)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
只有在MPP整个系统处于未初始化状态,才可调用此函数配置MPP系统,否则会配置失败。
此接口功能暂时无效。
【举例】
无。
【相关主题】
ss_mpi_sys_get_cfg¶
【描述】
获取系统控制参数。
【语法】
td_s32 ss_mpi_sys_get_cfg(ot_mpp_sys_cfg *sys_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
sys_cfg |
系统控制参数指针。 静态属性。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
必须先调用ss_mpi_sys_set_cfg成功后才能获取配置。
【举例】
无。
【相关主题】
ss_mpi_sys_init¶
【描述】
初始化MPP系统。包括音频输入输出、视频输入输出、视频编解码、视频叠加区域、视频处理、图形处理等模块都会被初始化。
【语法】
td_s32 ss_mpi_sys_init(td_void);
【参数】
无。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
由于MPP系统的正常运行依赖于缓存池,因此需要先调用ss_mpi_vb_init初始化缓存池,再初始化MPP系统,否则会导致业务运行异常。
如果多次初始化,仍会返回成功,但实际上系统不会对MPP的运行状态有任何影响。
只要有一个进程进行初始化即可,不需要所有的进程都做系统初始化的操作。
由于音频模块依赖用户态属性,故音频不支持多进程操作。用户需要保证音频的相关操作和ss_mpi_vb_init在同一个进程中。
【举例】
无。
【相关主题】
ss_mpi_sys_exit¶
【描述】
去初始化MPP系统。包括音频输入输出、视频输入输出、视频编解码、视频叠加区域、视频处理、图形处理等模块都会被销毁或者禁用。
【语法】
td_s32 ss_mpi_sys_exit(td_void);
【参数】
无。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
去初始化时,如果有阻塞在MPI上的用户进程,调用ss_mpi_sys_exit会唤醒该阻塞进程,如果没有成功唤醒,则去初始化会失败。如果所有阻塞在MPI上的调用都返回,则可以成功去初始化。
可以反复去初始化,不返回失败。
由于系统去初始化不会销毁音频的编解码通道,因此这些通道的销毁需要用户主动进行。如果创建这些通道的进程退出,则通道随之被销毁。
【举例】
无。
【相关主题】
ss_mpi_sys_bind¶
【描述】
数据源到数据接收者绑定接口。
【语法】
td_s32 ss_mpi_sys_bind(const ot_mpp_chn *src_chn, const ot_mpp_chn *dst_chn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
src_chn |
源通道指针。 |
输入 |
dst_chn |
目的通道指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
系统目前支持的绑定关系,请参见表1。
同一个数据接收者只能绑定一个数据源。
绑定是指数据源和数据接收者建立关联关系。绑定后,数据源生成的数据将自动发送给接收者。
VDEC作为数据源,是以通道为发送者,向其他模块发送数据,用户将设备号置为0,SDK不检查输入的设备号。
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100 VI作为数据源,是以通道为发送者,向其他模块发送数据,用户将设备号置为0,SDK不检查输入的设备号。
SS928V100 VI作为数据源,是以设备(pipe)、通道(chn)为发送者,向其他模块发送数据;作为数据接收者时,以设备(pipe)、通道(chn)为接收者。
VO作为数据源发送回写(WBC)数据时,是以设备为发送者,向其他模块发送数据,用户将通道号置为0,SDK不检查输入的通道号。
VPSS作为数据接收者时,是以设备(GROUP)为接收者,接收其他模块发来的数据,用户将通道号置为0。
VENC作为数据接收者时,是以通道号为接收者,接收其他模块发过来的数据,用户将设备号置为0,SDK不检查输入的设备号。若VENC工作在OT_VENC_PIC_RECV_MULTI模式下,用户需要配置设备号,此时设备号实际用于指定输入源,可以使用OT_VENC_RECV_SRC0、OT_VENC_RECV_SRC1、OT_VENC_RECV_SRC2、OT_VENC_RECV_SRC3宏进行输入源指定。
AVS作为数据接收者,是以设备(GROUP)、通道(PIPE)为接收者。
MCF作为数据接收者,是以设备(GROUP)、通道(PIPE)为接收者。
其他情况均需指定设备号和通道号。
【举例】
无。
【相关主题】
ss_mpi_sys_unbind¶
【描述】
数据源到数据接收者解绑定接口。
【语法】
td_s32 ss_mpi_sys_unbind(const ot_mpp_chn *src_chn, const ot_mpp_chn *dst_chn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
src_chn |
源通道指针。 |
输入 |
dst_chn |
目的通道指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
dst_chn如果找不到绑定的源通道,则直接返回成功。如果找到了绑定的源通道,但是绑定的源通道和src_chn不匹配,则返回失败。
【举例】
无。
【相关主题】
ss_mpi_sys_get_bind_by_dst¶
【描述】
获取此通道上绑定的源通道的信息。
【语法】
td_s32 ss_mpi_sys_get_bind_by_dst(const ot_mpp_chn *dst_chn, ot_mpp_chn *src_chn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
src_chn |
源通道指针。 |
输出 |
dst_chn |
目的通道指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_sys_get_bind_by_src¶
【描述】
根据源获取绑定的目标。
【语法】
td_s32 ss_mpi_sys_get_bind_by_src(const ot_mpp_chn *src_chn, ot_mpp_bind_dst *bind_dst);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
src_chn |
源通道指针。 |
输入 |
bind_dst |
绑定的目的指针。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_sys_get_version¶
【描述】
获取MPP的版本号。
【语法】
td_s32 ss_mpi_sys_get_version(ot_mpp_version *version);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
version |
版本号描述指针。 动态属性(指在任何时刻都可以设置的属性)。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_chip_id¶
【描述】
获取当前芯片的ID。
【语法】
td_s32 ss_mpi_sys_get_chip_id(td_u32 *chip_id);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
chip_id |
芯片ID指针。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【举例】
td_s32 ret;
td_u32 chip_id;
ret = ss_mpi_sys_get_chip_id(&chip_id);
if (TD_SUCCESS != ret) {
return ret;
}
printf("chip id is %#x\n", chip_id);
【相关主题】
无。
ss_mpi_sys_get_unique_id¶
【描述】
获取当前芯片的unique ID (芯片唯一码)。
【语法】
ss_mpi_sys_get_unique_id(ot_unique_id *unique_id);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
unique_id |
芯片unique ID数据结构体指针。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【相关主题】
无。
ss_mpi_sys_get_custom_code¶
【描述】
获取当前芯片的custom code。
【语法】
td_s32 ss_mpi_sys_get_custom_code(td_u32 *custom_code);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
custom_code |
芯片custom code指针。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【举例】
td_s32 ret;
td_u32 c_code;
ret = ss_mpi_sys_get_custom_code(&c_code);
if (TD_SUCCESS != ret)
{
return ret;
}
printf("custom code is %#x\n", c_code);
【相关主题】
无。
ss_mpi_sys_get_cur_pts¶
【描述】
获取MPP的当前时间戳。
【语法】
td_s32 ss_mpi_sys_get_cur_pts(td_u64 *cur_pts);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
cur_pts |
当前时间戳指针。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_init_pts_base¶
【描述】
初始化MPP的时间戳基准。
【语法】
td_s32 ss_mpi_sys_init_pts_base(td_u64 pts_base);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
pts_base |
时间戳基准。单位:微秒。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
初始化时间戳基准会将当前系统的时间戳强制置成pts_base,与系统原有时间戳没有任何约束。因此,建议在媒体业务没有启动时(例如操作系统刚启动),调用这个接口。如果媒体业务已经启动,建议调用ss_mpi_sys_sync_pts进行时间戳微调。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_sync_pts¶
【描述】
同步MPP的时间戳。
【语法】
td_s32 ss_mpi_sys_sync_pts(td_u64 pts_base);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
pts_base |
时间戳基准。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
对当前系统时间戳(微秒级)进行微调,微调后不会出现时间戳回退现象。在多片之间做同步时,由于单板的时钟源误差可能比较大,建议一秒钟进行一次时间戳微调。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_mmap¶
【描述】
memory存储映射接口。
【语法】
td_void *ss_mpi_sys_mmap(td_phys_addr_t phys_addr, td_u32 size);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
phys_addr |
需映射的内存单元起始地址。 |
输入 |
size |
映射的字节数,不能为0。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
无效地址。 |
非0 |
有效地址 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
open的节点是dev/mmz_userdev,在MMZ中实现映射非device类型(不可cache、可reorder)的DDR地址。
对于输入的地址和size,需在单个(已分配的)mmz buffer的地址范围内。
对应的解映射接口为ss_mpi_sys_munmap。
【举例】
无。
【相关主题】
ss_mpi_sys_mmap_cached¶
【描述】
存储映射接口,映射成cache属性。
【语法】
td_void *ss_mpi_sys_mmap_cached(td_phys_addr_t phys_addr, td_u32 size);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
phys_addr |
需映射的内存单元起始地址。 |
输入 |
size |
映射的字节数。不能为0。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
无效地址。 |
非0 |
有效地址 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
对于输入的地址和size,需在单个(已分配的)mmz buffer的地址范围内。
【举例】
无。
【相关主题】
ss_mpi_sys_munmap¶
【描述】
存储反映射接口。
【语法】
td_s32 ss_mpi_sys_munmap(td_void *virt_addr, td_u32 size);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
virt_addr |
mmap后返回的地址。 |
输入 |
size |
映射区的字节长度。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
等同于系统munmap函数。
【举例】
无。
【相关主题】
ss_mpi_sys_flush_cache¶
【描述】
刷新cache里的内容到内存并且使cache里的内容无效。
【语法】
td_s32 ss_mpi_sys_flush_cache(td_phys_addr_t phys_addr, td_void *virt_addr, td_u32 size);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
phys_addr |
待操作数据的起始物理地址。 需要4字节对齐。 |
输入 |
virt_addr |
待操作数据的起始虚拟地址指针。 必须为用户态地址,且不能为空。 虚拟地址必须为物理地址映射的地址。 |
输入 |
size |
待操作数据的大小。 不能为0。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
当cache里的数据为最新数据时,为了保证不能直接访问cache的硬件(如ive)在访问内存时能够得到正确的数据,此时需要先调用此接口将cache里的内容更新到内存,这样,当硬件访问内存时,保证了数据的一致性和正确性。
此接口应与ss_mpi_sys_mmap_cached或者ss_mpi_sys_mmz_alloc_cached接口配套使用。
用户需要确保传入参数的合法性。
【相关主题】
ss_mpi_sys_mmz_alloc¶
【描述】
在用户态分配MMZ内存。
【语法】
td_s32 ss_mpi_sys_mmz_alloc(td_phys_addr_t *phys_addr, td_void **virt_addr, const td_char *mmb, const td_char *zone, td_u32 len);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
phys_addr |
物理地址指针。 |
输出 |
virt_addr |
指向虚拟地址指针的指针。 |
输出 |
mmb |
Mmb名称的字符串指针。 |
输入 |
zone |
MMZ zone名称的字符串指针。 |
输入 |
len |
内存块大小。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
MMZ分为许多区域(Zone),每个区域下有多个Mmb,调用此接口在MMZ的名为*zone的区域中分配一个名为*mmb的内存块,大小为len,并返回物理地址和用户态虚拟地址指针。如果MMZ中有名为anonymous的区域,*zone可设为NULL。如果*mmb设为NULL,创建的Mmb分块名为“<null>”。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_mmz_alloc_cached¶
【描述】
在用户态分配MMZ内存,该内存支持cache缓存。
【语法】
td_s32 ss_mpi_sys_mmz_alloc_cached(td_phys_addr_t *phys_addr, td_void **virt_addr, const td_char *mmb, const td_char *zone, td_u32 len);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
phys_addr |
物理地址指针。 |
输出 |
virt_addr |
指向虚拟地址指针的指针。 |
输出 |
mmb |
Mmb名称的字符串指针。 |
输入 |
zone |
MMZ zone名称的字符串指针。 |
输入 |
len |
内存块大小。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
本接口与ss_mpi_sys_mmz_alloc接口的区别:通过本接口分配的内存支持cache缓存,对于频繁使用的内存,最好使用本接口分配内存,这样可以提高cpu读写的效率,提升系统性能,如用户在使用ive算子时,就存在大量数据频繁读写,此时使用此接口来分配内存,就能很好的提高cpu的效率。
当cpu访问此接口分配的内存时,会将内存中的数据放在cache中,而硬件设备(如ive)只能访问物理内存,不能访问cache的内容,对于这种cpu和硬件会共同操作的内存,需调用ss_mpi_sys_flush_cache做好数据同步。
【举例】
无。
【相关主题】
ss_mpi_sys_mmz_free¶
【描述】
在用户态释放MMZ内存。
【语法】
td_s32 ss_mpi_sys_mmz_free(td_phys_addr_t phys_addr, td_void *virt_addr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
phys_addr |
物理地址。 |
输入 |
virt_addr |
虚拟地址指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
输入的地址必须为有效的物理地址,虚拟地址指针可以置为NULL。
不能释放正在进行flush操作的内存,否则会引发不可预知的异常。
【举例】
无。
【相关主题】
ss_mpi_sys_set_mem_cfg¶
【描述】
配置内存参数,设置模块设备通道使用的MMZ区域名称。
【语法】
td_s32 ss_mpi_sys_set_mem_cfg(const ot_mpp_chn *mpp_chn, const td_char *mmz_name);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
mpp_chn |
模块设备通道信息。 |
输入 |
mmz_name |
MMZ区域名称。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
如无特殊说明,配置内存参数按照模块对应的通道设置。
输入的MMZ区域名称不存在,接口也会返回成功,但在业务运行过程中分配内存会失败。所以为了保证内存分配正确,输入的MMZ区域名称必须从MMZ区域划分时的名称中选择。
对VO模块做均分内存策略时,用户须保证同一设备号下的通道内存在同一个DDR上。如果不一致,SDK默认从该设备的通道0设置的DDR分配内存。
对VFMW模块设置使用的MMZ内存,各个通道共用的MMZ内存通过vfmw设备0通道0来设置,包括vfmw(%d)_vdh_msg、vfmw_vdh_ext、vfmw_scd_msg、vfmw_mdma_msg。各个通道独立使用的MMZ内存通过vdec对应的通道设置。
VENC模块的vedu_hal内存通过venc设备0通道0设置,其他mmz内存通过venc对应的通道设置。
IVE模块不支持超过4G空间访问,请确保IVE输入输出内存在IVE对应的MMZ zone区域,不然会发生地址校验不通过的情况。若有指定IVE访问MMZ区域,那么只能访问从指定区域MMZ开始地址+(4G - 1)空间;若没有,那么只能访问的MMZ地址空间为MMZ匿名开始地址+(4G - 1)。
VDEC_ADAPT模块vdec_adp_proc和vdec_adp_vb内存是通过通道0设置,其他mmz内存根据对应的通道设置。
DCC模块dcc_msg_buf内存是通过设备0通道0设置。
【举例】
无。
【相关主题】
ss_mpi_sys_get_mem_cfg¶
【描述】
获取模块设备通道使用的MMZ区域名称。
【语法】
td_s32 ss_mpi_sys_get_mem_cfg(const ot_mpp_chn *mpp_chn, td_char *mmz_name);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
mpp_chn |
模块设备通道信息。 |
输入 |
mmz_name |
MMZ区域的名称。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_sys_close_fd¶
【描述】
关闭所有SYS打开的日志、系统Fd。
【语法】
td_s32 ss_mpi_sys_close_fd(td_void);
【参数】
无。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
建议该接口在所有模块都禁用后使用。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_virt_mem_info¶
【描述】
根据虚拟地址获取对应的内存信息,包括物理地址及cached属性。
【语法】
td_s32 ss_mpi_sys_get_virt_mem_info(const void *virt_addr, ot_sys_virt_mem_info *mem_info);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
virt_addr |
用户态虚拟地址。 |
输入 |
mem_info |
虚拟地址对应的内存信息,含物理地址、cached属性等信息。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
输入必须为用户态虚拟地址。
不支持跨进程使用。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_scale_coef_level¶
【描述】
设置VPSS模块和VGS模块的缩放系数等级。
【语法】
td_s32 ss_mpi_sys_set_scale_coef_level(const ot_scale_range *scale_range, const ot_scale_coef_level *scale_coef_level);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
scale_range |
缩放系数所对应的缩放范围。 |
输入 |
scale_coef_level |
缩放系数等级 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
各个缩放比例下的缩放系数等级默认值请参考ot_scale_coef_level结构体的注意事项。
在保持缩放比例范围不变的情况下,增大缩放系数的等级时,会使该缩放比例范围的图像看起来更锐利,反之则更模糊。
在保持缩放比例范围不变的情况下,增大缩放系数的等级时,会使得画面锯齿程度变严重,用户可根据需求进行选择。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_scale_coef_level¶
【描述】
获取VPSS和VGS缩放系数等级。
【语法】
td_s32 ss_mpi_sys_get_scale_coef_level(const ot_scale_range *scale_range, ot_scale_coef_level *scale_coef_level);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
scale_range |
缩放系数所对应的缩放范围。 |
输入 |
scale_coef_level |
缩放系数等级 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_time_zone¶
【描述】
设置时区信息。
【语法】
td_s32 ss_mpi_sys_set_time_zone(td_s32 time_zone);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
time_zone |
时区,相对于UTC时间的偏移。 单位:秒。 取值范围:[-86400, 86400],对应为[-24, 24]小时。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
时区设置对JPEG DCF信息有效,设置后拍摄时间(UTC时间)将转换为本地时间。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_time_zone¶
【描述】
获取时区信息。
【语法】
td_s32 ss_mpi_sys_get_time_zone(td_s32 *time_zone);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
time_zone |
时区,相对于UTC时间的偏移。 单位:秒。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_gps_info¶
【描述】
设置GPS信息。
【语法】
td_s32 ss_mpi_sys_set_gps_info(const ot_gps_info *gps_info);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
gps_info |
GPS信息 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
涉及敏感数据处理,用户在使用该接口时需要保证输入和输出数据的安全同时注意隐私保护,遵循当地法律法规。
GPS信息设置对JPEG DCF信息有效。
【举例】
无
【相关主题】
无
ss_mpi_sys_get_gps_info¶
【描述】
获取GPS信息。
【语法】
td_s32 ss_mpi_sys_get_gps_info(ot_gps_info *gps_info);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
gps_info |
GPS信息 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
涉及敏感数据处理,用户在使用该接口时需要保证输入和输出数据的安全同时注意隐私保护,遵循当地法律法规。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_schedule_mode¶
【描述】
设置系统调度模式。
【语法】
td_s32 ss_mpi_sys_set_schedule_mode(const ot_schedule_mode *schedule_mode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
schedule_mode |
系统调度模式的指针。 静态属性。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
SS928V100不支持此接口。
必须在ss_mpi_sys_init后,所有的VDEC通道和所有的VPSS组创建前设置。
设置OT_SCHEDULE_QUICK模式时,如果vdec帧存VB来源为OT_VB_SRC_PRIVATE时,接口返回不支持。
当配置为快速模式(OT_SCHEDULE_QUICK)时,整个系统会存在一定的约束,具体请参考《MPP 媒体处理软件 V5.0 FAQ》的1.9 Quick schedule注意事项。
【举例】
无。
【相关主题】
ss_mpi_sys_get_schedule_mode¶
【描述】
获取系统调度模式。
【语法】
td_s32 ss_mpi_sys_get_schedule_mode(ot_schedule_mode *schedule_mode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
schedule_mode |
系统调度模式的指针。 静态属性。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
SS928V100不支持此接口。
【举例】
无。
【相关主题】
ss_mpi_sys_set_vi_vpss_mode¶
【描述】
设置VI,VPSS工作模式。
【语法】
td_s32 ss_mpi_sys_set_vi_vpss_mode(const ot_vi_vpss_mode *vi_vpss_mode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vi_vpss_mode |
VI,VPSS的工作模式 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
SS528V100/SS524V100不支持此接口。
必须在ss_mpi_sys_init后,所有的VI PIPE和所有的VPSS组创建前设置。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_vi_vpss_mode¶
【描述】
获取VI,VPSS的工作模式。
【语法】
td_s32 ss_mpi_sys_get_vi_vpss_mode(ot_vi_vpss_mode *vi_vpss_mode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vi_vpss_mode |
VI,VPSS的工作模式 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
SS528V100/SS524V100不支持此接口。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_vi_video_mode¶
【描述】
设置VI视频模式。
【语法】
td_s32 ss_mpi_sys_set_vi_video_mode (ot_vi_video_mode video_mode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
video_mode |
VI视频模式 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
SS528V100/SS524V100不支持此接口。
必须在ss_mpi_sys_init后,所有的VI PIPE和所有的VPSS组创建前设置。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_vi_video_mode¶
【描述】
获取VI视频模式。
【语法】
td_s32 ss_mpi_sys_get_vi_video_mode(ot_vi_video_mode *video_mode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
video_mode |
VI视频模式 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
SS528V100/SS524V100不支持此接口。
只有在单线性通路下开启HNR功能时视频模式才需要设置为Advanced模式。
Advanced模式下需要分配非压格式的raw buffer供VIPROC逻辑使用。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_raw_frame_compress_param¶
【描述】
设置VI模块RAW数据的帧压缩比。
【语法】
td_s32 ss_mpi_sys_set_raw_frame_compress_param(const ot_raw_frame_compress_param *compress_param);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
compress_param |
压缩参数 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
SS528V100/SS524V100不支持此接口。
必须在ss_mpi_sys_init接口调用前才能调用。
调用ss_mpi_sys_exit后设置的值仍然有效。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_raw_frame_compress_param¶
【描述】
获取VI模块RAW数据的帧压缩比。
【语法】
td_s32 ss_mpi_sys_get_raw_frame_compress_param(ot_raw_frame_compress_param *compress_param);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
compress_param |
压缩参数 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
SS528V100/SS524V100不支持此接口。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_tuning_connect¶
【描述】
设置Tuning工具连接。
【语法】
td_s32 ss_mpi_sys_set_tuning_connect (td_s32 connect);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
connect |
Tuning工具连接值 |
输入 0:不允许Tuning工具连接 1:允许Tuning工具连接 其它值:保留 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
SS528V100/SS524V100不支持此接口。
保留值目前按0处理。
第一次设置时可以设置为0或者1,其它任何情况下无论设置什么值内部都置为0。
SYS退出之后恢复默认值1。
connect为1时可正常接入PQTool等Tuning工具,connect为0时无法接入PQTool等Tuning工具。
【举例】
无
【相关主题】
无
ss_mpi_sys_get_tuning_connect¶
【描述】
获取Tuning工具连接。
【语法】
td_s32 ss_mpi_sys_get_tuning_connect (td_s32 *connect);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
connect |
Tuning工具连接值 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
SS528V100/SS524V100不支持此接口。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_mem_info_by_handle¶
【描述】
通过handle获取mmz buffer的内存描述信息。
【语法】
td_s32 ss_mpi_sys_get_mem_info_by_handle(const td_void *mem_handle, ot_sys_mem_info *mem_info);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
mem_handle |
mmz buffer对应的handle |
输入 |
mem_info |
mmz buffer的内存描述信息 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
只有分配mmz buffer的进程和被共享的进程可以通过handle获取mmz buffer的内存描述信息。
此接口获取的内存描述信息中,offset的值固定为0。
如果设置MMZ模块参数mem_process_isolation=0,参数合法即可获取mmz buffer的内存描述信息。
【举例】
无。
【相关主题】
ss_mpi_sys_get_mem_info_by_phys¶
【描述】
通过物理地址获取mmz buffer的内存描述信息。
【语法】
td_s32 ss_mpi_sys_get_mem_info_by_phys(td_phys_addr_t phys_addr, ot_sys_mem_info *mem_info);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
phys_addr |
mmz buffer的物理地址。在buffer范围内的地址都可以,不一定是起始地址。 |
输入 |
mem_info |
mmz buffer的内存描述信息 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
只有分配mmz buffer的进程和被共享的进程可以通过物理地址获取mmz buffer的内存描述信息。
如果设置MMZ模块参数mem_process_isolation=0,参数合法即可获取mmz buffer的内存描述信息。
【举例】
无。
【相关主题】
ss_mpi_sys_get_mem_info_by_virt¶
【描述】
通过用户态虚拟地址获取mmz buffer的内存描述信息。
【语法】
td_s32 ss_mpi_sys_get_mem_info_by_virt(const td_void *virt_addr, ot_sys_mem_info *mem_info);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
virt_addr |
用户态虚拟地址。在buffer范围内的地址都可以,不一定是起始地址。 |
输入 |
mem_info |
mmz buffer的内存描述信息 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vb_set_cfg¶
【描述】
设置MPP视频缓存池属性。
【语法】
td_s32 ss_mpi_vb_set_cfg(const ot_vb_cfg *vb_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_cfg |
视频缓存池属性指针。 静态属性。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
只能在系统处于未初始化的状态下,才可以设置缓存池属性,否则会返回失败。
video buf根据不同的应用场景需要不同的配置。配置规则参见视频缓存池 。
公共缓存池中每个缓存块的大小应根据当前图像像素格式以及图像是否压缩而有所不同。具体分配大小请参考ot_vb_cfg结构体中的描述。
【举例】
无。
【相关主题】
ss_mpi_vb_get_cfg¶
【描述】
获取MPP视频缓存池属性。
【语法】
td_s32 ss_mpi_vb_get_cfg(ot_vb_cfg *vb_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_cfg |
视频缓存池属性指针。 静态属性。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
必须先调用ss_mpi_vb_set_cfg设置MPP视频缓存池属性,再获取属性。
【举例】
无。
【相关主题】
ss_mpi_vb_init¶
【描述】
初始化MPP视频缓存池。
【语法】
td_s32 ss_mpi_vb_init(td_void);
【参数】
无。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
必须先调用ss_mpi_vb_set_cfg配置缓存池属性,再初始化缓存池,否则会失败。
可反复初始化,不返回失败。
【举例】
无。
【相关主题】
ss_mpi_vb_exit¶
【描述】
去初始化MPP视频缓存池。
【语法】
td_s32 ss_mpi_vb_exit(td_void);
【参数】
无。
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
必须先调用ss_mpi_sys_exit去初始化MPP系统,再去初始化缓存池,否则返回失败。
可以反复去初始化,不返回失败。
去初始化不会清除先前对缓存池的配置。
退出VB池之前请确保VB池里的任何VB都没有被占用,否则无法退出。
【举例】
无。
【相关主题】
ss_mpi_vb_create_pool¶
【描述】
创建一个用户视频缓存池。
【语法】
ot_vb_pool ss_mpi_vb_create_pool(ot_vb_pool_cfg *vb_pool_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_pool_cfg |
缓存池配置属性参数指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
非OT_VB_INVALID_POOL_ID |
有效的缓存池ID号。 |
OT_VB_INVALID_POOL_ID |
创建缓存池失败,可能是参数非法或者保留内存不够。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vb_create_ext_pool¶
【描述】
创建一个虚拟视频缓存池,池里没有缓存块。
【语法】
ot_vb_pool ss_mpi_vb_create_ext_pool (const ot_vb_pool_cfg *vb_pool_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_pool_cfg |
缓存池配置属性参数指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
非OT_VB_INVALID_POOL_ID |
有效的缓存池ID号。 |
OT_VB_INVALID_POOL_ID |
创建缓存池失败,可能是参数非法或者保留内存不够。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
此接口创建的缓存池是空的,VB不是在创建池子时分配的,而是来自外部,由外部程序分配。
用户不能从池子中获取缓存块。
虚拟视频缓存池不能作为模块的用户VB池,否则模块会获取不到VB。
vb_pool_cfg参数中,仅blk_size和blk_cnt有效,需要配置,其它成员保留,不需要配置,接口也不会检查。
用户可以调用ss_mpi_vb_destroy_pool销毁缓存池,销毁时用户必须保证缓存池里没有实际的缓存块。
【举例】
无。
【相关主题】
ss_mpi_vb_destroy_pool¶
【描述】
销毁一个视频缓存池。
【语法】
td_s32 ss_mpi_vb_destroy_pool(ot_vb_pool pool);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
pool |
缓存池ID号。 取值范围:0, OT_VB_MAX_POOLS)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
销毁一个不存在的缓存池,则返回OT_ERR_VB_UNEXIST。
在去初始化MPP缓存池时,所有的缓存池都将被销毁,包括用户态的缓存池。
退出VB池之前请确保VB池里的任何VB都没有被占用,否则无法退出。
[0, [OT_VB_MAX_POOLS)范围内的缓存池ID号,包括公共缓存池、模块公共缓存池、模块私有缓存池等的ID号。请确保Pool为ss_mpi_vb_create_pool所创建的缓存池的ID号,否则会返回失败。
销毁VB池与创建VB池(或创建虚拟VB池)的操作,需要在同一个进程中执行。
【举例】
无。
【相关主题】
ss_mpi_vb_get_blk¶
【描述】
用户态获取一个缓存块。
【语法】
ot_vb_blk ss_mpi_vb_get_blk(ot_vb_pool pool, td_u64 blk_size, const td_char *mmz_name)
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
pool |
缓存池ID号。 取值范围:[0, OT_VB_MAX_POOLS)。 |
输入 |
blk_size |
缓存块大小。 取值范围:数据类型全范围,以byte为单位。 |
输入 |
mmz_name |
缓存池所在DDR的名字。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
非OT_VB_INVALID_HANDLE |
有效的缓存块句柄。 |
OT_VB_INVALID_HANDLE |
获取缓存块失败。 |
【错误码】
无。
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
用户可以在创建一个缓存池之后,调用本接口从该缓存池中获取一个缓存块;即将第1个参数Pool设置为创建的缓存池ID;第2个参数blk_size须小于或等于创建该缓存池时指定的缓存块大小。从指定缓存池获取缓存块时,参数mmz_name无效。
如果用户需要从任意一个公共缓存池中获取一块指定大小的缓存块,则可以将第1个参数Pool设置为无效ID号(OT_VB_INVALID_POOL_ID),将第2个参数blk_size设置为需要的缓存块大小,并指定要从哪个DDR上的公共缓存池获取缓存块。如果指定的DDR上并没有公共缓存池,那么将获取不到缓存块。如果mmz_name等于NULL,则表示在没有命名的DDR上的公共缓存池获取缓存块。
公共缓存池主要用来存放VIU的捕获图像,因此,对公共缓存池的不当操作(如占用过多的缓存块)会影响MPP系统的正常运行。
【举例】
无。
【相关主题】
ss_mpi_vb_release_blk¶
【描述】
用户态释放一个已经获取的缓存块。
【语法】
td_s32 ss_mpi_vb_release_blk(ot_vb_blk vb_blk);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_blk |
缓存块句柄。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
获取的缓存块使用完后,应该调用此接口释放缓存块。
【举例】
无。
【相关主题】
ss_mpi_log_set_wait_flag¶
【描述】
设置读取日志时等待标志。
【语法】
td_s32 ss_mpi_log_set_wait_flag(td_bool flag);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
flag |
读取日志时是否等待的标志。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_insert_buf_to_ext_pool¶
【描述】
往虚拟视频缓存池里添加缓存块,此缓存块由用户自己分配,并且不在公共缓存池内。
【语法】
ot_vb_blk ss_mpi_vb_insert_buf_to_ext_pool(ot_vb_pool pool, td_phys_addr_t phys_addr, td_u64 size, td_bool is_filled);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
pool |
缓存池ID号。 取值范围:[0, OT_VB_MAX_POOLS)。 |
输入 |
phys_addr |
缓存块物理地址。 取值范围:有效的MMZ物理地址,256字节对齐。 |
输入 |
size |
缓存块大小。 取值范围:不能超过4GB,以byte为单位。 |
输入 |
is_filled |
保留参数。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
非OT_VB_INVALID_HANDLE |
有效的缓存块句柄。 |
OT_VB_INVALID_HANDLE |
获取缓存块失败。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
缓存块内存由用户自己分配和管理。此接口只是把缓存块添加到虚拟视频缓存池中。
pool必须是虚拟视频缓存池的ID号。
缓存块的大小必须和创建虚拟视频缓存池时指定的blk_size保持一致。
缓存块添加到虚拟视频缓存池后,不能再调用ss_mpi_vb_get_blk获取缓存块。
用户传递的物理地址需在有效的mmz地址范围内,且需要256字节对齐,接口会检查是否会存在地址冲突。
虚拟视频缓存池里缓存块的物理地址没有做虚拟地址映射,如果用户需要使用虚拟地址,请自己调用map函数映射。
用户可以调用ss_mpi_vb_delete_buf_from_ext_pool从缓存池里释放缓存块。释放后缓存块就不在缓存池里,用户如果需要再使用,需要再次调用此接口把缓存块增加到缓存池。
用户可以调用ss_mpi_vb_inquire_user_cnt查询此缓存块是否被占用。
用户添加缓存块和创建虚拟VB池的操作,需要在同一个进程中执行。
【举例】
无。
【相关主题】
ss_mpi_vb_delete_buf_from_ext_pool¶
【描述】
用户从虚拟视频缓存池中释放一个缓存块。
【语法】
td_s32 ss_mpi_vb_delete_buf_from_ext_pool(ot_vb_blk block, td_s32 milli_sec);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
block |
缓存块句柄。 |
输入 |
milli_sec |
超时参数milli_sec设为-1时为阻塞接口;等于0时为非阻塞接口;大于0时为超时等待时间。超时时间的单位为毫秒(ms)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
应该调用此接口释放掉虚拟视频缓存池中不再使用的缓存块。
此接口只能释放虚拟视频缓存池的缓存块。
【举例】
无。
【相关主题】
ss_mpi_vb_phys_addr_to_handle¶
【描述】
用户态通过缓存块的物理地址获取其句柄。
【语法】
ot_vb_blk ss_mpi_vb_phys_addr_to_handle (td_phys_addr_t phys_addr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
phys_addr |
缓存块物理地址。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
非OT_VB_INVALID_HANDLE |
有效的缓存池句柄。 |
OT_VB_INVALID_HANDLE |
无效的缓存池句柄。 |
【错误码】
无。
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
物理地址应该是从MPP视频缓存池中获取的有效缓存块的地址。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_handle_to_phys_addr¶
【描述】
用户态获取一个缓存块的物理地址。
【语法】
td_phys_addr_t ss_mpi_vb_handle_to_phys_addr(ot_vb_blk vb_blk);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_blk |
缓存块句柄。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
无效返回值,缓存块句柄非法。 |
非0 |
有效物理地址。 |
【错误码】
无。
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
指定的缓存块应该是从MPP视频缓存池中获取的有效缓存块。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_handle_to_pool_id¶
【描述】
用户态获取一个帧缓存块所在缓存池的ID。
【语法】
ot_vb_pool ss_mpi_vb_handle_to_pool_id(ot_vb_blk vb_blk);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_blk |
缓存块句柄。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
非负数 |
有效的缓存池ID号。 |
负数 |
无效的缓存池ID号。 |
【错误码】
无。
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
指定的缓存块应该是从MPP视频缓存池中获取的有效缓存块。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_get_pool_info¶
【描述】
获取一个视频缓存池的信息。
【语法】
td_s32 ss_mpi_vb_get_pool_info(ot_vb_pool pool, ot_vb_pool_info *pool_info);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
pool |
缓存池ID号。 取值范围:[0, OT_VB_MAX_POOLS)。 |
输入 |
pool_info |
缓存池的信息。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
必须输入合法的缓存池ID。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_init_mod_common_pool¶
【描述】
初始化模块公共视频缓存池。
【语法】
td_s32 ss_mpi_vb_init_mod_common_pool(ot_vb_uid vb_uid);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_uid |
使用模块公共视频缓冲池的模块ID。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
当前公共视频缓冲池仅适用于VDEC模块。
必须先调用ss_mpi_vb_init进行公共视频缓冲池初始化。
必须先调用ss_mpi_vb_set_mod_pool_cfg配置缓存池属性,再初始化缓存池,否则会失败。
可反复初始化,不返回失败。
VDEC模块公共池仅在解码帧存分配方式使用模块公共VB池时才需要创建。
【举例】
无。
【相关主题】
ss_mpi_vb_exit_mod_common_pool¶
【描述】
退出模块公共视频缓存池。
【语法】
td_s32 ss_mpi_vb_exit_mod_common_pool(ot_vb_uid vb_uid);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_uid |
使用模块公共视频缓冲池的模块ID。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
必须在ss_mpi_vb_exit之前调用该接口,否则返回失败。
可以反复退出,不返回失败。
退出后会清除先前对模块公共视频缓存池的配置。
退出VB池之前请确保VB池里的任何VB都没有被占用,否则无法退出。
【举例】
无。
【相关主题】
ss_mpi_vb_set_mod_pool_cfg¶
【描述】
设置模块公共视频缓存池属性。
【语法】
td_s32 ss_mpi_vb_set_mod_pool_cfg(ot_vb_uid vb_uid, const ot_vb_cfg *vb_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_uid |
使用模块公共视频缓冲池的模块ID。 |
输入 |
vb_cfg |
模块公共视频缓存池属性指针。 静态属性。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
模块公共视频缓冲区的配置根据实际需要配置,否则会造成内存浪费。
如果模块VB已创建,再次配置返回错误码OT_ERR_VB_BUSY。
【举例】
无。
【相关主题】
ss_mpi_vb_get_mod_pool_cfg¶
【描述】
获取模块公共视频缓存池属性。
【语法】
td_s32 ss_mpi_vb_get_mod_pool_cfg(ot_vb_uid vb_uid, ot_vb_cfg *vb_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_uid |
使用模块公共视频缓冲池的模块ID。 |
输入 |
vb_cfg |
模块公共视频缓存池属性指针。 静态属性。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
必须先调用ss_mpi_vb_set_mod_pool_cfg设置模块公共视频缓存池属性,再获取属性。
【举例】
无。
【相关主题】
ss_mpi_vb_inquire_user_cnt¶
【描述】
查询缓存块使用计数信息。
【语法】
td_s32 ss_mpi_vb_inquire_user_cnt(ot_vb_blk vb_blk);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_blk |
缓存块句柄。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
OT_VB_INVALID_HANDLE |
查询失败。 |
非OT_VB_INVALID_HANDLE |
缓存块使用计数值。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_get_supplement_addr¶
【描述】
获取VB block内存的辅助信息。
【语法】
td_s32 ss_mpi_vb_get_supplement_addr(ot_vb_blk vb_blk, ot_video_supplement *supplement);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_blk |
缓存块句柄。 |
输入 |
supplement |
VB block内存的辅助信息。 如闪光帧类型、DCF信息等。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
supplement保存的DCF地址信息为内核态虚拟地址。
【举例】
无
【相关主题】
无
ss_mpi_vb_set_supplement_cfg¶
【描述】
设置VB内存的附加信息。
【语法】
td_s32 ss_mpi_vb_set_supplement_cfg(const ot_vb_supplement_cfg *supplement_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
supplement_cfg |
VB内存附加信息控制结构体。 用于附加信息分配内存。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
当前支持5种VB内存附加信息,分别为:
DCF信息,对应结构体ot_jpeg_dcf。对应的MASK为OT_VB_SUPPLEMENT_JPEG_MASK。
图像运动信息。无对应的结构体,对应的MASK为OT_VB_SUPPLEMENT_MOTION_DATA_MASK。
DNG信息,对应结构体为ot_dng_image_dynamic_info,对应的MASK为OT_VB_SUPPLEMENT_DNG_MASK。
视频扩展补充信息。对应结构体为ot_video_supplement_misc,对应的MASK为OT_VB_SUPPLEMENT_MISC_MASK,SS928V100配置无效。
BNR信息。无对应结构体。对应的MASK为OT_VB_SUPPLEMENT_BNR_MOT_MASK。
需要在ss_mpi_vb_init前调用此接口,辅助信息才能生效。
SS528V100/SS524V100/SS626V100不支持此接口。
【举例】
无
【相关主题】
ss_mpi_vb_get_supplement_cfg¶
【描述】
获取VB内存的附加信息。
【语法】
td_s32 ss_mpi_vb_get_supplement_cfg(ot_vb_supplement_cfg *supplement_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
supplement_cfg |
VB内存附加信息控制结构体。 用于附加信息分配内存。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
SS528V100/SS524V100/SS626V100不支持此接口。
【举例】
无。
【相关主题】
ss_mpi_vb_get_common_pool_id¶
【描述】
获取公共VB池的pool ID。
【语法】
td_s32 ss_mpi_vb_get_common_pool_id(ot_vb_common_pools_id *pools_id);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
pools_id |
当前所有公共VB池的pool ID |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vb_get_mod_common_pool_id¶
【描述】
获取模块公共VB池的pool ID。
【语法】
td_s32 ss_mpi_vb_get_mod_common_pool_id(ot_vb_uid vb_uid, ot_vb_common_pools_id *pools_id);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
vb_uid |
使用模块公共VB池的模块ID |
输入 |
pools_id |
模块公共VB池的pool ID |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值参见错误码。 |
【需求】
头文件:ot_common_vb.h、ss_mpi_vb.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_log_set_level_cfg¶
【描述】
设置日志等级。
【语法】
td_s32 ss_mpi_log_set_level_cfg(ot_log_level_cfg *level_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
level_cfg |
日志等级信息结构体。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h
库文件:libss_mpi.a
【注意】
当level_cfg中的成员mod_name设置为字符串“all”时,将设置全部模块的日志等级。否则,只设定mod_id指定的模块的日志等级。
只能设置芯片支持的模块的日志等级,否则会失败。
【举例】
无。
【相关主题】
ss_mpi_log_get_level_cfg¶
【描述】
获取日志等级。
【语法】
td_s32 ss_mpi_log_get_level_cfg(ot_log_level_cfg *level_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
level_cfg |
日志等级信息结构体。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_log_read¶
【描述】
读取日志。
【语法】
td_s32 ss_mpi_log_read(td_char *buf, td_u32 size);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
buf |
用于存放日志的内存指针。 |
输出 |
size |
读取日志的大小。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
大于等于0 |
成功读取的日志的大小。 |
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_log_close¶
【描述】
关闭日志文件。
【语法】
td_void ss_mpi_log_close(td_void);
【参数】
无。
【返回值】
无。
【需求】
头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h
库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
数据类型¶
基本数据类型¶
基本数据类型定义如下:
公共数据类型¶
typedef unsigned char td_uchar;
typedef unsigned char td_u8;
typedef unsigned short td_u16;
typedef unsigned int td_u32;
typedef unsigned long td_ulong;
typedef char td_char;
typedef signed char td_s8;
typedef short td_s16;
typedef int td_s32;
typedef long td_slong;
typedef float td_float;
typedef double td_double;
typedef void td_void;
#ifndef _M_IX86
typedef unsigned long long td_u64;
typedef long long td_s64;
#else
typedef unsigned __int64 td_u64;
typedef __int64 td_s64;
#endif
typedef unsigned long int td_phys_addr_t;
typedef td_u32 td_handle;
typedef unsigned int td_fr32;
typedef td_u32 ot_vb_pool;
typedef td_u32 ot_vb_blk;
typedef enum {
TD_FALSE = 0,
TD_TRUE = 1,
} td_bool;
#ifndef NULL
#define NULL 0L
#endif
#define TD_NULL 0L
#define TD_SUCCESS 0
#define TD_FAILURE (-1)
typedef td_s32 ot_ai_chn;
typedef td_s32 ot_ao_chn;
typedef td_s32 ot_aenc_chn;
typedef td_s32 ot_adec_chn;
typedef td_s32 ot_audio_dev;
typedef td_s32 ot_vi_dev;
typedef td_s32 ot_vi_pipe;
typedef td_s32 ot_vi_way;
typedef td_s32 ot_vi_chn;
typedef td_s32 ot_vi_grp;
typedef td_s32 ot_vo_dev;
typedef td_s32 ot_vo_layer;
typedef td_s32 ot_vo_chn;
typedef td_s32 ot_vo_wbc;
typedef td_s32 ot_gfx_layer;
typedef td_s32 ot_venc_chn;
typedef td_s32 ot_vdec_chn;
typedef td_s32 ot_ive_handle;
typedef td_s32 ot_fd_chn;
typedef td_s32 ot_md_chn;
typedef td_s32 ot_isp_dev;
typedef td_s32 ot_blk_dev;
typedef td_s32 ot_sensor_id;
typedef td_s32 ot_mipi_dev;
typedef td_s32 ot_slave_dev;
typedef td_s32 ot_svp_nnie_handle;
typedef td_s32 ot_svp_dsp_handle;
typedef td_s32 ot_svp_alg_chn;
typedef td_s32 ot_svp_mau_handle;
typedef td_s32 ot_vpss_grp;
typedef td_s32 ot_vpss_grp_pipe;
typedef td_s32 ot_vpss_chn;
typedef td_s32 ot_avs_grp;
typedef td_s32 ot_avs_pipe;
typedef td_s32 ot_avs_chn;
typedef td_s32 ot_mcf_grp;
typedef td_s32 ot_mcf_pipe;
typedef td_s32 ot_mcf_chn;
typedef td_s32 ot_vda_chn;
typedef td_s32 ot_pciv_chn;
/* 无效的通道号、无效的WAY号、无效的设备号、无效的句柄号、无效的PoolID、无效handle*/
#define OT_INVALID_CHN (-1)
#define OT_INVALID_WAY (-1)
#define OT_INVALID_LAYER (-1)
#define OT_INVALID_DEV (-1)
#define OT_INVALID_HANDLE (-1)
#define OT_INVALID_VALUE (-1)
#define OT_INVALID_TYPE (-1)
#define OT_VB_INVALID_POOL_ID (-1U)
#define OT_VB_INVALID_HANDLE (-1U)
/* 最大的公共视频缓存池个数 */
#define OT_VB_MAX_COMMON_POOLS 16
/* 最大的模块视频缓存池个数 */
#define OT_VB_MAX_MOD_COMMON_POOLS 16
/* 公共视频缓存池的owner id */
#define OT_POOL_OWNER_COMMON -1
/* 私有视频缓存池的owner id */
#define OT_POOL_OWNER_PRIVATE -2
/* 模块视频缓存池的owner id */
#define OT_POOL_OWNER_MODULE -3
/* 用户视频缓存池的owner id */
#define OT_POOL_OWNER_USER -4
/* VB附加信息JPEG DCF MASK */
#define OT_VB_SUPPLEMENT_JPEG_MASK 0x1
/* VB附加信息MOTION DATA MASK */
#define OT_VB_SUPPLEMENT_MOTION_DATA_MASK 0x2
/* VB附加信息DNG MASK */
#define OT_VB_SUPPLEMENT_DNG_MASK 0x4
/* VB附加信息MISC MASK */
#define OT_VB_SUPPLEMENT_MISC_MASK 0x8
/* VB附加信息BNR MOT MASK */
#define OT_VB_SUPPLEMENT_BNR_MOT_MASK 0x10
/* MMZ名字长度 */
#define OT_MAX_MMZ_NAME_LEN 32
/* 定义变量的首地址按8Bytes对齐的宏ATTRIBUTE */
#define OT_ALIGN_NUM 8
#define ATTRIBUTE __attribute__((aligned (OT_ALIGN_NUM)))
/* 定义指针变量高32位清零的宏COMPAT_POINTER */
#define OT_COMPAT_POINTER(ptr, type) \
do { \
td_u32 dest_addr_ = (td_u32) (td_uintptr_t)ptr; \
ptr = (type)( td_uintptr_t) dest_addr_; \
} while (0)
【注意事项】
Linux系统下,如果是内核态64位、用户态32位系统架构的应用场景,指针变量在内核态和用户态的长度是不一样的,在内核态是64bit长度,用户态是32bit长度,如果用户态指针指向的内存里面的数据需要与内核态有交互,则需要把用户态指针变量传递到内核态之后把高32bit的值清0,还原出一个真正的用户态指针。
OT_VB_MAX_POOLS¶
【说明】
最大的视频缓存池个数。
【定义】
#define OT_VB_MAX_POOLS 768
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MAX_COLOR_COMPONENT¶
【说明】
定义数据分量个数。
【定义】
#define OT_MAX_COLOR_COMPONENT 2
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MAX_PRIVATE_DATA_NUM¶
【说明】
定义私有数据个数。
【定义】
#define OT_MAX_PRIVATE_DATA_NUM 1
【注意事项】
无。
【相关数据类型及接口】
无。
OT_QUAD_POINT_NUM¶
【说明】
定义不规则四边形的坐标点个数。
【定义】
#define OT_QUAD_POINT_NUM 4
【注意事项】
无。
【相关数据类型及接口】
无。
ot_mod_id¶
【说明】
定义模块ID枚举类型。
【定义】
typedef enum {
OT_ID_CMPI = 0,
OT_ID_VB = 1,
OT_ID_SYS = 2,
OT_ID_RGN = 3,
OT_ID_CHNL = 4,
OT_ID_VDEC = 5,
OT_ID_AVS = 6,
OT_ID_VPSS = 7,
OT_ID_VENC = 8,
OT_ID_SVP = 9,
OT_ID_H264E = 10,
OT_ID_JPEGE = 11,
OT_ID_H265E = 13,
OT_ID_JPEGD = 14,
OT_ID_VO = 15,
OT_ID_VI = 16,
OT_ID_DIS = 17,
OT_ID_VALG = 18,
OT_ID_RC = 19,
OT_ID_AIO = 20,
OT_ID_AI = 21,
OT_ID_AO = 22,
OT_ID_AENC = 23,
OT_ID_ADEC = 24,
OT_ID_VPU = 25,
OT_ID_PCIV = 26,
OT_ID_PCIVFMW = 27,
OT_ID_ISP = 28,
OT_ID_IVE = 29,
OT_ID_USER = 30,
OT_ID_PROC = 33,
OT_ID_LOG = 34,
OT_ID_VFMW = 35,
OT_ID_GDC = 37,
OT_ID_PHOTO = 38,
OT_ID_FB = 39,
OT_ID_HDMI = 40,
OT_ID_VOIE = 41,
OT_ID_TDE = 42,
OT_ID_HDR = 43,
OT_ID_PRORES = 44,
OT_ID_VGS = 45,
OT_ID_FD = 47,
OT_ID_OD = 48,
OT_ID_LPR = 50,
OT_ID_SVP_NNIE = 51,
OT_ID_SVP_DSP = 52,
OT_ID_DPU_RECT = 53,
OT_ID_DPU_MATCH = 54,
OT_ID_MOTIONSENSOR = 55,
OT_ID_MOTIONFUSION = 56,
OT_ID_GYRODIS = 57,
OT_ID_PM = 58,
OT_ID_SVP_ALG = 59,
OT_ID_IVP = 60,
OT_ID_MCF = 61,
OT_ID_SVP_MAU = 62,
OT_ID_VDA = 63,
OT_ID_VPP = 64,
OT_ID_KCF = 65,
OT_ID_PQP = 66,
OT_ID_NNNDEV = 67,
OT_ID_AACPU = 68,
OT_ID_NNNDFX = 69,
OT_ID_TSFW = 70,
OT_ID_CIPHER = 71,
OT_ID_KLAD = 72,
OT_ID_KEYSLOT = 73,
OT_ID_OTP = 74,
OT_ID_VDEC_ADAPT = 75,
OT_ID_DCC = 76,
OT_ID_VDEC_SERVER = 77,
OT_ID_VFMW_MDC = 78,
OT_ID_VB_LOG = 79,
OT_ID_MCF_CALIBRATION = 80,
OT_ID_SVP_NNN = 81,
OT_ID_HNR = 82,
OT_ID_SNAP = 83,
OT_ID_LOG_MDC = 84,
OT_ID_UVC = 85,
OT_ID_FISHEYE_CALIBRATION = 86,
OT_ID_BUTT,
} ot_mod_id;
【成员】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
ot_payload_type¶
【说明】
定义音视频净荷类型枚举。
【定义】
typedef enum {
OT_PT_PCMU = 0,
OT_PT_1016 = 1,
OT_PT_G721 = 2,
OT_PT_GSM = 3,
OT_PT_G723 = 4,
OT_PT_DVI4_8K = 5,
OT_PT_DVI4_16K = 6,
OT_PT_LPC = 7,
OT_PT_PCMA = 8,
OT_PT_G722 = 9,
OT_PT_S16BE_STEREO = 10,
OT_PT_S16BE_MONO = 11,
OT_PT_QCELP = 12,
OT_PT_CN = 13,
OT_PT_MPEGAUDIO = 14,
OT_PT_G728 = 15,
OT_PT_DVI4_3 = 16,
OT_PT_DVI4_4 = 17,
OT_PT_G729 = 18,
OT_PT_G711A = 19,
OT_PT_G711U = 20,
OT_PT_G726 = 21,
OT_PT_G729A = 22,
OT_PT_LPCM = 23,
OT_PT_CelB = 25,
OT_PT_JPEG = 26,
OT_PT_CUSM = 27,
OT_PT_NV = 28,
OT_PT_PICW = 29,
OT_PT_CPV = 30,
OT_PT_H261 = 31,
OT_PT_MPEGVIDEO = 32,
OT_PT_MPEG2TS = 33,
OT_PT_H263 = 34,
OT_PT_SPEG = 35,
OT_PT_MPEG2VIDEO = 36,
OT_PT_AAC = 37,
OT_PT_WMA9STD = 38,
OT_PT_HEAAC = 39,
OT_PT_PCM_VOICE = 40,
OT_PT_PCM_AUDIO = 41,
OT_PT_MP3 = 43,
OT_PT_ADPCMA = 49,
OT_PT_AEC = 50,
OT_PT_X_LD = 95,
OT_PT_H264 = 96,
OT_PT_D_GSM_HR = 200,
OT_PT_D_GSM_EFR = 201,
OT_PT_D_L8 = 202,
OT_PT_D_RED = 203,
OT_PT_D_VDVI = 204,
OT_PT_D_BT656 = 220,
OT_PT_D_H263_1998 = 221,
OT_PT_D_MP1S = 222,
OT_PT_D_MP2P = 223,
OT_PT_D_BMPEG = 224,
OT_PT_MP4VIDEO = 230,
OT_PT_MP4AUDIO = 237,
OT_PT_VC1 = 238,
OT_PT_JVC_ASF = 255,
OT_PT_D_AVI = 256,
OT_PT_DIVX3 = 257,
OT_PT_AVS = 258,
OT_PT_REAL8 = 259,
OT_PT_REAL9 = 260,
OT_PT_VP6 = 261,
OT_PT_VP6F = 262,
OT_PT_VP6A = 263,
OT_PT_SORENSON = 264,
OT_PT_H265 = 265,
OT_PT_VP8 = 266,
OT_PT_MVC = 267,
OT_PT_PNG = 268,
OT_PT_AMR = 1001,
OT_PT_MJPEG = 1002,
OT_PT_AMRWB = 1003,
OT_PT_PRORES = 1006,
OT_PT_OPUS = 1007,
OT_PT_BUTT
} ot_payload_type;
【成员】
无。
【注意事项】
无。
【相关数据类型及接口】
ot_venc_chn_attr
ot_vdec_chn_attr
ot_vdec_chn_status
ot_vdec_chn_param
ot_vdec_protocol_param
ot_aenc_chn_attr
ot_adec_chn_attr
ot_vb_uid¶
【说明】
定义视频缓冲池的模块ID枚举类型。
【定义】
typedef enum {
OT_VB_UID_VI = 0,
OT_VB_UID_VO = 1,
OT_VB_UID_VGS = 2,
OT_VB_UID_VENC = 3,
OT_VB_UID_VDEC = 4,
OT_VB_UID_H265E = 5,
OT_VB_UID_H264E = 6,
OT_VB_UID_JPEGE = 7,
OT_VB_UID_JPEGD =8,
OT_VB_UID_VPSS = 9,
OT_VB_UID_DIS = 10,
OT_VB_UID_USER = 11,
OT_VB_UID_PCIV = 12,
OT_VB_UID_AI = 13,
OT_VB_UID_AENC = 14,
OT_VB_UID_RC = 15,
OT_VB_UID_VFMW = 16,
OT_VB_UID_GDC = 17,
OT_VB_UID_AVS = 18,
OT_VB_UID_DPU_RECT = 19,
OT_VB_UID_DPU_MATCH = 20,
OT_VB_UID_MCF = 21,
OT_VB_UID_VDA = 22,
OT_VB_UID_VPP = 23,
OT_VB_UID_COMMON = 24,
OT_VB_UID_UVC = 25,
OT_VB_UID_VDEC_ADAPT = 26,
OT_VB_UID_BUTT = 27,
} ot_vb_uid
【成员】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
ot_op_mode¶
【说明】
定义操作模式枚举。
【定义】
typedef enum {
OT_OP_MODE_AUTO = 0,
OT_OP_MODE_MANUAL = 1,
OT_OP_MODE_BUTT
} ot_op_mode;
【成员】
成员名称 |
描述 |
|---|---|
OT_OP_MODE_AUTO |
自动模式,一般此模式使用程序内部的默认参数。 |
OT_OP_MODE_MANUAL |
手动模式,一般此模式使用用户配置的参数。 |
【注意事项】
无。
【相关数据类型及接口】
ot_venc_cu_pred
ot_rotation¶
【说明】
定义旋转角度枚举。
【定义】
typedef enum {
OT_ROTATION_0 = 0,
OT_ROTATION_90 = 1,
OT_ROTATION_180 = 2,
OT_ROTATION_270 = 3,
OT_ROTATION_BUTT
} ot_rotation;
【成员】
成员名称 |
描述 |
|---|---|
OT_ROTATION_0 |
不旋转,旋转0度。 |
OT_ROTATION_90 |
旋转90度。 |
OT_ROTATION_180 |
旋转180度。 |
OT_ROTATION_270 |
旋转270度。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vb_src¶
【说明】
定义VB来源选择。
【定义】
typedef enum {
OT_VB_SRC_COMMON = 0,
OT_VB_SRC_MOD = 1,
OT_VB_SRC_PRIVATE = 2,
OT_VB_SRC_USER = 3,
OT_VB_SRC_BUTT
} ot_vb_src;
【成员】
成员名称 |
描述 |
|---|---|
OT_VB_SRC_COMMON |
公共VB。 |
OT_VB_SRC_MOD |
模块VB。 |
OT_VB_SRC_PRIVATE |
私有VB。 |
OT_VB_SRC_USER |
用户VB。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_point¶
【说明】
定义坐标信息结构体。
【定义】
typedef struct {
td_s32 x;
td_s32 y;
} ot_point;
【成员】
成员名称 |
描述 |
|---|---|
x |
横坐标。 |
y |
纵坐标。 |
【注意事项】
无。
【相关数据类型及接口】
ot_rgn_overlay_chn_attr
ot_rgn_quadrangle
ot_rgn_bmp_update
ot_vgs_draw_line
ot_vgs_quadrangle_cover
ot_size¶
【说明】
定义大小信息结构体。
【定义】
typedef struct {
td_u32 width;
td_u32 height;
} ot_size;
【成员】
成员名称 |
描述 |
|---|---|
width |
宽度。 |
height |
高度。 |
【注意事项】
无。
【相关数据类型及接口】
ot_rgn_overlay_attr
ot_rgn_overlayex_attr
ot_rgn_canvas_info
ot_venc_mpf_cfg
ot_vi_chn_attr
ot_vo_wbc_attr
ot_vo_video_layer_attr
ot_rect¶
【说明】
定义矩形区域信息结构体。
【定义】
typedef struct {
td_s32 x;
td_s32 y;
td_u32 width;
td_u32 height;
} ot_rect;
【成员】
成员名称 |
描述 |
|---|---|
x |
横坐标。 |
y |
纵坐标。 |
width |
宽度。 |
height |
高度。 |
【注意事项】
无。
【相关数据类型及接口】
ot_rgn_mosaic_chn_attr
ot_rgn_mosaicex_chn_attr
ot_venc_roi_attr
ot_venc_sse_rgn
ot_vgs_osd
ot_vi_chn_attr
ot_mosaic
ot_aspect_ratio
ot_vo_video_layer_attr
ot_vo_chn_attr
ot_vpss_crop_info
ot_mcf_crop_info
ot_coord¶
【说明】
定义坐标模式。
【定义】
typedef enum {
OT_COORD_ABS = 0,
OT_COORD_RATIO,
OT_COORD_BUTT
} ot_coord;
【成员】
成员名称 |
描述 |
|---|---|
OT_COORD_ABS |
绝对坐标。 |
OT_COORD_RATIO |
相对坐标。 |
【注意事项】
相对坐标,即坐标值是以与当前图像宽高的比率来表示,具体比率转换以实际使用接口为准。
【相关数据类型及接口】
ot_rgn_cover_chn_attr
ot_vpss_crop_info
ot_mcf_crop_info
ot_border¶
【说明】
定义边框属性结构体。
【定义】
typedef struct {
td_u32 top_width;
td_u32 bottom_width;
td_u32 left_width;
td_u32 right_width;
td_u32 color;
} ot_border;
【成员】
成员名称 |
描述 |
|---|---|
top_width |
边框顶部宽度,以像素为单位。 |
bottom_width |
边框底部宽度,以像素为单位。 |
left_width |
边框左边宽度,以像素为单位。 |
right_width |
边框右边宽度,以像素为单位。 |
color |
边框颜色,颜色格式为rgb888,u32的低24bit为有效位。 |
【注意事项】
无
【相关数据类型及接口】
ot_vo_border
ot_cover¶
【说明】
定义cover属性结构体。
【定义】
typedef struct {
ot_cover_type type;
union {
ot_rect rect;
ot_quad_cover quad;
};
td_u32 color;
} ot_cover;
【成员】
成员名称 |
描述 |
|---|---|
type |
Cover类型 |
rect |
矩形坐标 |
quad |
任意四边形结构 |
color |
cover颜色 格式为RGB888 |
【注意事项】
无。
【相关数据类型及接口】
ot_cover_type
ot_cover_type¶
【说明】
cover类型枚举。
【定义】
typedef enum {
OT_COVER_RECT = 0,
OT_COVER_QUAD,
OT_COVER_BUTT
} ot_cover_type;
【成员】
成员名称 |
描述 |
|---|---|
OT_COVER_RECT |
矩形 |
OT_COVER_QUAD |
任意四边形 |
【注意事项】
无
【相关数据类型及接口】
ot_quad_cover¶
【说明】
定义不规则四边形Cover属性结构。
【定义】
typedef struct {
td_bool is_solid;
td_u32 thick;
ot_point point[OT_QUAD_POINT_NUM];
} ot_quad_cover
【成员】
成员名称 |
描述 |
|---|---|
is_solid |
是否实心 |
thick |
空心线宽,取值范围为[OT_RGN_COVEREX_MIN_THICK, OT_RGN_COVEREX_MAX_THICK],要求以2对齐。 |
point |
任意四边形坐标 |
【注意事项】
任意四边形的四个点坐标不可以设置为同一点或者同一直线上。
【相关数据类型及接口】
ot_mosaic¶
【说明】
定义mosaic属性结构体。
【定义】
typedef struct {
ot_mosaic_blk_size blk_size;
ot_rect rect; /* RW; The rectangle area. */
} ot_mosaic;
【成员】
成员名称 |
描述 |
|---|---|
blk_size |
Mosaic块大小 |
rect |
矩形坐标 |
【注意事项】
无。
【相关数据类型及接口】
ot_mosaic_blk_size¶
【说明】
Mosaic 块大小枚举。
【定义】
typedef enum {
OT_MOSAIC_BLK_SIZE_4 = 0, /* block size 4*4 of MOSAIC */
OT_MOSAIC_BLK_SIZE_8, /* block size 8*8 of MOSAIC */
OT_MOSAIC_BLK_SIZE_16, /* block size 16*16 of MOSAIC */
OT_MOSAIC_BLK_SIZE_32, /* block size 32*32 of MOSAIC */
OT_MOSAIC_BLK_SIZE_64, /* block size 64*64 of MOSAIC */
OT_MOSAIC_BLK_SIZE_128, /* block size 128*128 of MOSAIC */
OT_MOSAIC_BLK_SIZE_BUTT
} ot_mosaic_blk_size;
【成员】
成员名称 |
描述 |
|---|---|
OT_MOSAIC_BLK_SIZE_4 |
4x4大小Mosaic块 |
OT_MOSAIC_BLK_SIZE_8 |
8x8大小Mosaic块 |
OT_MOSAIC_BLK_SIZE_16 |
16x16大小Mosaic块 |
OT_MOSAIC_BLK_SIZE_32 |
32x32大小Mosaic块 |
OT_MOSAIC_BLK_SIZE_64 |
64x64大小Mosaic块 |
OT_MOSAIC_BLK_SIZE_128 |
128x128大小Mosaic块 |
【注意事项】
无
【相关数据类型及接口】
无
ot_corner_rect_type¶
【说明】
定义corner_rect形状枚举。
【定义】
typedef enum{
OT_CORNER_RECT_TYPE_CORNER = 0,
OT_CORNER_RECT_TYPE_FULL_LINE,
OT_CORNER_RECT_TYPE_BUTT
}ot_corner_rect_type;
【成员】
成员名称 |
描述 |
|---|---|
OT_CORNER_RECT_TYPE_CORNER |
角框 |
OT_CORNER_RECT_TYPE_FULL_LINE |
线框 |
【注意事项】
无。
【相关数据类型及接口】
ot_corner_rect¶
【说明】
定义corner_rect位置结构体。
【定义】
typedef struct {
ot_rect rect;
td_u32 hor_len;
td_u32 ver_len;
td_u32 thick;
} ot_corner_rect;
【成员】
成员名称 |
描述 |
|---|---|
rect |
起始位置及宽高信息,参考ot_rect结构体描述。 |
hor_len |
角框水平线长。 |
ver_len |
角框竖直线长。 |
thick |
角框线宽。 |
【注意事项】
无。
【相关数据类型及接口】
ot_corner_rect_attr¶
【说明】
定义corner_rect属性结构体。
【定义】
typedef struct {
ot_corner_rect_type corner_rect_type;
td_u32 color;
} ot_corner_rect_attr;
【成员】
成员名称 |
描述 |
|---|---|
corner_rect_type |
定义角框形状。 |
color |
定义角框颜色。 |
【注意事项】
无。
【相关数据类型及接口】
ot_crop_info¶
【说明】
定义CROP属性结构体。
【定义】
typedef struct {
td_bool enable;
ot_rect rect;
} ot_crop_info;
【成员】
成员名称 |
描述 |
|---|---|
enable |
Crop使能开关。 |
rect |
Crop起始位置与宽高信息。 |
【注意事项】
无。
【相关数据类型及接口】
ot_venc_chn_param
ss_mpi_vo_set_video_layer_crop
ss_mpi_vo_get_video_layer_crop
ot_frame_rate_ctrl¶
【说明】
定义帧率控制结构体。
【定义】
typedef struct {
td_s32 src_frame_rate; /* RW; source frame rate */
td_s32 dst_frame_rate; /* RW; dest frame rate */
} ot_frame_rate_ctrl;
【成员】
成员名称 |
描述 |
|---|---|
src_frame_rate |
源帧率,即输入帧率。 取值范围-1或[1, 240] |
dst_frame_rate |
目的帧率,即输出帧率。 取值范围[-1, src_frame_rate] |
【注意事项】
无。
【相关数据类型及接口】
ot_venc_chn_param
ot_vpss_grp_attr
ot_vpss_chn_attr
ot_mcf_chn_attr
ot_mcf_grp_attr
ot_video_display_mode¶
【说明】
定义视频显示模式枚举。
【定义】
typedef enum {
OT_VIDEO_DISPLAY_MODE_PREVIEW = 0,
OT_VIDEO_DISPLAY_MODE_PLAYBACK = 1,
OT_VIDEO_DISPLAY_MODE_BUTT
} ot_video_display_mode;
【成员】
成员名称 |
描述 |
|---|---|
OT_VIDEO_DISPLAY_MODE_PREVIEW |
预览模式。 |
OT_VIDEO_DISPLAY_MODE_PLAYBACK |
回放模式。 |
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_vdec_set_display_mode
ss_mpi_vdec_get_display_mode
ot_rotation_view_type¶
【说明】
定义旋转的视野模式。
【定义】
typedef enum {
OT_ROTATION_VIEW_TYPE_ALL = 0, /* View all source Image,no lose*/
OT_ROTATION_VIEW_TYPE_TYPICAL = 1, /* View from rotation Image with source size,same lose*/
OT_ROTATION_VIEW_TYPE_INSIDE = 2, /* View with no black section,all in dest Image*/
OT_ROTATION_VIEW_TYPE_BUTT,
} ot_rotation_view_type;
【成员】
成员名称 |
描述 |
|---|---|
OT_ROTATION_VIEW_TYPE_ALL |
全模式,保留所有的图像,无图像视野损失,但随着旋转角度改变带来较多的黑边。 |
OT_ROTATION_VIEW_TYPE_TYPICAL |
典型模式,用原有视野截取旋转后图像,会有部分图像损失,也会留有一定量的黑边。 |
OT_ROTATION_VIEW_TYPE_INSIDE |
无黑边模式,在旋转后图中选取无黑边的视野大小 |
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
ot_free_rotation_attr¶
【说明】
定义任意角度旋转属性。
【定义】
typedef struct {
ot_rotation_view_type view_type;
td_u32 angle;
td_s32 center_x_offset;
td_s32 center_y_offset;
ot_size dst_size;
} ot_free_rotation_attr;
【成员】
成员名称 |
描述 |
|---|---|
view_type |
任意角度旋转的旋转模式,裁剪模式、全模式和典型模式。 |
angle |
旋转的角度。任意角度旋转时范围:[0, 360];高精度任意角度旋转时范围:[0, 36000]。 |
center_x_offset |
旋转中心点相对图象中心点水平偏移。仅典型模式支持。范围是[-511, 511]。 |
center_y_offset |
旋转中心点相对图象中心点垂直偏移。仅典型模式支持。范围是[-511, 511] |
dst_size |
旋转后的得到的图像大小,如果旋转后截取图像大小相对dst_size有变化,会对图像进行缩放处理。范围:[480x360, 8192x8192]。 |
【注意事项】
center_x_offset/ center_y_offset仅典型模式支持。
高精度任意角度旋转,单位:0.01°。
【相关数据类型及接口】
ot_rotation_type¶
【说明】
定义旋转类型。
【定义】
typedef enum {
OT_ROTATION_ANG_FIXED = 0,
OT_ROTATION_ANG_FREE,
OT_ROTATION_ANG_FREE_HP,
OT_ROTATION_ANG_BUTT
} ot_rotation_type;
【成员】
成员名称 |
描述 |
|---|---|
OT_ROTATION_ANG_FIXED |
固定角度旋转。 |
OT_ROTATION_ANG_FREE |
任意角度旋转。 |
OT_ROTATION_ANG_FREE_HP |
高精度任意角度旋转。 |
【注意事项】
无。
【相关数据类型及接口】
ot_rotation_attr¶
【说明】
定义通道旋转属性。
【定义】
typedef struct {
td_bool enable;
ot_rotation_type rotation_type;
union {
ot_rotation rotation_fixed;
ot_free_rotation_attr rotation_free;
};
} ot_rotation_attr;
【成员】
成员名称 |
描述 |
|---|---|
enable |
控制旋转使能开关 |
rotation_type |
旋转类型。 |
rotation_fixed |
固定角度旋转属性,rotation_type为OT_ROTATION_ANG_FIXED时才生效。 |
rotation_free |
任意角度旋转属性,rotation_type为OT_ROTATION_ANG_FREE或OT_ROTATION_ANG_FREE_HP时才生效。 |
【注意事项】
设置相应旋转时,需要打开使能开关enable。
【相关数据类型及接口】
ss_mpi_vpss_get_chn_rotation
ss_mpi_mcf_get_chn_rotation
ot_frame_flag¶
【说明】
定义帧的类型。
【定义】
typedef enum {
OT_FRAME_FLAG_SNAP_FLASH = 0x1 << 0,
OT_FRAME_FLAG_SNAP_CUR = 0x1 << 1,
OT_FRAME_FLAG_SNAP_REF = 0x1 << 2,
OT_FRAME_FLAG_SNAP_END = 0x1 << 3,
OT_FRAME_FLAG_MIRROR = 0x1 << 4,
OT_FRAME_FLAG_FLIP = 0x1 << 5,
OT_FRAME_FLAG_DGAIN_BYPASS = 0x1 << 6,
OT_FRAME_FLAG_BUTT
} ot_frame_flag;
【成员】
成员名称 |
描述 |
|---|---|
OT_FRAME_FLAG_SNAP_FLASH |
拍照时是否开启闪光灯。 |
OT_FRAME_FLAG_SNAP_CUR |
拍照的有效数据帧。 |
OT_FRAME_FLAG_SNAP_REF |
拍照帧的参考帧。 |
OT_FRAME_FLAG_SNAP_END |
连拍的最后一张帧数据标示。 |
OT_FRAME_FLAG_MIRROR |
mirror标识。 |
OT_FRAME_FLAG_FLIP |
flip标识。 |
OT_FRAME_FLAG_DGAIN_BYPASS |
isp dgain bypass功能标识。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_isp_inner_flag¶
【说明】
定义帧的类型。
【定义】
typedef enum {
OT_ISP_INNER_FLAG_DGAIN_FORWARD = 0x1 << 0,
OT_ISP_INNER_FLAG_BUTT
} ot_isp_inner_flag;
【成员】
成员名称 |
描述 |
|---|---|
OT_ISP_INNER_FLAG_DGAIN_FORWARD |
isp dgain 前移功能标识。 |
【注意事项】
无。
【相关数据类型及接口】
无。
OT_SRC_LENS_COEF_NUM¶
【说明】
镜头畸变表相关系数个数。
【定义】
#define OT_SRC_LENS_COEF_NUM 9
【注意事项】
无
【相关数据类型及接口】
无
OT_DST_LENS_COEF_NUM¶
【说明】
镜头畸变表相关系数个数。
【定义】
#define OT_DST_LENS_COEF_NUM 14
【注意事项】
无
【相关数据类型及接口】
无
ot_ldc_v1_attr¶
【说明】
定义OT_LDC_V1版本的镜头畸变校正属性。
【定义】
typedef struct {
td_bool aspect;
td_s32 x_ratio;
td_s32 y_ratio;
td_s32 xy_ratio;
td_s32 center_x_offset;
td_s32 center_y_offset;
td_s32 distortion_ratio;
} ot_ldc_v1_attr;
【成员】
成员名称 |
描述 |
|---|---|
aspect |
畸变校正类型。 aspect=0:不保持幅形比; aspect=1:保持幅形比。 |
x_ratio |
水平视场角大小,aspect=0有效; 其值为水平视场角介于最小视场角和最大视场角之间的一个比例。 |
y_ratio |
垂直视场角大小,aspect=0有效; 其值为垂直视场角介于最小视场角和最大视场角之间的一个比例。 |
xy_ratio |
整体视场角大小,包括水平视场角和垂直视场角,aspect=1有效; 其值为整体视场角介于最小视场角和最大视场角之间的一个比例。 |
center_x_offset |
畸变中心点相对图象中心点水平偏移。 |
center_y_offset |
畸变中心点相对图象中心点垂直偏移。 |
distortion_ratio |
畸变程度。当开启展宽(Spread)时候,LDC的distortion_ratio取值范围只能为[0, 500]。 |
【注意事项】
SS928V100:
center_x_offset取值范围:[-511, 511]
center_y_offset取值范围:[-511, 511];同时矫正中心点须落在图像内。
distortion_ratio取值范围:[-300, 500],其中[-300, 0)对应枕形模式,[0, 500]对应桶形模式。
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无。
ot_ldc_v2_attr¶
【说明】
定义OT_LDC_V2版本的镜头畸变校正属性。
【定义】
typedef struct {
td_s32 focal_len_x;
td_s32 focal_len_y;
td_s32 coord_shift_x;
td_s32 coord_shift_y;
td_s32 src_calibration_ratio[OT_SRC_LENS_COEF_NUM];
td_s32 dst_calibration_ratio[OT_DST_LENS_COEF_NUM];
td_s32 max_du;
} ot_ldc_v2_attr;
【成员】
成员名称 |
描述 |
|---|---|
focal_len_x |
水平方向镜头有效焦距。 参数范围:[6400, 117341700] |
focal_len_y |
垂直方向镜头有效焦距。 参数范围:[6400, 117341700] |
coord_shift_x |
光心X坐标。 参数范围:[35* Width,65* Width], Width为图像宽 |
coord_shift_y |
光心Y坐标。 参数范围:[35* Height,65* Height], Height为图像高。 |
src_calibration_ratio |
镜头畸变系数,其中[0]固定为1*10^5,[8]的范围为[0,32*10^5],其他成员范围均为[-16*10^5, 16*10^5]。 |
dst_calibration_ratio |
镜头畸变系数。其中[12]、[13]的范围为[0, 16*10^5],每个成员范围均为[-16*10^5, 16*10^5]。 |
max_du |
镜头畸变系数。参数范围:[0,1<<20]。 |
【注意事项】
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无。
ot_ldc_v3_attr¶
【说明】
定义OT_LDC_V3版本的镜头畸变校正属性。
【定义】
typedef struct {
td_bool aspect;
td_s32 x_ratio;
td_s32 y_ratio;
td_s32 xy_ratio;
td_s32 focal_len_x;
td_s32 focal_len_y;
td_s32 coord_shift_x;
td_s32 coord_shift_y;
td_s32 src_calibration_ratio[OT_SRC_LENS_COEF_NUM];
td_s32 src_calibration_ratio_next[OT_SRC_LENS_COEF_NUM];
td_u32 coef_intp_ratio;
} ot_ldc_v3_attr;
【成员】
成员名称 |
描述 |
|---|---|
aspect |
畸变校正类型。 aspect=0:不保持幅形比; aspect=1:保持幅形比。 |
x_ratio |
水平视场角大小,aspect=0有效; 其值为水平视场角介于最小视场角和最大视场角之间的一个比例。 |
y_ratio |
垂直视场角大小,aspect=0有效; 其值为垂直视场角介于最小视场角和最大视场角之间的一个比例。 |
xy_ration |
整体视场角大小,包括水平视场角和垂直视场角,aspect=1有效; 其值为整体视场角介于最小视场角和最大视场角之间的一个比例。 |
focal_len_x |
水平方向镜头有效焦距。 参数范围:[6400,3276700] . |
focal_len_y |
垂直方向镜头有效焦距。 参数范围:[6400, 3276700]. |
coord_shift_x |
光心X坐标。 参数范围:[35* Width,65* Width], Width为图像宽 |
coord_shift_y |
光心Y坐标。 参数范围:[35* Height,65* Height], Height为图像高。 |
src_calibration_ratio |
镜头畸变系数,其中[0]固定为1*10^5,[4],[5],[6],[7]固定为0,[8]固定为3200000,其他成员范围均为[-16*10^5, 16*10^5]。 |
src_calibration_ratio_next |
镜头畸变系数,其中[0]固定为1*10^5,[4],[5],[6],[7]固定为0,[8]固定为3200000,其他成员范围均为[-16*10^5, 16*10^5]。 |
coef_intp_ratio |
镜头畸变系数。参数范围:[0,32768]。 |
【注意事项】
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无。
ot_ldc_version¶
【说明】
定义LDC版本。
【定义】
typedef enum {
OT_LDC_V1 = 1,
OT_LDC_V2 = 2,
OT_LDC_V3 = 3,
OT_LDC_VERSION_BUTT
} ot_ldc_version;
【成员】
成员名称 |
描述 |
|---|---|
OT_LDC_V1 |
OT_LDC_V1版本 |
OT_LDC_V2 |
OT_LDC_V2版本 |
OT_LDC_V3 |
OT_LDC_V3版本 |
【注意事项】
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无。
ot_ldc_attr¶
【说明】
定义镜头畸变校正属性结构体。
【定义】
typedef struct {
td_bool enable;
ot_ldc_version ldc_version;
union {
ot_ldc_v1_attr ldc_v1_attr;
ot_ldc_v2_attr ldc_v2_attr;
ot_ldc_v3_attr ldc_v3_attr;
};
} ot_ldc_attr;
【成员】
成员名称 |
描述 |
|---|---|
enable |
控制LDC使能开关 |
ldc_version |
LDC版本 |
ldc_v1_attr |
镜头畸变校正属性,ldc_version为OT_LDC_V1时才生效。 |
ldc_v2_attr |
镜头畸变校正属性,ldc_version为OT_LDC_V2时才生效。 |
ldc_v3_attr |
镜头畸变校正属性,ldc_version为OT_LDC_V3时才生效。 |
【注意事项】
设置LDC属性时,需要打开使能开关enable。
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无。
ot_spread_attr¶
【说明】
定义展宽属性的相关配置。
【定义】
typedef struct {
td_bool enable;
td_u32 spread_coef;
} ot_spread_attr;
【成员】
成员名称 |
描述 |
|---|---|
enable |
关闭或打开展宽功能。当开启展宽(Spread)时候,LDC的distortion_ratio取值范围只能为 [0, 500],即只支持LDC的桶形模式。 |
spread_coef |
展宽系数。取值范围:[0, 18]。 |
【注意事项】
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无。
ot_jpeg_dcf¶
【说明】
JPEG图片使用的DCF信息。
【定义】
typedef struct {
td_u8 capture_time[OT_DCF_CAPTURE_TIME_LENGTH];
td_bool flash;
td_u32 digital_zoom_ratio;
ot_isp_dcf_info isp_dcf_info;
} ot_jpeg_dcf;
【成员】
成员名称 |
描述 |
|---|---|
capture_time |
Jpeg图片拍摄的时间。 |
flash |
Jpeg照片拍摄的时候是否有闪光灯。 |
digital_zoom_ratio |
Jpeg照片拍摄的时候的数码缩放倍数。 |
isp_dcf_info |
DCF其他信息,ot_isp_dcf_info具体请参考《ISP 开发参考》。 |
【注意事项】
无。
【相关数据类型及接口】
ot_isp_dcf_info
OT_DCF_CAPTURE_TIME_LENGTH¶
【说明】
Jpeg图片拍摄的时间长度。
【定义】
#define OT_DCF_CAPTURE_TIME_LENGTH 20
【成员】
无
【注意事项】
无
【相关数据类型及接口】
无
ot_isp_fswdr_mode¶
【说明】
定义frame switch wdr 模式。
【定义】
typedef enum {
OT_ISP_FSWDR_NORMAL_MODE = 0x0,
OT_ISP_FSWDR_LONG_FRAME_MODE = 0x1,
OT_ISP_FSWDR_AUTO_LONG_FRAME_MODE = 0x2,
OT_ISP_FSWDR_MODE_BUTT
}ot_isp_fswdr_mode;
【成员】
成员名称 |
描述 |
|---|---|
OT_ISP_FSWDR_NORMAL_MODE |
WDR NORMAL模式。 |
OT_ISP_FSWDR_LONG_FRAME_MODE |
WDR长帧模式。 |
OT_ISP_FSWDR_AUTO_LONG_FRAME_MODE |
WDR自动长帧模式。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_isp_frame_info¶
【说明】
ISP的实时信息。
【定义】
typedef struct {
td_u32 iso;
td_u32 exposure_time[OT_ISP_WDR_MAX_FRAME_NUM];
td_u32 isp_dgain[OT_ISP_WDR_MAX_FRAME_NUM];
td_u32 again[OT_ISP_WDR_MAX_FRAME_NUM];
td_u32 dgain[OT_ISP_WDR_MAX_FRAME_NUM];
ot_isp_fswdr_mode fs_wdr_mode;
td_s32 fe_id[OT_ISP_WDR_MAX_FRAME_NUM];
td_u32 ratio[3];
td_u32 isp_nr_strength;
td_u32 f_number;
td_u32 sensor_id;
td_u32 sensor_mode;
td_u32 hmax_times;
td_u32 vmax;
td_u32 vc_num;
td_u32 wb_gain[OT_ISP_WB_GAIN_NUM];
td_u16 ccm[OT_ISP_CAP_CCM_NUM];
td_u32 exposure_distance[OT_ISP_WDR_MAX_FRAME_NUM - 1];
td_u32 inner_flag;
} ot_isp_frame_info;
【成员】
成员名称 |
描述 |
|---|---|
iso |
当前sensor模拟增益*sensor数字增益*ISP数字增益*100。 |
exposure_time |
曝光时间,单位是微秒(us)。 |
isp_dgain |
ISP数字增益。 |
again |
Sensor的模拟增益。 |
dgain |
Sensor的数字增益。 |
fs_wdr_mode |
frame switch wdr 模式。 |
fe_id |
fe通道号。 |
ratio |
多帧合成WDR相邻2帧默认曝光比。 |
isp_nr_strength |
ISP的NR强度。当前未支持,默认值为0。 |
f_number |
当前使用的镜头的F值。 |
sensor_id |
当前使用的sensorID。 |
sensor_mode |
当前使用的sensor序列模式。 |
hmax_times |
当前使用的sensor对应读出一行的时间,单位是纳秒(ns)。 |
vmax |
sensor每帧实际生效的总行数,单位是行。 |
vc_num |
当前采集的帧的序列号。当前未支持,默认值为0。 |
wb_gain |
白平衡增益参数。 |
ccm |
CCM矩阵参数。 |
exposure_distance |
wdr模式下曝光行差。 具体请参考《ISP 开发参考》2.3小节 |
inner_flag |
ISP当前帧的标记,使用ot_isp_inner_flag里面的值标记,内部使用,可以按位或操作。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_isp_hdr_info¶
【说明】
ISP的HDR信息。
【定义】
typedef struct {
td_u32 color_temp;
td_u16 ccm[9];
td_u8 saturation;
} ot_isp_hdr_info;
【成员】
成员名称 |
描述 |
|---|---|
color_temp |
色温 |
ccm |
颜色矩阵 |
saturation |
饱和度 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_isp_attach_info¶
【说明】
ISP的attach信息。
【定义】
typedef struct {
ot_isp_hdr_info isp_hdr;
td_u32 iso;
td_u32 init_iso;
td_u8 sns_wdr_mode;
} ot_isp_attach_info;
【成员】
成员名称 |
描述 |
|---|---|
isp_hdr |
Hdr相关的配置信息 |
iso |
当前系统的iso信息 |
init_iso |
初始的iso信息 |
sns_wdr_mode |
Sensor的工作模式,指linear模式还是wdr模式 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_isp_colorgammut_info¶
【说明】
ISP的色域信息。
【定义】
typedef struct {
ot_color_gamut color_gamut;
} ot_isp_colorgammut_info;
【成员】
成员名称 |
描述 |
|---|---|
color_gamut |
颜色域信息 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_dng_rational¶
【说明】
定义DNG的无符号除法结构体。
【定义】
typedef struct {
td_u32 numerator;
td_u32 denominator;
} ot_dng_rational;
【成员】
成员名称 |
描述 |
|---|---|
numerator |
分子 |
denominator |
分母 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_dng_image_dynamic_info¶
【说明】
DNG格式的动态信息。
【定义】
typedef struct {
td_u32 black_level[OT_ISP_BAYER_CHN];
ot_dng_rational as_shot_neutral[OT_CFACOLORPLANE];
td_double ad_noise_profile[OT_DNG_NP_SIZE];
} ot_dng_image_dynamic_info;
【成员】
成员名称 |
描述 |
|---|---|
black_level |
黑电平 |
as_shot_neutral |
白平衡系数 |
ad_noise_profile |
噪声特性表 |
【注意事项】
获取到的black_level是12bit对应的黑电平。
【相关数据类型及接口】
无
OT_ISP_BAYER_CHN¶
【说明】
BAYER通道数。
【定义】
#define OT_ISP_BAYER_CHN 4
【成员】
无
【注意事项】
无
【相关数据类型及接口】
无
OT_CFACOLORPLANE¶
【说明】
滤色阵列的颜色分量。
【定义】
#define OT_CFACOLORPLANE 3
【成员】
无
【注意事项】
无
【相关数据类型及接口】
无
OT_DNG_NP_SIZE¶
【说明】
DNG NP大小。
【定义】
#define OT_DNG_NP_SIZE 6
【成员】
无
【注意事项】
无
【相关数据类型及接口】
无
系统控制数据类型¶
系统控制相关数据类型定义如下:
OT_MAX_BIND_DST_NUM:定义绑定目标的最大个数。
OT_MAX_VERSION_NAME_LEN:定义版本名称的最大长度。
OT_MAX_MOD_NAME_LEN:定义模块名称的最大长度。
OT_UNIQUE_ID_NUM:定义unique ID长度
ot_mpp_sys_cfg:定义MPP系统控制属性结构体。
ot_mpp_chn:定义模块设备通道结构体。
ot_mpp_bind_dst:定义MPP系统绑定目的信息结构体。
ot_mpp_version:定义MPP版本描述结构体。
ot_sys_virt_mem_info:定义虚拟内存信息结构体。
ot_sys_mem_info:定义mmz buffer的内存描述信息结构体。
ot_unique_id:定义unique ID结构体。
ot_scale_range_type:定义VPSS和VGS的缩放比例范围的枚举类型。
ot_coef_level:定义VPSS和VGS缩放系数等级的枚举类型。
ot_scale_range:定义VPSS和VGS的水平和垂直缩放比例范围的结构体。
ot_scale_coef_level:定义VPSS和VGS水平亮度、水平色度、垂直亮度、垂直色度的缩放系数等级的结构体。
ot_vb_pool_info:定义视频缓存池信息结构体。
ot_vb_cfg:定义视频缓存池属性结构体。
ot_vb_pool_cfg:定义视频缓存池属性结构体。
ot_vb_remap_mode:定义VB内核态虚拟地址映射模式。
ot_vb_common_pools_id:定义公共VB池ID的结构体。
ot_log_level_cfg:定义日志等级信息结构体。
ot_vi_vpss_mode_type:定义VI PIPE和VPSS组的工作模式。
ot_vi_vpss_mode:定义VI各个PIPE和VPSS各个组的工作模式。
ot_vi_video_mode:定义VI,VIDEO模式。
ot_ext_chn_src_type:定义扩展通道的图像来源。
ot_raw_frame_compress_param:定义VI模块RAW数据的压缩比。
OT_MAX_BIND_DST_NUM¶
【说明】
定义绑定目标的最大个数。
【定义】
#define OT_MAX_BIND_DST_NUM 64
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MAX_VERSION_NAME_LEN¶
【说明】
定义版本名称的最大长度。
【定义】
#define OT_MAX_VERSION_NAME_LEN 64
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MAX_MOD_NAME_LEN¶
【说明】
定义模块名称的最大长度。
【定义】
#define OT_MAX_MOD_NAME_LEN 16
【注意事项】
无。
【相关数据类型及接口】
无。
OT_UNIQUE_ID_NUM¶
【说明】
定义unique ID长度。
【定义】
#define OT_UNIQUE_ID_NUM 6
【注意事项】
无。
【相关数据类型及接口】
无。
ot_mpp_sys_cfg¶
【说明】
定义MPP系统控制属性结构体。
【定义】
typedef struct {
td_u32 align;
} ot_mpp_sys_cfg;
【成员】
成员名称 |
描述 |
|---|---|
align |
整个系统中使用图像的stride字节对齐数,保留功能,暂未生效。 取值范围:[0, 1024],其中0为自动模式,即使用系统默认的stride对齐。 静态属性。 |
【注意事项】
align 为0时stride对齐使用自动模式,对齐要求跟随系统。
align 为非0时使用指定的stride对齐。
当align 小于芯片要求的stride对齐时,系统分配buffer和计算stride还是以芯片要求stride对齐为准。
当align不等于芯片要求的stride对齐倍数时,系统分配buffer和计算stride向上对齐到芯片要求stride对齐的倍数。
例:align设置为48,芯片要求32对齐时,系统分配buffer和计算stride时使用64对齐。
【相关数据类型及接口】
ot_mpp_chn¶
【说明】
定义模块设备通道结构体。
【定义】
typedef struct {
ot_mod_id mod_id;
td_s32 dev_id;
td_s32 chn_id;
} ot_mpp_chn;
【成员】
成员名称 |
描述 |
|---|---|
mod_id |
模块号。 |
dev_id |
设备号。 |
chn_id |
通道号。 |
【注意事项】
无。
【相关数据类型及接口】
ot_mpp_bind_dst¶
【说明】
定义MPP系统绑定目的信息结构体。
【定义】
typedef struct {
td_u32 num;
ot_mpp_chn mpp_chn[OT_MAX_BIND_DST_NUM];
} ot_mpp_bind_dst;
【成员】
成员名称 |
描述 |
|---|---|
num |
通过SYS绑定的目的数目。 |
mpp_chn |
通过SYS绑定的目的模块通道信息结构体。 |
【注意事项】
无。
【相关数据类型及接口】
ot_mpp_version¶
【说明】
定义MPI版本描述结构体。
【定义】
typedef struct {
td_char version[OT_MAX_VERSION_NAME_LEN];
} ot_mpp_version;
【成员】
成员名称 |
描述 |
|---|---|
version |
版本描述字符串。 比如“OT_VERSION=V1.0.4.0” |
【注意事项】
无
【相关数据类型及接口】
ot_sys_virt_mem_info¶
【说明】
定义虚拟内存信息结构体。
【定义】
typedef struct {
td_phys_addr_t phys_addr;
td_bool is_cached;
} ot_sys_virt_mem_info;
【成员】
成员名称 |
描述 |
|---|---|
phys_addr |
虚拟地址对应物理地址。 |
is_cached |
是否为cached映射。 |
【注意事项】
无
【相关数据类型及接口】
ot_sys_mem_info¶
【说明】
定义mmz buffer的内存描述信息结构体。
【定义】
typedef struct {
td_phys_addr_t phys_addr;
td_u64 offset;
td_void *mem_handle;
} ot_sys_mem_info;
【成员】
成员名称 |
描述 |
|---|---|
phys_addr |
mmz buffer的起始物理地址。 |
offset |
当前查询的地址基于起始phys_addr的偏移。 |
mem_handle |
mmz buffer对应的handle。 |
【注意事项】
无
【相关数据类型及接口】
ot_unique_id¶
【说明】
定义unique ID结构体。
【定义】
typedef struct{
td_u32 id[OT_UNIQUE_ID_NUM];
} ot_unique_id;
【成员】
成员名称 |
描述 |
|---|---|
id |
unique ID,共OT_UNIQUE_ID_NUM个word长度。 |
【注意事项】
无
【相关数据类型及接口】
ot_scale_range_type¶
【说明】
定义VPSS和VGS的缩放比例范围的枚举类型。
【定义】
typedef enum {
OT_SCALE_RANGE_0 = 0, /* scale range < 8/64 */
OT_SCALE_RANGE_1, /* scale range >= 8/64 */
OT_SCALE_RANGE_2, /* scale range >= 10/64 */
OT_SCALE_RANGE_3, /* scale range >= 15/64 */
OT_SCALE_RANGE_4, /* scale range >= 19/64 */
OT_SCALE_RANGE_5, /* scale range >= 24/64 */
OT_SCALE_RANGE_6, /* scale range >= 29/64 */
OT_SCALE_RANGE_7, /* scale range >= 33/64 */
OT_SCALE_RANGE_8, /* scale range >= 35/64 */
OT_SCALE_RANGE_9, /* scale range >= 38/64 */
OT_SCALE_RANGE_10, /* scale range >= 42/64 */
OT_SCALE_RANGE_11, /* scale range >= 45/64 */
OT_SCALE_RANGE_12, /* scale range >= 48/64 */
OT_SCALE_RANGE_13, /* scale range >= 51/64 */
OT_SCALE_RANGE_14, /* scale range >= 53/64 */
OT_SCALE_RANGE_15, /* scale range >= 55/64 */
OT_SCALE_RANGE_16, /* scale range >= 57/64 */
OT_SCALE_RANGE_17, /* scale range >= 60/64 */
OT_SCALE_RANGE_18, /* scale range > 1 */
OT_SCALE_RANGE_BUTT,
} ot_scale_range_type;
【成员】
无
【注意事项】
无
【相关数据类型及接口】
ot_coef_level¶
【说明】
定义VPSS和VGS缩放系数等级的枚举类型。
【定义】
typedef enum {
OT_COEF_LEVEL_0 = 0, /* coefficient level 0 */
OT_COEF_LEVEL_1, /* coefficient level 1 */
OT_COEF_LEVEL_2, /* coefficient level 2 */
OT_COEF_LEVEL_3, /* coefficient level 3 */
OT_COEF_LEVEL_4, /* coefficient level 4 */
OT_COEF_LEVEL_5, /* coefficient level 5 */
OT_COEF_LEVEL_6, /* coefficient level 6 */
OT_COEF_LEVEL_7, /* coefficient level 7 */
OT_COEF_LEVEL_8, /* coefficient level 8 */
OT_COEF_LEVEL_9, /* coefficient level 9 */
OT_COEF_LEVEL_10, /* coefficient level 10 */
OT_COEF_LEVEL_11, /* coefficient level 11 */
OT_COEF_LEVEL_12, /* coefficient level 12 */
OT_COEF_LEVEL_13, /* coefficient level 13 */
OT_COEF_LEVEL_14, /* coefficient level 14 */
OT_COEF_LEVEL_15, /* coefficient level 15 */
OT_COEF_LEVEL_16, /* coefficient level 16 */
OT_COEF_LEVEL_17, /* coefficient level 17 */
OT_COEF_LEVEL_18, /* coefficient level 18 */
OT_COEF_LEVEL_BUTT,
} ot_coef_level;
【成员】
无
【注意事项】
无
【相关数据类型及接口】
ot_scale_range¶
【说明】
定义VPSS和VGS的水平和垂直缩放比例范围的结构体。
【定义】
typedef struct {
ot_scale_range_type hor;
ot_scale_range_type ver;
} ot_scale_range;
【成员】
成员名称 |
描述 |
|---|---|
hor |
水平缩放比例范围。 |
ver |
垂直缩放比例范围。 |
【注意事项】
无
【相关数据类型及接口】
ot_scale_coef_level¶
【说明】
定义VPSS和VGS水平亮度、水平色度、垂直亮度、垂直色度的缩放系数等级的结构体。
【定义】
typedef struct {
ot_coef_level hor_luma; /* horizontal luminance coefficient level */
ot_coef_level hor_chroma; /* horizontal chrominance coefficient level */
ot_coef_level ver_luma; /* vertical luminance coefficient level */
ot_coef_level ver_chroma; /* vertical chrominance coefficient level */
} ot_scale_coef_level;
【成员】
成员名称 |
描述 |
|---|---|
hor_luma |
水平亮度的缩放系数等级。 取值范围:[OT_COEF_LEVEL_0,OT_COEF_LEVEL_18] |
hor_chroma |
水平色度的缩放系数等级。 取值范围:[OT_COEF_LEVEL_0,OT_COEF_LEVEL_18] |
ver_luma |
垂直亮度的缩放系数等级。 取值范围:[OT_COEF_LEVEL_0,OT_COEF_LEVEL_18] |
ver_chroma |
垂直色度的缩放系数等级。 取值范围:[OT_COEF_LEVEL_0,OT_COEF_LEVEL_18] |
【注意事项】
各缩放比例下默认的缩放系数等级表,如表1所示。
表 1 各缩放比例下默认缩放参数等级表
缩放比例 |
水平亮度 |
水平色度 |
垂直亮度 |
垂直色度 |
|---|---|---|---|---|
SR_0 |
CL_0 |
CL_0 |
CL_0 |
CL_0 |
SR_1 |
CL_1 |
CL_1 |
CL_1 |
CL_1 |
SR_2 |
CL_2 |
CL_2 |
CL_2 |
CL_2 |
SR_3 |
CL_3 |
CL_3 |
CL_3 |
CL_3 |
SR_4 |
CL_6 |
CL_4 |
CL_4 |
CL_6 |
SR_5 |
CL_6 |
CL_5 |
CL_5 |
CL_5 |
SR_6 |
CL_8 |
CL_12 |
CL_9 |
CL_12 |
SR_7 |
CL_8 |
CL_12 |
CL_9 |
CL_12 |
SR_8 |
CL_8 |
CL_12 |
CL_9 |
CL_12 |
SR_9 |
CL_9 |
CL_9 |
CL_9 |
CL_9 |
SR_10 |
CL_10 |
CL_10 |
CL_10 |
CL_10 |
SR_11 |
CL_11 |
CL_11 |
CL_11 |
CL_11 |
SR_12 |
CL_12 |
CL_12 |
CL_12 |
CL_12 |
SR_13 |
CL_13 |
CL_13 |
CL_13 |
CL_13 |
SR_14 |
CL_14 |
CL_14 |
CL_14 |
CL_14 |
SR_15 |
CL_15 |
CL_15 |
CL_15 |
CL_15 |
SR_16 |
CL_16 |
CL_16 |
CL_16 |
CL_16 |
SR_17 |
CL_17 |
CL_17 |
CL_17 |
CL_17 |
SR_18 |
CL_18 |
CL_18 |
CL_18 |
CL_18 |
注:(SR_x表示OT_ SCALE_RANGE_x,CL_x表示OT_ COEF_LEVEL_x)
【相关数据类型及接口】
ot_vb_pool_info¶
【说明】
定义视频缓存池信息结构体。
【定义】
typedef struct {
td_u32 blk_cnt;
td_u64 blk_size;
td_u64 pool_size;
td_phys_addr_t pool_phy_addr;
ot_vb_remap_mode remap_mode;
} ot_vb_pool_info;
【成员】
成员名称 |
描述 |
|---|---|
blk_cnt |
每个缓存池的缓存块个数。 |
blk_size |
缓存块大小,以Byte为单位。 |
pool_size |
缓存池大小,以Byte为单位。 |
pool_phy_addr |
缓存池首地址。 |
remap_mode |
VB的内核态虚拟地址映射模式。 |
【注意事项】
无
【相关数据类型及接口】
无
ot_vb_cfg¶
【说明】
定义视频缓存池属性结构体。
【定义】
typedef struct {
td_u32 max_pool_cnt;
ot_vb_pool_cfg common_pool[OT_VB_MAX_COMMON_POOLS];
} ot_vb_cfg;
【成员】
成员名称 |
描述 |
|---|---|
max_pool_cnt |
整个系统中可容纳的缓存池个数。 取值范围:(0, OT_VB_MAX_POOLS] 静态属性。 保留,目前内部固定取值OT_VB_MAX_POOLS。 |
common_pool |
公共缓存池属性结构体。 静态属性。 |
【注意事项】
blk_size等于0或blk_cnt等于0,则对应的缓存池不会被创建。
建议整个结构体先memset为0再按需赋值。
【相关数据类型及接口】
ot_vb_pool_cfg¶
【说明】
定义视频缓存池属性结构体。
【定义】
typedef struct {
td_u64 blk_size;
td_u32 blk_cnt;
ot_vb_remap_mode remap_mode;
td_char mmz_name[OT_MAX_MMZ_NAME_LEN];
} ot_vb_pool_cfg;
【成员】
成员名称 |
描述 |
|---|---|
blk_size |
缓存块大小,以Byte为单位。 |
blk_cnt |
每个缓存池的缓存块个数。 取值范围:[0, 10240] |
remap_mode |
VB的内核态虚拟地址映射模式。 |
mmz_name |
当前缓存池从哪个MMZ区域分配内存。 |
【注意事项】
每个缓存块的大小blk_size应根据当前图像宽高、像素格式、数据位宽、是否压缩等来计算。详细计算方法请参见表1和代码ot_buffer.h里面各种格式的图像存储计算公式。
分配VB时会对blk_size进行256对齐操作。
该缓存池是从空闲MMZ内存中分配,一个缓存池包含若干个大小相同的缓存块。如果该缓存池的大小超过了保留内存中的空闲空间,则创建缓存池会失败。
用户需保证输入的DDR名字已经存在,如果输入不存在DDR的名字,会造成分不到内存。如果数组mmz_name 被memset为0则表示在没有命名的DDR中创建缓存池。
用户需保证输入的blk_cnt范围合法,如果输入blk_cnt超出范围,创建缓存池会失败。
【相关数据类型及接口】
ot_vb_remap_mode¶
【说明】
定义VB内核态虚拟地址映射模式。
【定义】
typedef enum {
OT_VB_REMAP_MODE_NONE = 0,
OT_VB_REMAP_MODE_NOCACHE = 1,
OT_VB_REMAP_MODE_CACHED = 2,
OT_VB_REMAP_MODE_BUTT
} ot_vb_remap_mode;
【成员】
成员名称 |
描述 |
|---|---|
OT_VB_REMAP_MODE_NONE |
VB不映射内核态虚拟地址。 |
OT_VB_REMAP_MODE_NOCACHE |
VB映射nocache属性的内核态虚拟地址。 |
OT_VB_REMAP_MODE_CACHED |
VB映射cached属性的内核态虚拟地址。 |
【注意事项】
无
【相关数据类型及接口】
无
ot_vb_common_pools_id¶
【说明】
定义公共VB池ID的结构体。
【定义】
typedef struct {
td_u32 pool_cnt;
ot_vb_pool pool[OT_VB_MAX_COMMON_POOLS];
} ot_vb_common_pools_id;
【成员】
成员名称 |
描述 |
|---|---|
pool_cnt |
整个系统中公共VB池的个数。 取值范围:(0, OT_VB_MAX_POOLS] |
pool |
公共VB池ID号的数组。 |
【注意事项】
无。
【相关数据类型及接口】
ot_log_level_cfg¶
【说明】
定义日志等级信息结构体。
【定义】
typedef struct {
ot_mod_id mod_id;
td_s32 level;
td_char mod_name[OT_MAX_MOD_NAME_LEN];
} ot_log_level_cfg;
【成员】
成员名称 |
描述 |
|---|---|
mod_id |
模块的ID。 |
level |
日志等级。 |
mod_name |
模块的名字。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vi_vpss_mode_type¶
【说明】
定义VI PIPE和VPSS组的工作模式。
【定义】
typedef enum {
OT_VI_OFFLINE_VPSS_OFFLINE = 0,
OT_VI_OFFLINE_VPSS_ONLINE,
OT_VI_ONLINE_VPSS_OFFLINE,
OT_VI_ONLINE_VPSS_ONLINE,
OT_VI_PARALLEL_VPSS_OFFLINE,
OT_VI_PARALLEL_VPSS_PARALLEL,
OT_VI_VPSS_MODE_BUTT
} ot_vi_vpss_mode_type;
【成员】
成员名称 |
描述 |
|---|---|
OT_VI_OFFLINE_VPSS_OFFLINE |
VI离线,VPSS离线。 |
OT_VI_OFFLINE_VPSS_ONLINE |
VI离线,VPSS在线。 |
OT_VI_ONLINE_VPSS_OFFLINE |
VI在线,VPSS离线。 |
OT_VI_ONLINE_VPSS_ONLINE |
VI在线,VPSS在线。 |
OT_VI_PARALLEL_VPSS_OFFLINE |
VI并行,VPSS离线。 |
OT_VI_PARALLEL_VPSS_PARALLEL |
VI并行,VPSS并行。 |
【注意事项】
OT_VI_OFFLINE_VPSS_ONLINE,OT_VI_ONLINE_VPSS_ONLINE模式下VI PIPE编号与VPSS GROUP号一一对应,数据从VI PIPE流动到VPSS GROUP,不需要软件设定绑定关系。
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无
ot_vi_vpss_mode¶
【说明】
定义VI各个PIPE和VPSS各个组的工作模式。
【定义】
typedef struct {
ot_vi_vpss_mode_type mode[OT_VI_MAX_PIPE_NUM];
} ot_vi_vpss_mode;
【成员】
成员名称 |
描述 |
|---|---|
mode |
VI各个PIPE和VPSS各个组的工作模式。 OT_VI_MAX_PIPE_NUM具体请参考“视频输入”章节。 |
【注意事项】
SS928V100只支持OT_VI_OFFLINE_VPSS_OFFLINE,OT_VI_OFFLINE_VPSS_ONLINE,OT_VI_ONLINE_VPSS_OFFLINE,OT_VI_ONLINE_VPSS_ONLINE四种模式。
当设置OT_VI_OFFLINE_VPSS_ONLINE、OT_VI_ONLINE_VPSS_ONLINE时,对应VI PIPE pipe_id和VPSS组 grp_id必须保持一致。
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
ot_vi_video_mode¶
【说明】
定义VI,VIDEO模式。
【定义】
typedef enum {
OT_VI_VIDEO_MODE_NORM = 0,
OT_VI_VIDEO_MODE_ADVANCED,
OT_VI_VIDEO_MODE_BUTT
} ot_vi_video_mode;
【成员】
成员名称 |
描述 |
|---|---|
OT_VI_VIDEO_MODE_NORM |
普通模式。 |
OT_VI_VIDEO_MODE_ADVANCED |
高级模式。 |
【注意事项】
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
ot_ext_chn_src_type¶
【说明】
定义扩展通道的图像来源。
【定义】
typedef enum {
OT_EXT_CHN_SRC_TYPE_TAIL = 0,
OT_EXT_CHN_SRC_TYPE_BEFORE_FISHEYE,
OT_EXT_CHN_SRC_TYPE_HEAD,
OT_EXT_CHN_SRC_TYPE_BUTT
} ot_ext_chn_src_type;
【成员】
成员名称 |
描述 |
|---|---|
OT_EXT_CHN_SRC_TYPE_TAIL |
扩展通道的图像来自物理通道后处理(DIS,LDC,SPREAD,CoverEx,LUMA,OVERLAYEx,Fisheye等)后的图像。 |
OT_EXT_CHN_SRC_TYPE_BEFORE_FISHEYE |
扩展通道的图像来自物理通道后处理FISHEYE前的图像。 |
OT_EXT_CHN_SRC_TYPE_HEAD |
扩展通道的图像来自物理通道后处理(DIS,LDC,SPREAD等)前的图像。 |
【注意事项】
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无
ot_raw_frame_compress_param¶
【说明】
定义VI模块RAW数据的压缩比。
【定义】
typedef struct {
td_u32 comp_ratio_10_bit;
td_u32 comp_ratio_12_bit;
td_u32 comp_ratio_14_bit;
} ot_raw_frame_compress_param;
【成员】
成员名称 |
描述 |
|---|---|
comp_ratio_10_bit |
VI 10bit RAW数据的压缩比。 |
comp_ratio_12_bit |
VI 12bit RAW数据的压缩比。 |
comp_ratio_14_bit |
VI 14bit RAW数据的压缩比。 |
【解决方案差异】
解决方案类型 |
压缩比范围 |
|---|---|
SS928V100 |
comp_ratio_10_bit:范围[1000, 4500]:默认值2000 comp_ratio_12_bit:范围[1000, 3700]:默认值2000 comp_ratio_14_bit:范围[1000, 3300]:默认值2000 |
【注意事项】
这里的压缩比是放大了1000倍,即压缩比=(输入大小/输出大小)*1000。
当压缩比发生变化的时候,所需要的VB大小是不一样的,可以通过ot_common_get_pic_buf_cfg函数计算VB大小。
当设置的压缩比超过默认值时,由于压缩算法的原因,可能会导致视觉上可见的损失,因而,为了保证压缩效果,建议用户设置的值不要超过默认值。
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
视频公共类型¶
视频公共数据类型定义如下:
OT_GPS_EXPRESS_NUM:定义GPS经纬度数据个数。
OT_GPS_GRP_NUM:定义GPS经纬度维度。
OT_MAX_COLOR_COMPONENT:最大颜色分量个数。
OT_MAX_PRIVATE_DATA_NUM:最大私有数据数目。
OT_MAX_USER_DATA_NUM:最大用户数据数目。
OT_ISP_WB_GAIN_NUM:WB颜色通道数。
OT_ISP_CAP_CCM_NUM:颜色校正矩阵大小。
ot_aspect_ratio_type:定义幅型比类型。
ot_aspect_ratio:定义幅型比信息。
ot_pixel_format:定义像素格式类型。
ot_video_field:定义视频图像帧场类型。
ot_color_gamut:定义色域范围枚举。
ot_dynamic_range:定义动态范围枚举。
ot_data_bit_width:定义数据位宽枚举。
ot_video_supplement_misc:定义视频扩展补充信息结构体。
ot_video_supplement:定义视频图像帧补充信息。
ot_video_frame:定义视频原始图像帧结构体。
ot_video_frame_info:定义视频图像帧信息结构体。
ot_vb_calc_cfg:定义视频图像帧各部分数据大小配置信息结构体。
ot_bmp:定义位图图像信息结构。
ot_video_format:定义视频格式结构体。
ot_compress_mode:定义视频压缩数据格式结构体。
ot_vb_supplement_cfg:定义VB辅助信息结构体。
ot_gps_info:定义GPS信息结构体。
ot_frame_interrupt_type:定义帧中断类型的枚举。
ot_frame_interrupt_attr:定义帧中断属性结构体。
ot_data_rate:定义设备的速率的枚举。
ot_wdr_mode:定义WDR工作模式的枚举。
ot_isp_config_info:定义ISP配置信息结构体。
ot_low_delay_info:定义低延时信息结构体。
ot_schedule_mode:定义调度模式的枚举。
ot_scale_coef_type:定义缩放系数类型的枚举。
OT_GPS_EXPRESS_NUM¶
【说明】
定义GPS经纬度数据个数。
【定义】
#define OT_GPS_EXPRESS_NUM 3
【注意事项】
无。
【相关数据类型及接口】
无。
OT_GPS_GRP_NUM¶
【说明】
定义GPS经纬度维度。
【定义】
#define OT_GPS_GRP_NUM 2
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MAX_COLOR_COMPONENT¶
【说明】
最大颜色分量个数。
【定义】
#define OT_MAX_COLOR_COMPONENT 2
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MAX_PRIVATE_DATA_NUM¶
【说明】
最大私有数据数目。
【定义】
#define OT_MAX_PRIVATE_DATA_NUM 1
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MAX_USER_DATA_NUM¶
【说明】
最大用户数据数目。
【定义】
#define OT_MAX_USER_DATA_NUM 2
【注意事项】
无。
【相关数据类型及接口】
无。
OT_ISP_WB_GAIN_NUM¶
【说明】
WB颜色通道数。
【定义】
#define OT_ISP_WB_GAIN_NUM 4
【注意事项】
无。
【相关数据类型及接口】
无。
OT_ISP_CAP_CCM_NUM¶
【说明】
颜色校正矩阵大小。
【定义】
#define OT_ISP_CAP_CCM_NUM 9
【注意事项】
无。
【相关数据类型及接口】
无。
ot_aspect_ratio_type¶
【说明】
定义幅型比类型。
【定义】
typedef enum {
OT_ASPECT_RATIO_NONE = 0, /* full screen */
OT_ASPECT_RATIO_AUTO = 1, /* ratio no change, 1:1*/
OT_ASPECT_RATIO_MANUAL = 2, /* ratio manual set */
OT_ASPECT_RATIO_BUTT
} ot_aspect_ratio_type;
【成员】
成员名称 |
描述 |
|---|---|
OT_ASPECT_RATIO_NONE |
无幅型比。 |
OT_ASPECT_RATIO_AUTO |
自动模式。 |
OT_ASPECT_RATIO_MANUAL |
手动模式。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_aspect_ratio¶
【说明】
定义幅型比信息。
【定义】
typedef struct {
ot_aspect_ratio_type mode; /* aspect ratio mode: none/auto/manual */
td_u32 bg_color; /* background color, RGB 888 */
ot_rect video_rect; /* valid in ASPECT_RATIO_MANUAL mode */
} ot_aspect_ratio;
【成员】
成员名称 |
描述 |
|---|---|
mode |
幅型比类型。 |
bg_color |
幅型比背景颜色。 |
video_rect |
幅型比视频区域。 |
【注意事项】
无。
【相关数据类型及接口】
ot_vo_chn_param
ot_pixel_format¶
【说明】
定义像素格式类型。
【定义】
typedef enum {
OT_PIXEL_FORMAT_RGB_444 = 0,
OT_PIXEL_FORMAT_RGB_555,
OT_PIXEL_FORMAT_RGB_565,
OT_PIXEL_FORMAT_RGB_888,
OT_PIXEL_FORMAT_BGR_444,
OT_PIXEL_FORMAT_BGR_555,
OT_PIXEL_FORMAT_BGR_565,
OT_PIXEL_FORMAT_BGR_888,
OT_PIXEL_FORMAT_ARGB_1555,
OT_PIXEL_FORMAT_ARGB_4444,
OT_PIXEL_FORMAT_ARGB_8565,
OT_PIXEL_FORMAT_ARGB_8888,
OT_PIXEL_FORMAT_ARGB_2BPP,
OT_PIXEL_FORMAT_ARGB_CLUT2,
OT_PIXEL_FORMAT_ARGB_CLUT4,
OT_PIXEL_FORMAT_ABGR_1555,
OT_PIXEL_FORMAT_ABGR_4444,
OT_PIXEL_FORMAT_ABGR_8565,
OT_PIXEL_FORMAT_ABGR_8888,
OT_PIXEL_FORMAT_RGB_BAYER_8BPP,
OT_PIXEL_FORMAT_RGB_BAYER_10BPP,
OT_PIXEL_FORMAT_RGB_BAYER_12BPP,
OT_PIXEL_FORMAT_RGB_BAYER_14BPP,
OT_PIXEL_FORMAT_RGB_BAYER_16BPP,
OT_PIXEL_FORMAT_YVU_PLANAR_422,
OT_PIXEL_FORMAT_YVU_PLANAR_420,
OT_PIXEL_FORMAT_YVU_PLANAR_444,
OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422,
OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420,
OT_PIXEL_FORMAT_YVU_SEMIPLANAR_444,
OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422,
OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420,
OT_PIXEL_FORMAT_YUV_SEMIPLANAR_444,
OT_PIXEL_FORMAT_YUYV_PACKAGE_422,
OT_PIXEL_FORMAT_YVYU_PACKAGE_422,
OT_PIXEL_FORMAT_UYVY_PACKAGE_422,
OT_PIXEL_FORMAT_VYUY_PACKAGE_422,
OT_PIXEL_FORMAT_YYUV_PACKAGE_422,
OT_PIXEL_FORMAT_YYVU_PACKAGE_422,
OT_PIXEL_FORMAT_UVYY_PACKAGE_422,
OT_PIXEL_FORMAT_VUYY_PACKAGE_422,
OT_PIXEL_FORMAT_VY1UY0_PACKAGE_422,
OT_PIXEL_FORMAT_YUV_400,
OT_PIXEL_FORMAT_UV_420,
/* SVP data format */
OT_PIXEL_FORMAT_BGR_888_PLANAR,
OT_PIXEL_FORMAT_HSV_888_PACKAGE,
OT_PIXEL_FORMAT_HSV_888_PLANAR,
OT_PIXEL_FORMAT_LAB_888_PACKAGE,
OT_PIXEL_FORMAT_LAB_888_PLANAR,
OT_PIXEL_FORMAT_S8C1,
OT_PIXEL_FORMAT_S8C2_PACKAGE,
OT_PIXEL_FORMAT_S8C2_PLANAR,
OT_PIXEL_FORMAT_S8C3_PLANAR,
OT_PIXEL_FORMAT_S16C1,
OT_PIXEL_FORMAT_U8C1,
OT_PIXEL_FORMAT_U16C1,
OT_PIXEL_FORMAT_S32C1,
OT_PIXEL_FORMAT_U32C1,
OT_PIXEL_FORMAT_U64C1,
OT_PIXEL_FORMAT_S64C1,
OT_PIXEL_FORMAT_BUTT
} ot_pixel_format;
【成员】
无。
【注意事项】
无。
【相关数据类型及接口】
ot_rgn_overlayex_attr
ot_rgn_canvas_info
ot_vdec_pic_param
ot_vgs_osd
ot_vi_chn_attr
ot_video_frame
ot_vo_video_layer_attr
ot_bmp
ot_vo_wbc_attr
ot_vpss_grp_attr
ot_vpss_chn_attr
ot_mcf_grp_attr
ot_mcf_chn_attr
ot_video_field¶
【说明】
定义视频图像帧场类型。
【定义】
typedef enum {
OT_VIDEO_FIELD_TOP = 1, /* even field */
OT_VIDEO_FIELD_BOTTOM = 2, /* odd field */
OT_VIDEO_FIELD_INTERLACED = 3, /* two interlaced fields */
OT_VIDEO_FIELD_FRAME = 4, /* frame */
OT_VIDEO_FIELD_BUTT
} ot_video_field;
【成员】
成员名称 |
描述 |
|---|---|
OT_VIDEO_FIELD_TOP |
顶场类型。 |
OT_VIDEO_FIELD_BOTTOM |
底场类型。 |
OT_VIDEO_FIELD_INTERLACED |
两场间插类型。 |
OT_VIDEO_FIELD_FRAME |
帧类型。 |
【注意事项】
无。
【相关数据类型及接口】
ot_color_gamut¶
【说明】
定义色域范围枚举。
【定义】
typedef enum {
OT_COLOR_GAMUT_BT601 = 0,
OT_COLOR_GAMUT_BT709,
OT_COLOR_GAMUT_BT2020,
OT_COLOR_GAMUT_USER,
OT_COLOR_GAMUT_BUTT
} ot_color_gamut;
【成员】
成员名称 |
描述 |
|---|---|
OT_COLOR_GAMUT_BT601 |
BT601色域 |
OT_COLOR_GAMUT_BT709 |
BT709色域。 |
OT_COLOR_GAMUT_BT2020 |
BT2020色域。 |
OT_COLOR_GAMUT_USER |
用户自定义的色域,非标准色域。 |
【注意事项】
各个色域范围的绿、蓝、红、白点坐标如下:
ColorGamut |
Primary |
|||
|---|---|---|---|---|
Green |
Blue |
Reg |
White |
|
BT601 |
(0.29, 0.60) |
(0.15, 0.06) |
(0.64, 0.33) |
(0.3127, 0.3290) |
BT709 |
(0.300, 0.600) |
(0.150, 0.060) |
(0.640, 0.330) |
(0.3127, 0.3290) |
BT2020 |
(0.170, 0.797) |
(0.131, 0.046) |
(0.708, 0.292) |
(0.3127, 0.3290) |
SS528V100/SS524V100支持BT601、BT709以及用户自定义色域,不支持BT2020。
【相关数据类型及接口】
无。
ot_dynamic_range¶
【说明】
定义动态范围枚举。
【定义】
typedef enum {
OT_DYNAMIC_RANGE_SDR8 = 0,
OT_DYNAMIC_RANGE_SDR10,
OT_DYNAMIC_RANGE_HDR10,
OT_DYNAMIC_RANGE_HLG,
OT_DYNAMIC_RANGE_SLF,
OT_DYNAMIC_RANGE_XDR,
OT_DYNAMIC_RANGE_BUTT
} ot_dynamic_range;
【成员】
成员名称 |
描述 |
|---|---|
OT_DYNAMIC_RANGE_SDR8 |
8bit数据的标准动态范围。 |
OT_DYNAMIC_RANGE_SDR10 |
10bit数据的标准动态范围。 |
OT_DYNAMIC_RANGE_HDR10 |
10bit数据的高动态范围。 |
OT_DYNAMIC_RANGE_HLG |
10bit数据的高动态范围。 |
OT_DYNAMIC_RANGE_SLF |
暂时无效。 |
OT_DYNAMIC_RANGE_XDR |
10bit数据,算法处理的一个中间类型数据,用户无需关心。 |
【注意事项】
各个动态范围对应的曲线如下:
Dynamic Range |
Transfer Characteristic |
|---|---|
SDR8/SDR10 |
V = α * Lc0.45 − (α − 1) for 1 >= Lc >= β V = 4.500 * Lc for β > Lc >= 0 |
HDR10 |
V = ( ( c1 + c2 * Lc n ) ÷ ( 1 + c3 * Lc n ) )m for all values of Lc c1 = c3 − c2 + 1 = 3424 ÷ 4096 = 0.8359375 c2 = 32 * 2413 ÷ 4096 = 18.8515625 c3 = 32 * 2392 ÷ 4096 = 18.6875 m = 128 * 2523 ÷ 4096 = 78.84375 n = 0.25 * 2610 ÷ 4096 = 0.1593017578125 for which Lc equal to 1 for peak white is ordinarily intended to correspond to a reference output luminance level of 10000 candelas per square metre |
HLG |
V = a * Ln( 12 * Lc − b ) + c for 1 >= Lc > 1 ÷ 12 V = Sqrt( 3 ) * Lc0.5 for 1 ÷ 12 >= Lc >= 0 a = 0.17883277, b = 0.28466892, c = 0.55991073 |
SS528V100/SS524V100/SS928V100仅支持SDR8。
【相关数据类型及接口】
无。
ot_data_bit_width¶
【说明】
定义数据位宽枚举。
【定义】
typedef enum {
OT_DATA_BIT_WIDTH_8 = 0,
OT_DATA_BIT_WIDTH_10,
OT_DATA_BIT_WIDTH_12,
OT_DATA_BIT_WIDTH_14,
OT_DATA_BIT_WIDTH_16,
OT_DATA_BIT_WIDTH_BUTT
} ot_data_bit_width;
【成员】
成员名称 |
描述 |
|---|---|
OT_DATA_BIT_WIDTH_8 |
8 bit数据位宽。 |
OT_DATA_BIT_WIDTH_10 |
10 bit数据位宽。 |
OT_DATA_BIT_WIDTH_12 |
12 bit数据位宽。 |
OT_DATA_BIT_WIDTH_14 |
14 bit数据位宽。 |
OT_DATA_BIT_WIDTH_16 |
16 bit数据位宽。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_video_supplement_misc¶
【说明】
定义视频扩展补充信息结构体。
【定义】
typedef struct {
td_s16 offset_top;
td_s16 offset_left;
td_s16 offset_bottom;
td_s16 offset_right;
td_u32 max_luma;
td_u32 min_luma;
td_u64 private_data[OT_MAX_PRIVATE_DATA_NUM];
} ot_video_supplement_misc;
【成员】
成员名称 |
描述 |
|---|---|
offset_top |
图像顶部剪裁宽度。 |
offset_left |
图像左侧剪裁宽度。 |
offset_bottom |
图像底部剪裁宽度。 |
offset_right |
图像右侧剪裁宽度。 |
max_luma |
显示图像的最大亮度。 |
min_luma |
显示图像的最小亮度。 |
private_data |
私有数据。 |
【注意事项】
无。
【相关数据类型及接口】
ot_video_supplement¶
【说明】
定义视频图像帧补充信息。
【定义】
typedef struct {
td_phys_addr_t misc_info_phys_addr;
td_phys_addr_t jpeg_dcf_phys_addr;
td_phys_addr_t isp_info_phys_addr;
td_phys_addr_t low_delay_phys_addr;
td_phys_addr_t bnr_rnt_phys_addr;
td_phys_addr_t motion_data_phys_addr;
td_phys_addr_t frame_dng_phys_addr;
td_void* ATTRIBUTE misc_info_virt_addr;
td_void* ATTRIBUTE jpeg_dcf_virt_addr;
td_void* ATTRIBUTE isp_info_virt_addr;
td_void* ATTRIBUTE low_delay_virt_addr;
td_void* ATTRIBUTE bnr_mot_virt_addr;
td_void* ATTRIBUTE motion_data_virt_addr;
td_void* ATTRIBUTE frame_dng_virt_addr;
} ot_video_supplement;
【成员】
成员名称 |
描述 |
|---|---|
misc_info_phys_addr |
视频扩展信息的物理地址 |
jpeg_dcf_phys_addr |
Jpeg DCF信息的物理地址。 |
isp_info_phys_addr |
ISP辅助信息的物理地址。 |
low_delay_phys_addr |
低延时信息物理地址。 |
bnr_rnt_phys_addr |
BNR信息物理地址。 |
motion_data_phys_addr |
运动数据物理地址。 |
frame_dng_phys_addr |
DNG信息的物理地址。 |
misc_info_virt_addr |
视频扩展信息的虚拟地址 |
jpeg_dcf_virt_addr |
Jpeg DCF信息的虚拟地址 内核态虚拟地址。 |
isp_info_virt_addr |
ISP辅助信息的内核态虚拟地址。 内核态虚拟地址。 |
low_delay_virt_addr |
低延时信息虚拟地址。 内核态虚拟地址。 |
bnr_mot_virt_addr |
BNR信息虚拟地址。 内核态虚拟地址。 |
motion_data_virt_addr |
运动数据虚拟地址。 内核态虚拟地址。 |
frame_dng_virt_addr |
DNG格式信息的虚拟地址。 内核态虚拟地址。 |
【注意事项】
无。
【相关数据类型及接口】
ot_video_frame¶
【说明】
定义视频原始图像帧结构。
【定义】
typedef struct {
td_u32 width;
td_u32 height;
ot_video_field field;
ot_pixel_format pixel_format;
ot_video_format video_format;
ot_compress_mode compress_mode;
ot_dynamic_range dynamic_range;
ot_color_gamut color_gamut;
td_u32 header_stride[OT_MAX_COLOR_COMPONENT];
td_u32 stride[OT_MAX_COLOR_COMPONENT];
td_phys_addr_t header_phys_addr[OT_MAX_COLOR_COMPONENT];
td_phys_addr_t phys_addr[OT_MAX_COLOR_COMPONENT];
td_void* ATTRIBUTE header_virt_addr[OT_MAX_COLOR_COMPONENT];
td_void* ATTRIBUTE virt_addr[OT_MAX_COLOR_COMPONENT];
td_u32 time_ref;
td_u64 pts;
td_u64 user_data[OT_MAX_USER_DATA_NUM];
td_u32 frame_flag; /* frame_flag, can be OR operation. */
ot_video_supplement supplement;
} ot_video_frame;
【成员】
成员名称 |
描述 |
|---|---|
width |
图像宽度。 |
height |
图像高度。 |
field |
帧场模式。 |
pixel_format |
视频图像像素格式。 |
video_format |
视频图像格式。 |
compress_mode |
视频压缩模式。 |
dynamic_range |
动态范围。 |
color_gamut |
色域范围。 |
header_stride |
图像压缩头跨距。 |
stride |
图像数据跨距。 |
header_phys_addr |
压缩头物理地址 |
header_virt_addr |
压缩头虚拟地址。 内核态虚拟地址。 |
phys_addr |
图像数据物理地址。 |
virt_addr |
图像数据虚拟地址。 内核态虚拟地址。 |
time_ref |
图像帧序列号。 |
pts |
图像时间戳。 |
user_data |
用户数据 |
frame_flag |
当前帧的标记,使用ot_frame_flag里面的值标记,可以按位或操作。 |
supplement |
图像的补充信息。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_video_frame_info¶
【说明】
定义视频图像帧信息结构体。
【定义】
typedef struct {
ot_video_frame video_frame;
td_u32 pool_id;
ot_mod_id mod_id;
} ot_video_frame_info;
【成员】
成员名称 |
描述 |
|---|---|
video_frame |
视频图像帧。 |
pool_id |
视频缓存池ID。 |
mod_id |
当前帧数据是由哪一个模块写出的。 |
【注意事项】
无。
【相关数据类型及接口】
ot_vb_calc_cfg¶
【说明】
定义视频图像帧各部分数据大小配置信息结构体。
【定义】
typedef struct {
td_u32 vb_size;
td_u32 head_stride;
td_u32 head_size;
td_u32 head_y_size;
td_u32 main_stride;
td_u32 main_size;
td_u32 main_y_size;
} ot_vb_calc_cfg;
【成员】
成员名称 |
描述 |
|---|---|
vb_size |
视频图像帧总大小。 |
head_stride |
视频图像帧压缩头stride。 |
head_size |
视频图像帧压缩头总大小。 |
head_y_size |
视频图像帧亮度压缩头大小 |
main_stride |
视频图像帧主体数据stride |
main_size |
视频图像帧主体数据总大小 |
main_y_size |
视频图像帧主体数据亮度大小 |
【注意事项】
无。
【相关数据类型及接口】
ot_bmp¶
【说明】
定义位图图像信息结构。
【定义】
typedef struct {
ot_pixel_format pixel_format; /* bitmap's pixel format */
td_u32 width; /* bitmap's width */
td_u32 height; /* bitmap's height */
td_void* ATTRIBUTE data; /* address of bitmap's data */
} ot_bmp;
【成员】
成员名称 |
描述 |
|---|---|
pixel_format |
位图像素格式。 |
width |
位图宽度。 |
height |
位图高度。 |
data |
位图数据。 用户态虚拟地址。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_video_format¶
【说明】
定义视频格式结构体。
【定义】
typedef enum {
OT_VIDEO_FORMAT_LINEAR = 0, /* nature video line */
OT_VIDEO_FORMAT_TILE_64x16, /* tile cell: 64pixel x 16line */
OT_VIDEO_FORMAT_TILE_16x8, /* tile cell: 16pixel x 8line */
OT_VIDEO_FORMAT_BUTT
} ot_video_format;
【成员】
成员名称 |
描述 |
|---|---|
OT_VIDEO_FORMAT_LINEAR |
线性存储的视频格式。 |
OT_VIDEO_FORMAT_TILE_64x16 |
TILE格式存储的视频格式,其中tile的块大小为64像素宽,16行像素高。 |
OT_VIDEO_FORMAT_TILE_16x8 |
TILE格式存储的视频格式,其中tile的块大小为16像素宽,8行像素高。 |
【注意事项】
无。
ot_compress_mode¶
【说明】
定义视频压缩数据格式结构体。
【定义】
typedef enum {
OT_COMPRESS_MODE_NONE = 0,
OT_COMPRESS_MODE_SEG,
OT_COMPRESS_MODE_SEG_COMPACT,
OT_COMPRESS_MODE_TILE,
OT_COMPRESS_MODE_LINE,
OT_COMPRESS_MODE_FRAME,
OT_COMPRESS_MODE_BUTT
} ot_compress_mode;
【成员】
成员名称 |
描述 |
|---|---|
OT_COMPRESS_MODE_NONE |
非压缩的视频格式。 |
OT_COMPRESS_MODE_SEG |
段压缩的视频格式,按256 bytes为一段进行压缩。 |
OT_COMPRESS_MODE_SEG_COMPACT |
紧凑段压缩的视频格式,按256 bytes为一段进行紧凑压缩。 |
OT_COMPRESS_MODE_TILE |
Tile压缩的视频格式,按照Tile为一段进行压缩。 |
OT_COMPRESS_MODE_LINE |
行压缩的视频格式,按照一行为一段进行压缩。 |
OT_COMPRESS_MODE_FRAME |
帧压缩的视频格式,以一帧为单位进行压缩。 |
【注意事项】
无。
ot_vb_supplement_cfg¶
【说明】
定义VB附加信息结构体。
【定义】
typedef struct {
td_u32 supplement_cfg;
} ot_vb_supplement_cfg;
【成员】
成员名称 |
描述 |
|---|---|
supplement_cfg |
附加信息控制。 |
【注意事项】
当前支持5种附加信息,具体请参考ss_mpi_vb_set_supplement_cfg接口描述。
【相关数据类型及接口】
ot_gps_info¶
【说明】
定义GPS信息结构体。
【定义】
typedef struct {
td_char gps_latitude_ref;
td_u32 gps_latitude[OT_GPS_EXPRESS_NUM][OT_GPS_GRP_NUM];
td_char gps_longitude_ref;
td_u32 gps_longitude[OT_GPS_EXPRESS_NUM][OT_GPS_GRP_NUM];
td_u8 gps_altitude_ref;
td_u32 gps_altitude[OT_GPS_GRP_NUM];
} ot_gps_info;
【成员】
成员名称 |
描述 |
|---|---|
gps_latitude_ref |
GPS纬度参考。取值’N’或’S’,默认值为’N’。 |
gps_latitude |
GPS纬度坐标。形式为度、分、秒三维,每一纬度数值表达包含分子分母两部分,每维数组中第一位数为分子,第二位数为分母,分母必须大于0,例如{dd/1, mm/1, ss/1}。默认值为{0/1,0/1,0/1},表示0度0分0秒。 |
gps_longitude_ref |
GPS经度参考。取值’E’或’W’,默认值为’E’。 |
gps_longitude |
GPS经度坐标。形式为度、分、秒三维,每一纬度数值表达包含分子分母两部分,每维数组中第一位数为分子,第二位数为分母,分母必须大于0,例如{dd/1, mm/1, ss/1}。默认值为{0/1,0/1,0/1},表示0度0分0秒。 |
gps_altitude_ref |
GPS高度参考。取值0或1,默认值为0。 0:海平面参考,海平面向上; 1:海平面参考,海平面向下。 |
gps_altitude |
GPS高度坐标。数值表达包含分子分母两部分,数组中第一位数为分子,第二位数为分母,分母必须大于0,例如hh/1。默认值为0/1,表示0米。 单位为米。 |
【注意事项】
无。
【相关数据类型及接口】
ot_frame_interrupt_type¶
【说明】
定义帧中断类型的枚举。
【定义】
typedef enum {
OT_FRAME_INTERRUPT_START,
OT_FRAME_INTERRUPT_EARLY,
OT_FRAME_INTERRUPT_EARLY_END,
OT_FRAME_INTERRUPT_EARLY_EARLY,
OT_FRAME_INTERRUPT_BUTT,
} ot_frame_interrupt_type;
【成员】
成员名称 |
描述 |
|---|---|
OT_FRAME_INTERRUPT_START |
使用帧起始中断准备和发送。 |
OT_FRAME_INTERRUPT_EARLY |
使用帧提前上报中断准备,帧起始中断发送。 |
OT_FRAME_INTERRUPT_EARLY_END |
使用帧提前上报中断准备,帧完成中断发送。 |
OT_FRAME_INTERRUPT_EARLY_EARLY |
使用帧提前上报中断准备和发送。 |
【注意事项】
OT_FRAME_INTERRUPT_EARLY_EARLY模式只推荐在VI-VO的低延迟场景使用,会存在VB被改写覆盖的风险。
【相关数据类型及接口】
无。
ot_frame_interrupt_attr¶
【说明】
定义帧中断属性结构体。
【定义】
typedef struct {
ot_frame_interrupt_type interrupt_type;
td_u32 early_line;
} ot_frame_interrupt_attr;
【成员】
成员名称 |
描述 |
|---|---|
interrupt_type |
帧中断类型的枚举。 |
early_line |
延时行号。 SS928V100最小值为0,其他最小值为40;最大值小于图像高度。 |
【注意事项】
当interrupt_type为OT_FRAME_INTERRUPT_START时,early_line无效。
【相关数据类型及接口】
无。
ot_data_rate¶
【说明】
定义设备的速率的枚举。
【定义】
typedef enum {
OT_DATA_RATE_X1 = 0,
OT_DATA_RATE_X2,
OT_DATA_RATE_BUTT
} ot_data_rate;
【成员】
成员名称 |
描述 |
|---|---|
OT_DATA_RATE_X1 |
一拍一像素。 |
OT_DATA_RATE_X2 |
一拍二像素。 |
【注意事项】
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无。
ot_wdr_mode¶
【说明】
定义WDR工作模式的枚举。
【定义】
typedef enum {
OT_WDR_MODE_NONE = 0,
OT_WDR_MODE_BUILT_IN,
OT_WDR_MODE_QUDRA,
OT_WDR_MODE_2To1_LINE,
OT_WDR_MODE_2To1_FRAME,
OT_WDR_MODE_3To1_LINE,
OT_WDR_MODE_3To1_FRAME,
OT_WDR_MODE_4To1_LINE,
OT_WDR_MODE_4To1_FRAME,
OT_WDR_MODE_BUTT,
} ot_wdr_mode;
【成员】
成员名称 |
描述 |
|---|---|
OT_WDR_MODE_NONE |
线性模式。 |
OT_WDR_MODE_BUILT_IN |
Sensor合成WDR模式。 |
OT_WDR_MODE_QUDRA |
QUDRA WDR模式。 |
OT_WDR_MODE_2To1_LINE |
2帧合成行WDR模式。 |
OT_WDR_MODE_2To1_FRAME |
2帧合成帧WDR模式。 |
OT_WDR_MODE_3To1_LINE |
3帧合成行WDR模式。 |
OT_WDR_MODE_3To1_FRAME |
3帧合成帧WDR模式。 |
OT_WDR_MODE_4To1_LINE |
4帧合成行WDR模式。 |
OT_WDR_MODE_4To1_FRAME |
4帧合成帧WDR模式。 |
【注意事项】
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无。
ot_isp_config_info¶
【说明】
定义ISP配置信息。
【定义】
typedef struct {
td_u32 iso;
td_u32 isp_dgain;
td_u32 exposure_time;
td_u32 white_balance_gain[OT_ISP_WB_GAIN_NUM];
td_u32 color_temperature;
td_u16 cap_ccm[OT_ISP_CAP_CCM_NUM];
} ot_isp_config_info;
【成员】
成员名称 |
描述 |
|---|---|
iso |
曝光ISO值。 |
isp_dgain |
ISP的数字增益。 |
exposure_time |
曝光时间。 |
white_balance_gain |
R、Gr、Gb、B四颜色通道的增益,16bit精度表示。 |
color_temperature |
当前检测的色温值。 |
cap_ccm |
颜色还原矩阵。为3*3矩阵。 |
【注意事项】
SS528V100/SS524V100/SS626V100不支持此结构体。
【相关数据类型及接口】
无。
ot_low_delay_info¶
【说明】
定义视频低延时信息结构体。
【定义】
typedef struct {
td_bool enable;
td_u32 line_cnt;
td_bool one_buf_en;
} ot_low_delay_info
【成员】
成员名称 |
描述 |
|---|---|
enable |
低延时使能开关 |
line_cnt |
低延时输出行号,最小值为16,最大值不超过图像高度,不建议设置行号太接近图像高度。 |
one_buf_en |
是否开启one buffer |
【注意事项】
SS528V100/SS524V100不支持此结构体。
【相关数据类型及接口】
无。
ot_schedule_mode¶
【说明】
定义调度模式的枚举。
【定义】
typedef enum {
OT_SCHEDULE_NORMAL = 0,
OT_SCHEDULE_QUICK,
OT_SCHEDULE_BUTT
} ot_schedule_mode;
【成员】
成员名称 |
描述 |
|---|---|
OT_SCHEDULE_NORMAL |
正常调度模式。 |
OT_SCHEDULE_QUICK |
快速调度模式。 |
【注意事项】
当配置为快速调度模式(OT_SCHEDULE_QUICK)时,整个系统会存在一定约束,具体请参考《MPP 媒体处理软件 V5.0 FAQ》的1.9 Quick schedule注意事项。
【相关数据类型及接口】
ot_scale_coef_type¶
【说明】
定义缩放系数类型的枚举。
【定义】
typedef enum {
OT_SCALE_COEF_TYPE_NORMAL,
OT_SCALE_COEF_TYPE_BILINEAR,
OT_SCALE_COEF_TYPE_BUTT
} ot_scale_coef_type;
【成员】
成员名称 |
描述 |
|---|---|
OT_SCALE_COEF_TYPE_NORMAL |
正常缩放系数类型。 |
OT_SCALE_COEF_TYPE_BILINEAR |
双线性缩放系数类型。 |
【注意事项】
当配置为正常缩放系数类型(OT_SCALE_COEF_TYPE_NORMAL)时,采用ss_mpi_sys_set_scale_coef_level接口配置后生成的缩放系数对图像进行缩放;而配置为双线性缩放系数类型(OT_SCALE_COEF_TYPE_BILINEAR)时,采用双线性插值。
【相关数据类型及接口】
ss_mpi_vpss_set_chn_scale_coef_type
ss_mpi_vpss_get_chn_scale_coef_ type
错误码¶
系统控制错误码¶
系统控制API错误码如下所示。
表 1 系统控制API错误码
错误代码 |
宏定义 |
描述 |
|---|---|---|
0xa0028007 |
OT_ERR_SYS_ILLEGAL_PARAM |
参数设置无效 |
0xa002800a |
OT_ERR_SYS_NULL_PTR |
空指针错误 |
0xa002800c |
OT_ERR_SYS_NOT_SUPPORT |
不支持的功能 |
0xa002800d |
OT_ERR_SYS_NOT_PERM |
操作不允许 |
0xa0028014 |
OT_ERR_SYS_NO_MEM |
分配内存失败,如系统内存不足 |
0xa0028018 |
OT_ERR_SYS_NOT_READY |
系统控制属性未配置 |
0xa0028022 |
OT_ERR_SYS_BUSY |
系统忙 |
视频缓存池错误码¶
视频缓存池API错误码如下所示。
表 1 视频缓存池API错误码
错误代码 |
宏定义 |
描述 |
|---|---|---|
0xa0018007 |
OT_ERR_VB_ILLEGAL_PARAM |
参数设置无效 |
0xa0018009 |
OT_ERR_VB_UNEXIST |
视频缓存池不存在 |
0xa001800a |
OT_ERR_VB_NULL_PTR |
参数空指针错误 |
0xa001800c |
OT_ERR_VB_NOT_SUPPORT |
操作不支持 |
0xa001800d |
OT_ERR_VB_NOT_PERM |
操作不允许 |
0xa0018014 |
OT_ERR_VB_NO_MEM |
分配内存失败 |
0xa0018015 |
OT_ERR_VB_NO_BUF |
分配缓存失败 |
0xa0018018 |
OT_ERR_VB_NOT_READY |
系统控制属性未配置 |
0xa0018022 |
OT_ERR_VB_BUSY |
系统忙 |
0xa0018023 |
OT_ERR_VB_SIZE_NOT_ENOUGH |
VB块大小不够 |
各模块支持的输入/输出数据格式和压缩模式¶
SS528V100各模块输出支持的数据格式和压缩模式¶
模块 |
输出支持的数据格式 |
输出支持的压缩模式 |
|---|---|---|
VI for YUV |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
VPSS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_COMPRESS_MODE_LINE |
||
VGS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_COMPRESS_MODE_LINE |
||
VO(WBC) |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
VDEC for H264/H265 |
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
VDEC for JPEG |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
TDE |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_LINE |
SS528V100各模块输入支持的数据格式和压缩模式¶
模块 |
输入支持的数据格式 |
输入支持的压缩模式 |
|---|---|---|
VI for YUV |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
VPSS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
|
VGS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_COMPRESS_MODE_LINE |
||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
|
VDA |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
VO |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_COMPRESS_MODE_LINE |
||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
|
VENC |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
TDE |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
GFBG |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_LINE |
SS524V100各模块输出支持的数据格式和压缩模式¶
模块 |
输出支持的数据格式 |
输出支持的压缩模式 |
|---|---|---|
VI for YUV |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
VPSS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_COMPRESS_MODE_LINE |
||
VGS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_COMPRESS_MODE_LINE |
||
VO(WBC) |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
VDEC for H264/H265 |
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
VDEC for JPEG |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
TDE |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_LINE |
SS524V100各模块输入支持的数据格式和压缩模式¶
模块 |
输入支持的数据格式 |
输入支持的压缩模式 |
|---|---|---|
VI for YUV |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
VPSS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
|
VGS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_COMPRESS_MODE_LINE |
||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
|
VDA |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
VO |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_COMPRESS_MODE_LINE |
||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
|
VENC |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
TDE |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
GFBG |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_LINE |
SS928V100各模块输出支持的数据格式和压缩模式¶
模块 |
输出支持的数据格式 |
输出支持的压缩模式 |
|---|---|---|
VI for YUV |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
VI for RAW |
-- |
OT_COMPRESS_MODE_LINE |
OT_COMPRESS_MODE_FRAME |
||
VPSS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_VIDEO_FORMAT_TILE_16x8 |
OT_COMPRESS_MODE_TILE |
|
AVS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
VGS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
GDC |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
VDEC for H264/H265 |
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
|
VDEC for JPEG |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
TDE |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_LINE |
MCF |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
SS928V100各模块输入支持的数据格式和压缩模式¶
模块 |
输入支持的数据格式 |
输入支持的压缩模式 |
|---|---|---|
VI for YUV |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
VI for RAW |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_LINE |
OT_COMPRESS_MODE_FRAME |
||
VPSS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
|
AVS for BLEND |
OT_VIDEO_FORMAT_TILE_16x8 |
OT_COMPRESS_MODE_TILE |
AVS for NOBLEND_VER |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
AVS for NOBLEND_HOR/NOBLEND_QR |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG OT_COMPRESS_MODE_SEG_COMPACT(非压缩输出时) |
VGS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
|
GDC |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
VO |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
|
VENC |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
||
TDE |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
GFBG |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_LINE |
MCF |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
OT_COMPRESS_MODE_SEG_COMPACT |
SS626V100各模块输出支持的数据格式和压缩模式¶
模块 |
输出支持的数据格式 |
输出支持的压缩模式 |
备注 |
|---|---|---|---|
VI for YUV |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
无 |
OT_COMPRESS_MODE_SEG_COMPACT |
|||
VPSS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
无 |
OT_COMPRESS_MODE_SEG_COMPACT |
|||
OT_COMPRESS_MODE_LINE |
|||
VGS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
无 |
OT_COMPRESS_MODE_SEG_COMPACT |
|||
OT_COMPRESS_MODE_LINE |
|||
GDC |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
无 |
VO(WBC) |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
无 |
VDEC for H264/H265 |
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
无 |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
||
VDEC for JPEG |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
无 |
TDE |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_LINE |
无 |
SS626V100各模块输入支持的数据格式和压缩模式¶
模块 |
输入支持的数据格式 |
输入支持的压缩模式 |
备注 |
|---|---|---|---|
VI for YUV |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
无 |
VPSS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
无 |
OT_COMPRESS_MODE_SEG_COMPACT |
|||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
||
VGS |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
无 |
OT_COMPRESS_MODE_SEG_COMPACT |
|||
OT_COMPRESS_MODE_LINE |
|||
OT_VIDEO_FORMAT_TILE_64x16 |
OT_COMPRESS_MODE_TILE |
||
GDC |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
无 |
VDA |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
无 |
VO |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
部分场景会调用VGS进行解压缩,具体请参考“视频输出”章节和VGS支持的数据和压缩格式 |
OT_COMPRESS_MODE_LINE |
|||
VENC |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_SEG |
其它情况,VENC会调用VGS进行数据格式转换,具体请参考VGS支持的数据和压缩格式 |
OT_COMPRESS_MODE_SEG_COMPACT |
|||
TDE |
OT_VIDEO_FORMAT_LINEAR |
不支持压缩 |
无 |
GFBG |
OT_VIDEO_FORMAT_LINEAR |
OT_COMPRESS_MODE_LINE |
无 |