系统控制
概述
系统控制根据芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成MPP(Media Process Platform媒体处理平台)系统各个业务模块的初始化、去初始化以及管理MPP系统各个业务模块的工作状态、提供当前MPP系统的版本信息、提供大块物理内存管理等功能。
应用程序启动MPP业务前,必须完成MPP系统初始化工作。同理,应用程序退出MPP业务后,也要完成MPP系统去初始化工作,释放资源。
重要概念
低延时
低延时指图像写出指定的行数到DDR后,前端模块上报中断,把图像发给后端模块处理,可以减少通路延时,且前后端模块采用特定机制保证图像是先写后读,不会出现读图像错误。
须知:
- 各模块低延时开启会与一些特定功能组合存在冲突,具体开启的方法及对应的限制参考各模块章节中相关的低延时描述。
- Hi3519DV500/Hi3516CV610/Hi3516CV608/Hi3511CV100支持低延时,支持的模块请见表1,未在列表中的模块不支持低延时。
表 1 支持低延时的模块列表
功能描述
视频缓存池
视频缓存池主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。
一组大小相同、物理地址连续的缓存块组成一个视频缓存池。必须在系统初始化之前配置公共视频缓存池。根据业务的不同,公共缓存池的数量、缓存块的大小和数量不同。
所有的视频输入通道都可以从公共视频缓存池中获取视频缓存块用于保存采集的图像,如图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显示完之后释放回公共视频缓存池。

不同类型的视频缓存池大小计算请参考代码ot_buffer.h,详细使用说明参见视频缓存池大小计算接口”。
系统绑定
MPP提供系统绑定接口(ss_mpi_sys_bind),即通过数据接收者绑定数据源来建立两者之间的关联关系(只允许数据接收者绑定数据源)。绑定后,数据源生成的数据将自动发送给接收者。目前MPP支持的绑定关系如表1所示。
表 1 MPP支持的绑定关系
|
||
VI和VPSS工作模式
VI和VPSS各自的工作模式分为在线,离线,工作模式说明如表1所示。
表 1 VI和VPSS的工作模式说明
Hi3519DV500/Hi3516DV500不支持 VI离线VPSS在线此种模式,可以用VI离线VPSS离线模式加FMU直通模式(Hi3516CV610/Hi3516CV608 不支持FMU模式),达到同样的效果。
Hi3511CV100 仅支持OT_VI_ONLINE_VPSS_OFFLINE和OT_VI_ONLINE_VPSS_ONLINE模式,不支持FMU模式。
PIPE可以设置成多种工作模式,情况如下。
-
第0个PIPE可以有4种模式:
- VI在线VPSS离线
- VI在线VPSS在线
- VI离线VPSS离线
- VI离线VPSS在线
-
其他PIPE可以有VI离线VPSS离线、VI离线VPSS在线2种模式:
- 当第0个PIPE为VI离线VPSS在线时,绑定的其他PIPE只能设置VI离线VPSS在线。
- 当第0个PIPE为VI离线VPSS离线时,绑定的其他PIPE只能设置VI离线VPSS离线。
- 当第0个PIPE为VI在线VPSS在线时,不支持使用其他PIPE。
- 当第0个PIPE为VI在线VPSS离线时,绑定的其他PIPE只能设置VI离线VPSS离线。
-
PIPE在不同的工作模式下可以进行切换,此时VI需要重建,情况如下:
- VI在线模式不能切换到VI离线模式。
- VI离线模式不能切换到VI在线模式。
说明:
- 本文档中出现的“VI在线/离线”是指VI_CAP与VI_PROC之间的在线/离线模式。
- 本文档中出现的“VPSS在线/离线”是指VI_PROC与VPSS之间的在线/离线模式。
表 2 Hi3519DV500 VI PIPE工作模式
表 3 Hi3516CV610/Hi3516CV608 VI PIPE工作模式
说明:
对于Hi3519DV500/Hi3516CV610系列/Hi3516CV608,当PIPE0为在线时,其他PIPE的离线模式只能用来获取PIPE FRAME,其他功能都不能使用,即不能使用VI_PROC的功能。 当使用VI在线VPSS在线模式时,启动业务时要求先启动VI业务,再启动VPSS业务;销毁业务时要求先销毁VPSS业务,再销毁VI业务。
VI AIISP模式
VI的AIISP模式分为四种:Default模式、AIDRC、AIDM、AI3DNR模式,默认为Default模式。
VI离线模式下统一使用Default模式,AIISP功能由VI内部自适应配置,且每路pipe分别可配。
详见ss_mpi_sys_set_vi_aiisp_mode接口描述。
- Hi3516CV610/Hi3516CV608仅支持Default模式。
- Hi3511CV100不支持 VI AIISP模式配置。
logmpp日志
系统运行日志信息记录在logmpp文件中,运行异常时可通过查看日志文件进行问题定位,查看命令为cat /dev/logmpp。注意不要在多个窗口同时查看,否则会出现log信息错乱。
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_query_mmz_status:查询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_aiisp_mode:设置VI AIISP模式。
- ss_mpi_sys_get_vi_aiisp_mode:获取VI AIISP模式。
- 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_set_fmu_attr:设置FMU信息。
- ss_mpi_sys_get_fmu_attr:获取FMU信息。
- ss_mpi_sys_set_3dnr_pos:设置3DNR所在位置。
- ss_mpi_sys_get_3dnr_pos:获取3DNR所在位置。
- 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_sys_get_vpss_venc_wrap_buf_line:获取VPSS-VENC卷绕模式下的buffer像素行数。
- ss_mpi_sys_get_vi_wrap_buffer_line:获取VICAP-VPPROC离线卷绕模式下的buffer卷绕行数。
- ss_mpi_sys_start_sync_frame_rate_ctrl:启动dst_chn的帧控与src_chn的帧控同步。
- ss_mpi_sys_stop_sync_frame_rate_ctrl:停止dst_chn的帧控与src_chn的帧控同步。
- 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_dump_debug_attr:设置系统的存帧调试属性。
- ss_mpi_sys_get_dump_debug_attr:获取系统的存帧调试属性。
ss_mpi_sys_set_cfg
【描述】
配置系统控制参数。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 只有在MPP整个系统处于未初始化状态,才可调用此函数配置MPP系统,否则会配置失败。
- 此接口功能暂时无效。
【举例】
无。
【相关主题】
ss_mpi_sys_get_cfg
【描述】
获取系统控制参数。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
必须先调用ss_mpi_sys_set_cfg成功后才能获取配置。
【举例】
无。
【相关主题】
ss_mpi_sys_init
【描述】
初始化MPP系统。包括视频输入输出、视频编解码、视频叠加区域、视频处理、图形处理等模块都会被初始化。
【语法】
【参数】
无。
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 由于MPP系统的正常运行依赖于缓存池,因此需要先调用ss_mpi_vb_init初始化缓存池,再初始化MPP系统,否则会导致业务运行异常。
- 如果多次初始化,仍会返回成功,但实际上系统不会对MPP的运行状态有任何影响。
- 只要有一个进程进行初始化即可,不需要所有的进程都做系统初始化的操作。
【举例】
无。
【相关主题】
ss_mpi_sys_exit
【描述】
去初始化MPP系统。包括视频输入输出、视频编解码、视频叠加区域、视频处理、图形处理等模块都会被销毁或者禁用。
【语法】
【参数】
无。
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 去初始化时,如果有阻塞在MPI上的用户进程,调用ss_mpi_sys_exit会唤醒该阻塞进程,如果没有成功唤醒,则去初始化会失败。如果所有阻塞在MPI上的调用都返回,则可以成功去初始化。
- 可以反复去初始化,不返回失败。
【举例】
无。
【相关主题】
ss_mpi_sys_bind
【描述】
数据源到数据接收者绑定接口。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_bind.h、ss_mpi_sys_bind.h
- 库文件:libss_mpi_sysbind.a
【注意】
- 系统目前支持的绑定关系,请参见表1。
- 同一个数据源可以绑定多个不同的数据接收者,最大数量为OT_MAX_BIND_DST_NUM。
- 同一个数据接收者只能绑定一个数据源。
- 绑定是指数据源和数据接收者建立关联关系。绑定后,数据源生成的数据将自动发送给接收者。
- VDEC作为数据源,是以通道为发送者,向其他模块发送数据,用户将设备号置为0,SDK不检查输入的设备号。
- VI作为数据源,是以设备(pipe)、通道(chn)为发送者,向其他模块发送数据;作为数据接收者时,以设备(pipe)、通道(chn)为接收者。
- VI作为数据接收者时,设备(pipe)必须是虚拟pipe,数据接收者为物理pipe时接收端没有数据流。
- VO作为数据源发送回写(WBC)数据时,是以设备为发送者,向其他模块发送数据,用户将通道号置为0,SDK不检查输入的通道号。
- VPSS作为数据接收者,是以设备(GROUP)、通道(PIPE)为接收者。
- 若VENC工作在非OT_VENC_PIC_RECV_MULTI模式下,VENC作为数据接收者时,是以通道号为接收者,接收其他模块发过来的数据,设备号仅支持为0。若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)为接收者。
- 其他情况均需指定设备号和通道号。
- VENC 作为源绑定UVC时,VENC设备号需要设置为0。VENC作为源缩小输出后绑定另外一路VENC编码时,源设备号需要设置为1,目的设备号设置为0。
- 不支持重复绑定同一个数据源和数据接收者。
- 若未调用ss_mpi_sys_init接口,模块将无法绑定。
【举例】
无。
【相关主题】
ss_mpi_sys_unbind
【描述】
数据源到数据接收者解绑定接口。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_bind.h、ss_mpi_sys_bind.h
- 库文件:libss_mpi_sysbind.a
【注意】
- dst_chn如果找不到绑定的源通道,则直接返回成功。如果找到了绑定的源通道,但是绑定的源通道和src_chn不匹配,则返回失败。
- 若未调用ss_mpi_sys_init接口,模块将无法进行解绑。
【举例】
无。
【相关主题】
ss_mpi_sys_get_bind_by_dst
【描述】
获取此通道上绑定的源通道的信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_bind.h、ss_mpi_sys_bind.h
- 库文件:libss_mpi_sysbind.a
【注意】
若未调用ss_mpi_sys_init接口,模块将无法进行绑定获取。
【举例】
无。
【相关主题】
ss_mpi_sys_get_bind_by_src
【描述】
根据源获取绑定的目标。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_bind.h、ss_mpi_sys_bind.h
- 库文件:libss_mpi_sysbind.a
【注意】
若未调用ss_mpi_sys_init接口,模块将无法进行绑定获取。
【举例】
无。
【相关主题】
ss_mpi_sys_get_version
【描述】
获取MPP的版本号。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_chip_id
【描述】
获取当前芯片的ID。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件: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 (芯片唯一码)。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
无。
【相关主题】
无。
ss_mpi_sys_get_custom_code
【描述】
获取当前芯片的custom code。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件: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的当前时间戳。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_init_pts_base
【描述】
初始化MPP的时间戳基准。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
初始化时间戳基准会将当前系统的时间戳强制置成pts_base,与系统原有时间戳没有任何约束。因此,建议在媒体业务没有启动时(例如操作系统刚启动),调用这个接口。如果媒体业务已经启动,建议调用ss_mpi_sys_sync_pts进行时间戳微调。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_sync_pts
【描述】
同步MPP的时间戳。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
对当前系统时间戳(微秒级)进行微调,微调后不会出现时间戳回退现象。在多片之间做同步时,由于单板的时钟源误差可能比较大,建议一秒钟进行一次时间戳微调。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_mmap
【描述】
memory存储映射接口。
【语法】
【参数】
【返回值】
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
- open的节点是dev/mmz_userdev,在MMZ中实现映射非device类型(不可cache、可reorder)的DDR地址。
- 对于输入的地址和size,需在单个(已分配的)mmz buffer的地址范围内。
- 对应的解映射接口为ss_mpi_sys_munmap。
- 用户态映射属性需要与内核态映射属性保持一致。
【举例】
无。
【相关主题】
ss_mpi_sys_mmap_cached
【描述】
存储映射接口,映射成cache属性。
【语法】
【参数】
【返回值】
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
- 对于输入的地址和size,需在单个(已分配的)mmz buffer的地址范围内。
- 用户态映射属性需要与内核态映射属性保持一致。
【举例】
无。
【相关主题】
ss_mpi_sys_munmap
【描述】
存储反映射接口。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
等同于系统munmap函数。
【举例】
无。
【相关主题】
ss_mpi_sys_flush_cache
【描述】
刷新cache里的内容到内存并且使cache里的内容无效。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.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);
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.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);
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.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内存。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
- 输入的地址必须为有效的物理地址,虚拟地址指针可以置为NULL。
- 不能释放正在进行flush操作的内存,否则会引发不可预知的异常。
【举例】
无。
【相关主题】
ss_mpi_sys_set_mem_cfg
【描述】
配置内存参数,设置模块设备通道使用的MMZ区域名称。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件: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。各个通道独立使用的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内存根据对应的通道设置。
【举例】
无。
【相关主题】
ss_mpi_sys_get_mem_cfg
【描述】
获取模块设备通道使用的MMZ区域名称。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
如果要获取的MMZ区域名称本身为null,则不检查入参mmz_name
【举例】
无。
【相关主题】
ss_mpi_sys_query_mmz_status
【描述】
查询MMZ当前状态。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_close_fd
【描述】
关闭所有SYS打开的日志、系统Fd。
【语法】
【参数】
无。
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
建议该接口在所有模块都禁用后使用。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_virt_mem_info
【描述】
根据虚拟地址获取对应的内存信息,包括物理地址及cached属性。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.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);
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 各个缩放比例下的缩放系数等级默认值请参考ot_scale_coef_level结构体的注意事项。
- 在保持缩放比例范围不变的情况下,增大缩放系数的等级时,会使该缩放比例范围的图像看起来更锐利,反之则更模糊。
- 在保持缩放比例范围不变的情况下,增大缩放系数的等级时,会使得画面锯齿程度变严重,用户可根据需求进行选择。
- OT_COEF_LEVEL_19仅支持配置为OT_SCALE_RANGE_18时的水平亮度或垂直亮度缩放系数。
【举例】
无。
【相关主题】
无。
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);
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_time_zone
【描述】
设置时区信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 时区设置对JPEG DCF信息有效,设置后拍摄时间(UTC时间)将转换为本地时间。
- UTC时间计算偏移之后,不能小于计算机起始时间(1970年1月1日0点)。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_time_zone
【描述】
获取时区信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_gps_info
【描述】
设置GPS信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 涉及敏感数据处理,用户在使用该接口时需要保证输入和输出数据的安全同时注意隐私保护,遵循当地法律法规。
- GPS信息设置对JPEG DCF信息有效。
【举例】
无
【相关主题】
无
ss_mpi_sys_get_gps_info
【描述】
获取GPS信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
涉及敏感数据处理,用户在使用该接口时需要保证输入和输出数据的安全同时注意隐私保护,遵循当地法律法规。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_schedule_mode
【描述】
设置系统调度模式。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_video.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- Hi3519DV500/Hi3516DV500/Hi3516CV610/Hi3516CV608/Hi3511CV100不支持此接口。
- 必须在ss_mpi_sys_init后,所有的VDEC通道和所有的VPSS组创建前设置。
- 设置OT_SCHEDULE_QUICK模式时,如果vdec帧存VB来源为OT_VB_SRC_PRIVATE时,接口返回不支持。
- 当配置为快速模式(OT_SCHEDULE_QUICK)时,整个系统会存在一定的约束,具体请参考《MPP 媒体处理软件 V6.0 FAQ》的“Quick schedule注意事项”小节。
【举例】
无。
【相关主题】
ss_mpi_sys_get_schedule_mode
【描述】
获取系统调度模式。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_video.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
Hi3519DV500/Hi3516DV500/Hi3516CV610/Hi3516CV608/Hi3511CV100不支持此接口。
【举例】
无。
【相关主题】
ss_mpi_sys_set_vi_vpss_mode
【描述】
设置VI,VPSS工作模式。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
必须在ss_mpi_sys_init后,所有的VI PIPE和所有的VPSS组创建前设置。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_vi_vpss_mode
【描述】
获取VI,VPSS的工作模式。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
无
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_vi_aiisp_mode
【描述】
设置VI AIISP模式。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 必须在ss_mpi_sys_init后,所有的VI PIPE和所有的VPSS组创建前设置。
- 本接口不配置默认所有PIPE 为DEFAULT模式。
- VI离线模式下只能配置Default模式。
- VI在线且需要开启AIISP功能时,才需要配置AI模式;在线模式暂不支持AIISP功能。
- Hi3516CV610/Hi3516CV608只能配置为Default模式。
- Hi3511CV100不支持此接口。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_vi_aiisp_mode
【描述】
获取VI AIISP模式。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
Hi3511CV100不支持此接口。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_raw_frame_compress_param
【描述】
设置VI模块RAW数据的帧压缩比。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 必须在ss_mpi_sys_init接口调用前才能调用。
- 调用ss_mpi_sys_exit后设置的值仍然有效。
- Hi3511CV100不支持此接口。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_get_raw_frame_compress_param
【描述】
获取VI模块RAW数据的帧压缩比。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
Hi3511CV100不支持此接口。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_tuning_connect
【描述】
设置Tuning工具连接。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 保留值目前按0处理。
- 第一次设置时可以设置为0或者1,其它任何情况下无论设置什么值内部都置为0。
- SYS退出之后恢复默认值1。
- connect为1时可正常接入PQTool等Tuning工具,connect为0时无法接入PQTool等Tuning工具。
【举例】
无
【相关主题】
无
ss_mpi_sys_get_tuning_connect
【描述】
获取Tuning工具连接。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_fmu_attr
【描述】
设置FMU信息。
【语法】
【参数】
【返回值】
失败,其值参考错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 不支持id为OT_FMU_ID_VI。
- id为OT_FMU_ID_VPSS时,必须在ss_mpi_sys_init后,所有的VPSS Group和VENC Channel创建前设置。
- id为OT_FMU_ID_VPSS且处于全在线模式时,卷绕空间取决于sensor消隐区大小,编码通道路数等,如果配置卷绕空间超过半帧还是会出现“malloc err”错误,说明消隐区太小,venc性能不足,此时不建议使用卷绕模式。
- Hi3516CV610/Hi3516CV608/Hi3511CV100不支持此接口。
【举例】
无。
【相关主题】
ss_mpi_sys_get_fmu_attr
【描述】
获取FMU信息。
【语法】
【参数】
【返回值】
失败,其值参考错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
Hi3516CV610/Hi3516CV608/Hi3511CV100不支持此接口。
【举例】
无
【相关主题】
ss_mpi_sys_set_3dnr_pos
【描述】
设置3DNR所在位置。
【语法】
【参数】
【返回值】
失败,其值参考错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 必须在ss_mpi_sys_init后,所有的VI PIPE和所有的VPSS Group创建前设置。
- 若3DNR位置不在对应位置,该位置使能3DNR应返回失败。
- Hi3516CV610/Hi3516CV608/Hi3511CV100不支持此接口。
【举例】
无
【相关主题】
ss_mpi_sys_get_3dnr_pos
【描述】
获取3DNR所在位置。
【语法】
【参数】
【返回值】
失败,其值参考错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
Hi3516CV610/Hi3516CV608/Hi3511CV100不支持此接口。
【举例】
无
【相关主题】
ss_mpi_sys_mem_share
【描述】
将handle对应的mmz buffer共享给特定的进程id。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
- 只有分配mmz buffer的进程能注册共享,其它进程注册共享返回失败。
- 分配mmz buffer的进程不需要被共享,如果pid参数是分配mmz buffer的进程id,接口返回失败。
- 如果mmz buffer已经是全进程共享的状态,接口返回失败。
- 1个mmz buffer最多可以允许5个进程id共享(包含分配该mmz buffer的进程id)。
- 重复共享给同一个进程id,接口返回成功。
- 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。
【举例】
无。
【相关主题】
ss_mpi_sys_mem_unshare
【描述】
解除handle对应的mmz buffer对进程id的共享。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
- 分配mmz buffer的进程可以解除对非分配mmz buffer的进程id的共享。
- 被共享的进程只能解除对本进程id的共享。
- 如果mmz buffer已经是全进程共享的状态,接口返回失败。
- 重复解除对进程id的共享,接口返回失败。
- 与ss_mpi_sys_mem_share接口配对使用。
- 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。
【举例】
无。
【相关主题】
ss_mpi_sys_mem_share_all
【描述】
将handle对应的mmz buffer以不限进程id的方式共享给所有进程。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
- 只有分配mmz buffer的进程能注册共享,其它进程注册共享返回失败。
- 重复共享给所有进程,接口返回成功。
- 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。
【举例】
无。
【相关主题】
ss_mpi_sys_mem_unshare_all
【描述】
解除handle对应的mmz buffer对所有进程的共享。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
- 只有分配mmz buffer的进程可以解除对所有进程的共享。
- 重复解除对所有进程的共享,接口返回成功。
- 与ss_mpi_sys_mem_share_all接口配对使用。
- 调用此接口解除对所有进程共享的状态之后,仍然保留原有对进程id的共享状态。
- 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。
【举例】
无。
【相关主题】
ss_mpi_sys_get_mem_info_by_handle
【描述】
通过handle获取mmz buffer的内存描述信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.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的内存描述信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
- 只有分配mmz buffer的进程和被共享的进程可以通过物理地址获取mmz buffer的内存描述信息。
- 如果设置MMZ模块参数mem_process_isolation=0,参数合法即可获取mmz buffer的内存描述信息。
【举例】
无。
【相关主题】
ss_mpi_sys_get_mem_info_by_virt
【描述】
通过用户态虚拟地址获取mmz buffer的内存描述信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys_mem.h、ss_mpi_sys_mem.h
- 库文件:libss_mpi_sysmem.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_sys_get_vpss_venc_wrap_buf_line
【描述】
获取VPSS-VENC卷绕模式下的buffer像素行数。
【语法】
td_s32 ss_mpi_sys_get_vpss_venc_wrap_buf_line(const ot_vpss_venc_wrap_param *param, td_u32 *buf_line);
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 仅Hi3516CV610/Hi3516CV608支持此接口。
- 当存在多个卷绕组时,可按照各个组实际的码流情况调用此接口获取buf_line。然后根据buf_line和卷绕通道输出属性使用hi_buffer.h中的ot_comm_get_vpss_venc_wrap_buf_size接口计算出各个组的buf_size。接着取最大的buf_size分配一个公共卷绕VB。最后调用ss_mpi_vpss_set_chn_buf_wrap设置各个组的通道卷绕属性,其中buf_line使用各个组计算出的buf_line,buf_size取最大的buf_size。
- buf_line行数与sensor时序、ISP中断配置sensor时间、VPSS性能、VENC性能等多方面因素有关,这里计算出来的buf_line是假设CPU每帧都能立即响应VPSS/VENC中断的前提下计算出来的理论值。实际业务场景中如果CPU不能每帧都立即响应VPSS/VENC中断,存在中断延迟等情况,客户需要以实际测试场景为准适当增大buf_line。
- ISP是在中断中配置sensor的,有些sensor需要配置的信息较多,占用CPU较久,可能需要很大的buf_line才能支持低延时卷绕功能。如果用户希望可以把buf_line调节得更小一些,可以尝试下使用ISP底半部中断(参考《ISP开发参考》中接口ss_mpi_isp_set_mod_param)。或者缩短配置sensor的时间,比如通过I2C配置的sensor适当提高I2C速率(I2C提速可能会对有些使用I2C的设备兼容性有影响)。
【举例】
无。
【相关主题】
- ss_mpi_vpss_set_chn_buf_wrap
- ot_comm_get_vpss_venc_wrap_buf_size
ss_mpi_sys_get_vi_wrap_buffer_line
【描述】
获取VICAP-VPPROC离线卷绕模式下的buffer卷绕行数。
【语法】
td_s32 ss_mpi_sys_get_vi_wrap_buffer_line(const ot_vi_wrap_in_param *in_param, ot_vi_wrap_out_param *out_param);
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 仅Hi3516CV610/Hi3516CV608支持此接口。
- buf_line行数与sensor时序、sensor路数及主从模式、VIPROC性能、VPSS性能、VENC性能等多方面因素有关,这里计算出来的buf_line是假设CPU每帧都能立即响应VI/VPSS/VENC中断的前提下计算出来的理论值。实际业务场景中如果CPU不能每帧都立即响应VI/VPSS/VENC中断,存在中断延迟等情况,客户需要以实际测试场景为准适当增大buf_line。
【举例】
无。
【相关主题】
- ss_mpi_vi_set_pipe_buf_wrap_attr
- ss_mpi_vi_get_pipe_buf_wrap_attr
ss_mpi_sys_start_sync_frame_rate_ctrl
【描述】
启动dst_chn的帧控与src_chn的帧控同步。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 调用接口前需创建src_chn与dst_chn对应通道。
- src_chn仅支持mod_id为OT_ID_VI,且源帧控位置为pipe帧控,且该pipe绑定的dev已绑定了多个pipe。
- dst_chn仅支持mod_id为OT_ID_VPSS的物理通道同步。
- 一个dst_chn仅支持同步一个src_chn,不允许动态切换源通道。即切换dst_chn同步关系时,需要先调用ss_mpi_sys_stop_sync_frame_rate_ctrl接口停止当前同步关系。
- 同步的pipe间的时序差异应在10ms以内,否则可能出现不可预期异常。
- 原始帧率应低于60帧,否则可能会出现不可预期异常。
- src_chn帧率控制的源帧率需要正确配置,否则可能会出现不可预期异常。
-
从src_chn到dst_chn延迟过高时不可使用帧同步功能,延迟8帧以内可正常使用。可能影响延迟的原因:
- 经过多级绑定
- 超过处理能力导致积帧
- 捞帧处理后再送帧不及时
-
当前同步的pipe间的时序差异需要满足 src_chn对应的pipe晚于dst_chn对应的pipe。
- 不建议对dst chn所在的VPSS grp做组上帧控,否则可能导致组帧控过滤后,剩余帧的帧时序差异不满足主pipe的要求,从而导致dst chn无流。
- 该接口不支持重复调用。
- Hi3511CV100不支持此接口。
【举例】
无。
【相关主题】
ss_mpi_sys_stop_sync_frame_rate_ctrl
ss_mpi_sys_stop_sync_frame_rate_ctrl
【描述】
停止dst_chn的帧控与src_chn的帧控同步。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 调用接口前需创建src_chn与dst_chn对应通道,否则会打印错误信息。
- src_chn仅支持mod_id为OT_ID_VI,且源帧控位置为pipe帧控。
- dst_chn仅支持mod_id为OT_ID_VPSS的物理通道停止帧控同步。
- Hi3511CV100不支持此接口。
【举例】
无。
【相关主题】
ss_mpi_sys_start_sync_frame_rate_ctrl
ss_mpi_vb_set_cfg
【描述】
设置MPP视频缓存池属性。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 只能在系统处于未初始化的状态下,才可以设置缓存池属性,否则会返回失败。
- video buf根据不同的应用场景需要不同的配置。配置规则参见视频缓存池 。
- 公共缓存池中每个缓存块的大小应根据当前图像像素格式以及图像是否压缩而有所不同。具体分配大小请参考ot_vb_cfg结构体中的描述。
【举例】
无。
【相关主题】
ss_mpi_vb_get_cfg
【描述】
获取MPP视频缓存池属性。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
必须先调用ss_mpi_vb_set_cfg设置MPP视频缓存池属性,再获取属性。
【举例】
无。
【相关主题】
ss_mpi_vb_init
【描述】
初始化MPP视频公共缓存池。
【语法】
【参数】
无。
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 必须先调用ss_mpi_vb_set_cfg配置缓存池属性,再初始化缓存池,否则会失败。
- 可反复初始化,不返回失败。
【举例】
无。
【相关主题】
ss_mpi_vb_exit
【描述】
去初始化MPP视频公共缓存池。
【语法】
【参数】
无。
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 必须先调用ss_mpi_sys_exit去初始化MPP系统,再去初始化公共缓存池,否则返回失败。
- 可以反复去初始化,不返回失败。
- 去初始化成功会清除先前对缓存池的配置。
- 退出VB池之前请确保VB池里的任何VB都没有被占用,否则业务上存在VB泄漏的情况,在退出VB池之后,所有VB池会被强制销毁掉,同时logmpp会有报错提示。
- 模块公共VB池需要先调用ss_mpi_vb_exit_mod_common_pool清除配置。
【举例】
无。
【相关主题】
ss_mpi_vb_create_pool
【描述】
创建一个用户视频缓存池。
【语法】
【参数】
【返回值】
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vb_create_ext_pool
【描述】
创建一个虚拟视频缓存池,池里没有缓存块。
【语法】
【参数】
【返回值】
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 此接口创建的缓存池是空的,VB不是在创建池子时分配的,而是来自外部,由外部程序分配。默认有分配附加信息内存。
- 在用户添加了缓存块后,用户可以从池子中获取缓存块。
- 虚拟视频缓存池可以作为模块的用户VB池。
- vb_pool_cfg参数中,remap_mode参数无效,不需要配置,接口也不会检查。
- 用户可以调用ss_mpi_vb_destroy_pool销毁缓存池。
【举例】
无。
【相关主题】
ss_mpi_vb_destroy_pool
【描述】
销毁一个视频缓存池。
【语法】
【参数】
|
取值范围:[0, OT_VB_MAX_POOLS) |
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 销毁一个不存在的缓存池,则返回OT_ERR_VB_UNEXIST。
- 在去初始化MPP缓存池时,所有的缓存池都将被销毁,包括用户态的缓存池。
- [0, OT_VB_MAX_POOLS)范围内的缓存池ID号,包括公共缓存池、模块公共缓存池、模块私有缓存池等的ID号。请确保Pool为ss_mpi_vb_create_pool所创建的缓存池的ID号,否则会返回失败。
- 默认支持异步销毁缓存池,销毁缓存池时,如果缓存块仍在占用状态,返回成功,当所有缓存块在空闲状态时,才真正销毁缓存池。
- 销毁VB池与创建VB池(或创建虚拟VB池)的操作,需要在同一个进程中执行。
【举例】
无。
【相关主题】
ss_mpi_vb_get_blk
【描述】
用户态获取一个缓存块。
【语法】
【参数】
|
取值范围:[0, OT_VB_MAX_POOLS) |
||
【返回值】
【错误码】
无。
【需求】
- 头文件: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
【描述】
用户态释放一个已经获取的缓存块。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.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);
【参数】
|
取值范围:[0, OT_VB_MAX_POOLS)。 |
||
【返回值】
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 缓存块内存由用户自己分配和管理。此接口只是把缓存块添加到虚拟视频缓存池中。
- pool必须是虚拟视频缓存池的ID号。
- 缓存块的大小必须和创建虚拟视频缓存池时指定的blk_size保持一致。
- 不支持向虚拟视频缓存池重复添加同一块缓存块。
- 缓存块添加到虚拟视频缓存池后,可以调用ss_mpi_vb_get_blk获取缓存块、调用ss_mpi_vb_release_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
【描述】
用户从虚拟视频缓存池中释放一个缓存块。
【语法】
【参数】
超时参数milli_sec设为-1时为阻塞接口;等于0时为非阻塞接口;大于0时为超时等待时间。超时时间的单位为毫秒(ms)。 |
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 应该调用此接口释放掉虚拟视频缓存池中不再使用的缓存块。
- 此接口只能释放虚拟视频缓存池的缓存块。
【举例】
无。
【相关主题】
ss_mpi_vb_phys_addr_to_handle
【描述】
用户态通过缓存块的物理地址获取其句柄。
【语法】
【参数】
【返回值】
【错误码】
无。
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
物理地址应该是从MPP视频缓存池中获取的有效缓存块的地址。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_handle_to_phys_addr
【描述】
用户态获取一个缓存块的物理地址。
【语法】
【参数】
【返回值】
【错误码】
无。
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
指定的缓存块应该是从MPP视频缓存池中获取的有效缓存块。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_handle_to_pool_id
【描述】
用户态获取一个帧缓存块所在缓存池的ID。
【语法】
【参数】
【返回值】
【错误码】
无。
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
指定的缓存块应该是从MPP视频缓存池中获取的有效缓存块。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_get_pool_info
【描述】
获取一个视频缓存池的信息。
【语法】
【参数】
|
取值范围:[0, OT_VB_MAX_POOLS) |
||
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
必须输入合法的缓存池ID。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_init_mod_common_pool
【描述】
初始化模块公共视频缓存池。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件: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
ss_mpi_vb_exit_mod_common_pool
【描述】
退出模块公共视频缓存池。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 必须在ss_mpi_vb_exit之前调用该接口,否则返回失败。
- 可以反复退出,不返回失败。
- 退出后会清除先前对模块公共视频缓存池的配置。
- 退出模块公共VB池时,如果VB被占用,返回成功,当所有VB在空闲状态时,才真正销毁模块公共VB池的资源。
【举例】
无。
【相关主题】
ss_mpi_vb_init_mod_common_pool
ss_mpi_vb_set_mod_pool_cfg
【描述】
设置模块公共视频缓存池属性。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 模块公共视频缓存池的配置根据实际需要配置,否则会造成内存浪费。
- 如果模块VB已创建,再次配置返回错误码OT_ERR_VB_BUSY。
【举例】
无。
【相关主题】
ss_mpi_vb_get_mod_pool_cfg
【描述】
获取模块公共视频缓存池属性。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
必须先调用ss_mpi_vb_set_mod_pool_cfg设置模块公共视频缓存池属性,再获取属性。
【举例】
无。
【相关主题】
ss_mpi_vb_inquire_user_cnt
【描述】
查询缓存块使用计数信息。
【语法】
【参数】
【返回值】
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_vb_get_supplement_addr
【描述】
获取VB block内存的辅助信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
supplement保存的DCF地址信息为内核态虚拟地址。
【举例】
无
【相关主题】
无
ss_mpi_vb_set_supplement_cfg
【描述】
设置VB内存的附加信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
-
当前支持设置以下4种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。
- BNR信息。无对应结构体,对应的MASK为OT_VB_SUPPLEMENT_BNR_MOT_MASK。
-
无对应结构体的内存附加信息仅提供给内部使用。
- 需要在ss_mpi_vb_init前调用此接口,附加信息才能生效。
【举例】
无
【相关主题】
ss_mpi_vb_get_supplement_cfg
【描述】
获取VB内存的附加信息。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vb_get_common_pool_id
【描述】
获取公共VB池的pool id。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vb_get_mod_common_pool_id
【描述】
获取模块公共VB池的pool id。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vb_pool_share
【描述】
将pool id对应的VB池共享给特定的进程id。
【语法】
【参数】
|
取值范围:[0, OT_VB_MAX_POOLS) |
||
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 只有创建VB池的进程能注册共享,其它进程注册共享返回失败。
- 创建VB池的进程不需要被共享,如果pid参数是创建VB池的进程id,接口返回失败。
- 如果VB池已经是全进程共享的状态,接口返回失败。
- 1个VB池最多可以允许5个进程id共享(包含创建该VB池的进程id)。
- 重复共享给同一个进程id,接口返回成功。
- 如果是VB池的缓存块做共享给进程id的操作,等同于VB池共享给进程id。
- 不支持虚拟VB池。
- 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。
【举例】
无。
【相关主题】
ss_mpi_vb_pool_unshare
【描述】
解除pool id对应的VB池对进程id的共享。
【语法】
【参数】
|
取值范围:[0, OT_VB_MAX_POOLS) |
||
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 创建VB池的进程可以解除对非创建VB池的进程id的共享。
- 被共享的进程只能解除对本进程id的共享。
- 如果VB池已经是全进程共享的状态,接口返回失败。
- 重复解除对进程id的共享,接口返回失败。
- 如果是VB池的缓存块做解除对进程id的共享操作,等同于VB池解除对进程id的共享。
- 与ss_mpi_vb_pool_share接口配对使用。
- 不支持虚拟VB池。
- 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。
【举例】
无。
【相关主题】
ss_mpi_vb_pool_share_all
【描述】
将pool id对应的VB池以不限进程id的方式共享给所有进程。
【语法】
【参数】
|
取值范围:[0, OT_VB_MAX_POOLS) |
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 只有创建VB池的进程能注册共享,其它进程注册共享返回失败。
- 重复共享给所有进程,接口返回成功。
- 不支持虚拟VB池。
- 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。
【举例】
无。
【相关主题】
ss_mpi_vb_pool_unshare_all
【描述】
解除pool id对应的VB池对所有进程的共享。
【语法】
【参数】
|
取值范围:[0, OT_VB_MAX_POOLS) |
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_vb.h、ss_mpi_vb.h
- 库文件:libss_mpi.a
【注意】
- 只有创建VB池的进程可以解除对所有进程的共享。
- 重复解除对所有进程的共享,接口返回成功。
- 与ss_mpi_vb_pool_share_all接口配对使用。
- 调用此接口解除对所有进程共享的状态之后,仍然保留原有对进程id的共享状态。
- 不支持虚拟VB池。
- 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。
【举例】
无。
【相关主题】
ss_mpi_log_set_level_cfg
【描述】
设置日志等级。
【语法】
【参数】
【返回值】
【需求】
- 头文件: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
【描述】
获取日志等级。
【语法】
【参数】
【返回值】
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_log_set_wait_flag
【描述】
设置读取日志时等待标志。
【语法】
【参数】
【返回值】
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_log_read
【描述】
读取日志。
【语法】
【参数】
【返回值】
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h
- 库文件:libss_mpi.a
【注意】
在加载ot_base.ko时,可以通过设置模块参数“logmpp_show=0”来关闭logmpp信息打印。关闭logmpp后,调用该接口会出现读取不到日志的情况。
【举例】
无。
【相关主题】
无。
ss_mpi_log_close
【描述】
关闭日志文件。
【语法】
【参数】
无。
【返回值】
无。
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_sys_set_dump_debug_attr
【描述】
设置系统的存帧调试属性。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
- 仅Hi3516CV610/Hi3516CV608支持此接口。
- 此接口仅用于调试,不建议商用。当用户业务无足够VB(如64M DDR)进行存图以调试图像质量时,可使用此接口来复用编码参考帧来辅助存图。
- 存图位置仅支持VI物理pipe和VPSS物理chn。
-
此接口使用时需要与其它接口配合使用,使用方法如下:
- 使用此接口前,需要停止并重置所有编码通道。调用ss_mpi_venc_stop_chn和ss_mpi_venc_reset_chn(具体请参考视频编码章节)。
- 选择存图位置,使能dump debug属性,此时SYS内部会从编码获取通道下的最大参考帧用于存图。
- 若存图位置在VPSS,关闭通道,关闭通道低延时、通道卷绕,并将通道属性中的深度设置为1、压缩模式设置为非压,最后打开通道。若存图位置在VI,关闭pipe低延时,并将pipe属性中的压缩模式设置为非压缩模式。
- 若存图位置在VPSS,使用ss_mpi_vpss_get_chn_frame(具体请参视频处理子系统章节)获取帧,yuv图存文件后释放帧。若存图位置在VI,使用ss_mpi_vi_get_pipe_frame(具体请参视频输入章节)获取帧,raw图存文件后释放帧。
- 关闭dump debug属性。
- 使用ss_mpi_venc_start_chn(具体请参考视频编码章节)恢复编码通道。
-
若编码的参考帧不满足dump vb大小的要求,则无法正常存图。
- 此接口一开一关为一个完整存图流程,不支持在使能后动态修改dump debug属性。
【举例】
无。
【相关主题】
ss_mpi_sys_get_dump_debug_attr
ss_mpi_sys_get_dump_debug_attr
【描述】
获取系统的存帧调试属性。
【语法】
【参数】
【返回值】
失败,其值参见错误码。 |
【需求】
- 头文件:ot_common_sys.h、ss_mpi_sys.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_sys_set_dump_debug_attr
数据类型
基本数据类型
基本数据类型定义如下:
公共数据类型
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;
typedef unsigned long long td_u64;
typedef long long td_s64;
#ifdef CONFIG_PHYS_ADDR_BIT_WIDTH_64
typedef unsigned long long td_phys_addr_t;
#else
typedef unsigned int td_phys_addr_t;
#endif
typedef td_u32 td_handle;
typedef uintptr_t td_uintptr_t;
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
/* 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附加信息BNR MOT MASK */
#define OT_VB_SUPPLEMENT_BNR_MOT_MASK 0x8
/* 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
【说明】
最大的视频缓存池个数。
【定义】
Hi3519DV500:
Hi3516CV610/Hi3516CV608:
Hi3511CV100:
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MAX_COLOR_COMPONENT
【说明】
定义颜色分量个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_QUAD_POINT_NUM
【说明】
定义不规则四边形的坐标点个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_mod_id
【说明】
定义模块ID枚举类型。
【定义】
typedef enum {
OT_ID_MEM = 0,
OT_ID_VB = 1,
OT_ID_SYS = 2,
OT_ID_RGN = 3,
OT_ID_BASE = 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_CHNL = 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_VCA = 46,
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_NPUDEV = 67,
OT_ID_AICPU = 68,
OT_ID_NPUDFX = 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_NPU = 81,
OT_ID_HNR = 82,
OT_ID_SNAP = 83,
OT_ID_LOG_MDC = 84,
OT_ID_VENC_SVR = 85,
OT_ID_AB = 86,
OT_ID_VO_DEV = 87,
OT_ID_IRQ = 88,
OT_ID_AIISP = 89,
OT_ID_UVC = 90,
OT_ID_VI_RGBW = 91,
OT_ID_ACODEC = 92,
OT_ID_SVAC3E = 93,
OT_ID_MIPIRX = 94,
OT_ID_AIDETECT = 95,
OT_ID_DEVSTAT = 96,
OT_ID_PSFM = 97,
OT_ID_UVC_HOST = 98,
OT_ID_VSIPS = 99,
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_SVAC3 = 1008,
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,
OT_VB_UID_VGS,
OT_VB_UID_VENC,
OT_VB_UID_VDEC,
OT_VB_UID_H265E,
OT_VB_UID_H264E,
OT_VB_UID_VPSS,
OT_VB_UID_DIS,
OT_VB_UID_USER,
OT_VB_UID_PCIV,
OT_VB_UID_VFMW,
OT_VB_UID_GDC,
OT_VB_UID_AVS,
OT_VB_UID_DPU_RECT,
OT_VB_UID_DPU_MATCH,
OT_VB_UID_MCF,
OT_VB_UID_VDA,
OT_VB_UID_VPP,
OT_VB_UID_AIISP,
OT_VB_UID_COMMON,
OT_VB_UID_UVC,
OT_VB_UID_SVAC3E,
OT_VB_UID_UVC_HOST,
OT_VB_UID_BUTT,
} ot_vb_uid;
【成员】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
ot_op_mode
【说明】
定义操作模式枚举。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
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_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_point
【说明】
定义坐标信息结构体。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
- ot_rgn_overlay_chn_attr
- ot_rgn_quadrangle
- ot_rgn_bmp_update
- ot_vgs_draw_line
- ot_vgs_quadrangle_cover
ot_size
【说明】
定义大小信息结构体。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
- 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
【说明】
定义矩形区域信息结构体。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
- 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_cover
- ot_mosaic
- ot_crop_info
- ot_aspect_ratio
- ot_vo_video_layer_attr
- ot_vo_chn_attr
- ot_vpss_crop_info
ot_coord
【说明】
定义坐标模式。
【定义】
【成员】
【注意事项】
相对坐标,即坐标值是以与当前图像宽高的比率来表示,具体比率转换以实际使用接口为准。
【相关数据类型及接口】
- ot_rgn_cover_chn_attr
- ot_vpss_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;
【成员】
【注意事项】
无
【相关数据类型及接口】
ot_vo_border
ot_cover
【说明】
定义cover属性结构体。
【定义】
typedef struct {
ot_cover_type type;
union {
ot_rect_cover rect_attr;
ot_quad_cover quad_attr;
};
td_u32 color;
} ot_cover;
【成员】
【注意事项】
无。
【相关数据类型及接口】
- ot_rect_cover
- ot_quad_cover
- ot_cover_type
- ot_rect
ot_cover_type
【说明】
cover类型枚举。
【定义】
【成员】
【注意事项】
无
【相关数据类型及接口】
ot_rect_cover
【说明】
定义矩形Cover属性结构体。
【定义】
【成员】
空心线宽,取值范围为[OT_RGN_COVEREX_MIN_THICK, OT_RGN_COVEREX_MAX_THICK],要求以2对齐。 |
|
【注意事项】
无。
【相关数据类型及接口】
ot_quad_cover
【说明】
定义不规则四边形Cover属性结构体。
【定义】
【成员】
空心线宽,取值范围为[OT_RGN_COVEREX_MIN_THICK, OT_RGN_COVEREX_MAX_THICK],要求以2对齐。具体请参考“区域管理”章节。 |
|
【注意事项】
任意四边形的四个点坐标不可以设置为同一点或者同一直线上。
【相关数据类型及接口】
ot_mosaic
【说明】
定义mosaic属性结构体。
【定义】
typedef struct {
ot_mosaic_blk_size blk_size;
ot_rect rect; /* RW; The rectangle area. */
} ot_mosaic;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
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_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
【说明】
定义corner_rect位置结构体。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_corner_rect_attr
【说明】
定义corner_rect属性结构体。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_crop_info
【说明】
定义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;
【成员】
【注意事项】
无。
【相关数据类型及接口】
- 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;
【成员】
【注意事项】
无。
【相关数据类型及接口】
- 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_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;
【成员】
旋转后的得到的图像大小,如果旋转后截取图像大小相对dst_size有变化,会对图像进行缩放处理。范围:[120x88, 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_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;
【成员】
任意角度旋转属性,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_free_rotation_attr
- ot_rotation_type
- ot_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_OUTPUT_NONE = 0x1 << 7,
OT_FRAME_FLAG_USER_SEND_DISCARD = 0x1 << 8,
OT_FRAME_FLAG_ROTATION_90 = 0x1 << 9,
OT_FRAME_FLAG_ROTATION_270 = 0x1 << 10,
OT_FRAME_FLAG_SVC_FLAG = 0x1 << 11,
OT_FRAME_FLAG_NR_DISCARD = 0x1 << 12,
OT_FRAME_FLAG_DUMP_DEBUG_DISCARD = 0x1 << 13,
OT_FRAME_FLAG_BUTT
} ot_frame_flag;
【成员】
【注意事项】
OT_FRAME_FLAG_USER_SEND_DISCARD标识仅VI支持,用于重复送帧功能,涉及接口ss_mpi_vi_send_pipe_yuv、ss_mpi_vi_send_pipe_raw、ss_mpi_vi_set_pipe_user_pic。
【相关数据类型及接口】
无。
OT_SRC_LENS_COEF_NUM
【说明】
镜头畸变表相关系数个数。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_DST_LENS_COEF_NUM
【说明】
镜头畸变表相关系数个数。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_DIS_PRIVATE_NUM
【说明】
私有通道信息传输数目。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_DIS_MOTIONDATA_NUM
【说明】
防抖运动信息组数。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_DIS_POINT_NUM
【说明】
查询防抖坐标点个数。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
ot_dis_motion_data
【说明】
定义防抖运动信息。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_dis_motion_info
【说明】
定义防抖运动信息配置。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_dst_point_info
【说明】
定义防抖后输出坐标点信息。
【定义】
【成员】
|
取值范围:[0, OT_DIS_POINT_NUM]。 |
|
【注意事项】
无。
【相关数据类型及接口】
无。
ot_dis_motion_data_info
【说明】
定义防抖运动信息和坐标偏移信息。
【定义】
typedef struct {
ot_dis_motion_info gme_motion_data;
ot_dis_motion_info fliter_motion_data;
ot_dst_point_info dst_point_info;
td_s32 private_data[OT_DIS_PRIVATE_NUM];
} ot_dis_motion_data_info;
【成员】
【注意事项】
GMEDIS防抖场景,GME运动信息gme_motion_data和滤波运动信息fliter_motion_data可以通过fliter_motion_data的valid判断是否可用。
【相关数据类型及接口】
无。
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;
【成员】
【注意事项】
- center_x_offset取值范围:[-511, 511]
- center_y_offset取值范围:[-511, 511];同时矫正中心点须落在图像内。
- distortion_ratio取值范围:[-300, 500],其中[-300, 0)对应枕形模式畸变的畸变率,[0, 500]对应桶形模式畸变的畸变率。
- x_ratio、y_ratio取值范围参考《GDC调试指南》。
【相关数据类型及接口】
无。
ot_distortion_mode
【说明】
定义DIS_LDC的镜头畸变模型。
【定义】
typedef enum {
OT_DIST_STANDARD_PINHOLE = 0,
OT_DIST_RATIONAL_PINHOLE,
OT_DIST_FISHEYE,
OT_DIST_MODE_BUTT,
} ot_distortion_mode;
【成员】
【注意事项】
- 当前DIS_LDC不支持鱼眼模型。
- 有理多项式针孔模型只能在GYRO_ADVANCE防抖模式下使用。
【相关数据类型及接口】
无。
ot_dis_ldc_attr
【说明】
定义防抖场景下镜头畸变校正属性。
【定义】
typedef struct {
td_s32 focal_len_x;
td_s32 focal_len_y;
td_s32 coord_shift_x;
td_s32 coord_shift_y;
ot_distortion_mode distortion_mode;
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_dis_ldc_attr;
【成员】
【注意事项】
-
DIS_LDC功能不能与LDC功能同时使用。
-
如果经过缩放后输入分辨率存在变化,则需要按照比例对镜头畸变校正属性进行转换,以4K转换为1080P为例:
focal_len_x' = focal_len_x * 1920 / 3840
focal_len_y' = focal_len_y * 1080 / 2160
coord_shift_x' = coord_shift_x * 1920 / 3840
coord_shift_y' = coord_shift_y * 1080 / 2160
其中,focal_len_x、focal_len_y、coord_shift_x、coord_shift_y属于4K参数,focal_len_x'、focal_len_y'、coord_shift_x'、coord_shift_y'属于1080P参数。
【相关数据类型及接口】
无。
ot_ldc_v2_attr
【说明】
定义OT_LDC_V2版本的镜头畸变校正属性。
【定义】
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_v2_attr;
【成员】
镜头畸变系数,其中[0]固定为1*10^5,[4],[5],[6],[7]固定为0,[8]固定为3200000,其他成员范围均为[-16*10^5, 16*10^5]。 |
|
镜头畸变系数,其中[0]固定为1*10^5,[4],[5],[6],[7]固定为0,[8]固定为3200000,其他成员范围均为[-16*10^5, 16*10^5]。 |
|
【注意事项】
x_ratio、y_ratio取值范围参考《GDC调试指南》。
如果输入分辨率存在变化,则需要按照比例对镜头畸变校正属性进行转换,以4K转换为1080P为例:
focal_len_x' = focal_len_x * 1920 / 3840
focal_len_y' = focal_len_y * 1080 / 2160
coord_shift_x' = coord_shift_x * 1920 / 3840
coord_shift_y' = coord_shift_y * 1080 / 2160
其中,focal_len_x、focal_len_y、coord_shift_x、coord_shift_y属于4K参数,focal_len_x'、focal_len_y'、coord_shift_x'、coord_shift_y'属于1080P参数。
【相关数据类型及接口】
无。
ot_ldc_view_type
【说明】
定义OT_LDC_V3版本的视角类型。
【定义】
typedef enum {
OT_LDC_VIEW_TYPE_ALL = 0,
OT_LDC_VIEW_TYPE_CROP = 1,
OT_LDC_VIEW_TYPE_BUTT
} ot_ldc_view_type;
【成员】
【注意事项】
- 完整视角类型:使用视角缩放但是x轴和y轴相对独立,这将保证宽高,但角落图像内容可能丢失。
- 裁剪视角类型:不使用视角缩放,这将丢失部分边缘和角落图像内容。
【相关数据类型及接口】
无
ot_ldc_v3_attr
【说明】
定义OT_LDC_V3版本的镜头畸变校正属性。
【定义】
typedef struct {
ot_ldc_view_type view_type;
td_s32 center_x_offset;
td_s32 center_y_offset;
td_s32 distortion_ratio;
td_s32 min_ratio;
} ot_ldc_v3_attr;
【成员】
【注意事项】
- center_x_offset绝对值取值范围:[0, min(128, width*0.08)],其中width为图像宽度。
- center_y_offset绝对值取值范围:[0, min(128, height*0.08)],其中height为图像高度。
- distortion_ratio取值范围:[-300, 300],其中[-300, 0)对应枕形模式畸变的畸变率,[0, 300]对应桶形模式畸变的畸变率。
- min_ratio取值范围:[-300, 300]
【相关数据类型及接口】
无
ot_ldc_version
【说明】
定义LDC版本。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
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;
【成员】
【注意事项】
设置LDC属性时,需要打开使能开关enable。
【相关数据类型及接口】
无。
ot_spread_attr
【说明】
定义展宽属性的相关配置。
【定义】
【成员】
关闭或打开展宽功能。当开启展宽(Spread)时,LDC的distortion_ratio取值范围只能为 [0, 500],即只支持LDC的桶形模式。 |
|
【注意事项】
无。
【相关数据类型及接口】
无。
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;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_isp_dcf_info
OT_DCF_CAPTURE_TIME_LENGTH
【说明】
Jpeg图片拍摄的时间长度。
【定义】
【成员】
无
【注意事项】
无
【相关数据类型及接口】
无
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_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_u32 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_s32 sync_id;
td_u32 blc_sync_id;
td_bool dgain_agamma_en;
} ot_isp_frame_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_isp_hdr_info
【说明】
ISP的HDR信息。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
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;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_isp_colorgammut_info
【说明】
ISP的色域信息。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_dng_rational
【说明】
定义DNG的无符号除法结构体。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
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是12bit对应的黑电平。
【相关数据类型及接口】
无
OT_ISP_BAYER_CHN
【说明】
BAYER通道数
【定义】
【成员】
无
【注意事项】
无
【相关数据类型及接口】
无
OT_CFACOLORPLANE
【说明】
滤色阵列的颜色分量
【定义】
【成员】
无
【注意事项】
无
【相关数据类型及接口】
无
OT_DNG_NP_SIZE
【说明】
DNG NP大小
【定义】
【成员】
无
【注意事项】
无
【相关数据类型及接口】
无
ot_pmf_attr
【说明】
定义PMF属性的相关配置。
【定义】
typedef struct {
td_bool enable; /* RW; Range [0,1]; Whether or not pmf is enable */
ot_size dst_size;
td_s64 pmf_coef[OT_GDC_COMMON_COEF_NUM]; /* RW; PMF coefficient of gdc */
} ot_pmf_attr;
【成员】
【注意事项】
无。
【相关数据类型及接口】
- ss_mpi_vpss_set_grp_pmf
- ss_mpi_vpss_get_grp_pmf
ot_fov_attr
【说明】
定义视场角矫正属性。
【定义】
typedef struct {
td_bool enable; /* RW; Range [0,1]; Whether or not fov is enable */
td_s64 fov_coef[OT_GDC_COMMON_COEF_NUM]; /* RW; matrix for match the two */
} ot_fov_attr;
【成员】
【注意事项】
视场角矫正pmf系数范围:
- range of coef[0] is [314572, 1782578]
- range of coef[1] is [-734002, 734002]
- range of coef[2] is [-2147483647, 2147483646]
- range of coef[3] is [-734002, 734002]
- range of coef[4] is [314572, 1782578]
- range of coef[5] is [-2147483647, 2147483646]
- range of coef[6] is [-52, 208]
- range of coef[7] is [-52, 208]
- range of coef[8] is 1048576
【相关数据类型及接口】
- ss_mpi_vpss_set_grp_fov
- ss_mpi_vpss_get_grp_fov
ot_lut_cell_size
【说明】
定义单元格大小。
【定义】
typedef enum {
OT_LUT_CELL_SIZE_16,
OT_LUT_CELL_SIZE_32,
OT_LUT_CELL_SIZE_64,
OT_LUT_CELL_SIZE_128,
OT_LUT_CELL_SIZE_256,
OT_LUT_CELL_SIZE_BUTT
} ot_lut_cell_size;
【成员】
【注意事项】
无。
【相关数据类型及接口】
- ot_gdc_task_attr
- ot_gdc_param
- ot_lut
ot_gdc_param
【说明】
定义gdc属性。
【定义】
typedef struct {
ot_size in_size; /* gdc input size, default: grp_attr.max_width, grp_attr.max_height */
ot_lut_cell_size cell_size; /* gdc function cell size, default:OT_LUT_CELL_SIZE_16 */
} ot_gdc_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
- ss_mpi_vpss_set_grp_gdc_param
- ss_mpi_vpss_get_grp_gdc_param
ot_lut
【说明】
定义LUT查找表导入模式。
【定义】
typedef struct {
ot_size in_size; /* lut in size */
ot_size out_size; /* lut out size */
ot_lut_cell_size cell_size; /* lut cell size */
td_phys_addr_t lut_phys_addr; /* phys addr of lut */
td_u32 lut_len; /* length of lut */
} ot_lut;
【成员】
lut查找表有效数据存放物理地址。表格每一行数据需按照stride排列,可按照ss_gdc_get_lut_buf_stride根据图像输出宽与单元格大小计算。 |
|
【注意事项】
无。
【相关数据类型及接口】
ot_lut_mode
【说明】
定义LUT查找表导入模式。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_lut_attr
【说明】
定义LUT查找表参数配置。
【定义】
typedef struct {
td_bool pre_lut_en; /* RW; Range [0,1]; Whether or not the pre lut is enable */
ot_lut pre_lut; /* RW; pre lut */
td_bool post_lut_en; /* RW; Range [0,1]; Whether or not the post lut is enable */
ot_lut post_lut; /* RW; post lut */
ot_lut_mode lut_mode; /* RW; lut mode */
td_u32 ratio; /* RW; range: [0, 32768]; fusion ratio of two lut */
} ot_lut_attr;
【成员】
【注意事项】
无。
【相关数据类型及接口】
- ss_mpi_vpss_set_grp_lut
- ss_mpi_vpss_get_grp_lut
- ss_mpi_gdc_add_lut_task
ot_blend_param
【说明】
融合拼接融合区域属性。
【定义】
typedef struct {
td_u32 blend_position; /* RW; blend position */
td_u32 blend_range; /* RW; blend range */
} ot_blend_param;
【成员】
融合区域大小,最大值为融合区域最大值。blend_position和blend_range之和不大于overlap(融合区域),融合区域最大值为512。 |
【注意事项】
无。
【相关数据类型及接口】
ot_stitch_blend_param
【说明】
融合拼接属性。
【定义】
typedef struct {
td_u32 buf_num; /* RW; Range [0, 5]; buffer number of blend area */
ot_blend_param blend_param[OT_GDC_MAX_STITCH_NUM - 1]; /* RW; param of stitch blend */
} ot_stitch_blend_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
- ss_mpi_vpss_set_grp_stitch_blend_param
- ss_mpi_vpss_get_grp_stitch_blend_param
ot_stitch_mode
【说明】
定义拼接模式。
【定义】
typedef enum {
OT_STITCH_BLEND,
OT_STITCH_NOBLEND_VER,
OT_STITCH_NOBLEND_HOR,
OT_STITCH_NOBLEND_QR,
OT_STITCH_BUTT
} ot_stitch_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_stitch_luma_sync_param
【说明】
拼接亮度同步属性。
【定义】
typedef struct {
td_s32 isp_pipe[OT_GDC_MAX_STITCH_NUM]; /* W; isp pipe of bind stitch in pipe */
td_u32 milli_sec; /* W; Range [100, 10000]; sync time interval, millisecond */
td_u8 smooth_strength; /* W; Range [1, 16]; vertical filter window size */
td_u8 shading_adjust_threshold; /* W; Range [0, 255]; shading gain range */
} ot_stitch_luma_sync_param;
【成员】
【注意事项】
- 如果配置了sys绑定,isp_pipe参数不会被使用。
- 如果未配置sys绑定,将会使用isp_pipe参数调整对应isp_pipe图像,请保证与拼接输入pipe一一对应。
- 拼接同步模式OT_VI_STITCH_CFG_MODE_SYNC下,不支持亮度一致性功能。
- 亮度一致性功能只支持lut查找表矫正的拼接模式。
- 开启亮度一致性功能时,会强制使能Mesh Shading算法。
- 开启亮度一致性功能后,Mesh Shading相关参数会内部配置,不支持手动修改。
- 调节亮度一致性的参数时,需要先终止数据流,改变参数之后,再开启数据流。
- 拼接亮度同步时间间隔配置较短时CPU占用率比较高,当前建议一般场景同步时间配置为1000ms,此时拼缝处画面大幅变化时矫正所需时间可能会较长。
【相关数据类型及接口】
ss_mpi_vpss_start_grp_stitch_luma_sync
ot_stitch_correction_mode
【说明】
定义拼接矫正模式。
【定义】
typedef enum {
OT_STITCH_CORRECTION_CYLINDRICAL,
OT_STITCH_CORRECTION_LUT,
OT_STITCH_CORRECTION_BUTT
} ot_stitch_correction_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_cylindrical_attr
【说明】
定义拼接柱面投影矫正参数。
【定义】
typedef struct {
td_bool pmf_enable; /* RW; Range [0, 1]; Whether or not pmf is enable */
td_s64 pmf_coef[OT_GDC_COMMON_COEF_NUM]; /* RW; PMF coefficient of gdc */
td_s32 center_x_offset; /* RW; offset of x */
td_s32 center_y_offset; /* RW; offset of y */
td_u32 ratio; /* RW: ratio of cylindrical projection */
ot_size dst_size; /* RW: destination size of stitch pipe */
} ot_cylindrical_attr;
【成员】
拼接矫正输出图像大小,为多路实际拼接输出大小,涉及overlap。
|
【注意事项】
Hi3519DV500支持此接口。
【相关数据类型及接口】
ot_stitch_correction_attr
【说明】
定义拼接矫正模式参数。
【定义】
typedef union {
/* attribute of cylindrical mode. AUTO:ot_stitch_correction_mode: OT_STITCH_CORRECTION_CYLINDRICAL; */
ot_cylindrical_attr cylindrical_attr;
/* attribute of lut mode. AUTO:ot_stitch_correction_mode: OT_STITCH_CORRECTION_LUT; */
ot_lut lut;
} ot_stitch_correction_attr;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_stitch_attr
【说明】
定义拼接矫正参数。
【定义】
typedef struct {
td_bool enable; /* RW; Range [0, 1]; Whether or not stitch is enable */
td_u32 pipe_num; /* RW; Range [2, 4]; stitch pipe number */
td_bool sync_pipe_en; /* RW; Range [0, 1]; sync pipe with pts or not */
ot_stitch_mode stitch_mode; /* RW; stitch mode: blend/noblend_ver/noblend_hor/noblend_qr
*/
ot_point overlap_point[OT_GDC_MAX_STITCH_NUM][2]; /* RW; start and end position of overlap area */
ot_stitch_correction_mode correction_mode; /* RW; correction mode: cylindrical/lut */
ot_stitch_correction_attr correction_attr[OT_GDC_MAX_STITCH_NUM]; /* RW; attribute of correction */
} ot_stitch_attr;
【成员】
【注意事项】
- 使能拼接后,拼接路数、拼接区域点范围不支持动态修改。
- 融合拼接时第一个拼接区域的点需为0点,最后一个拼接区域的点需为图像宽。
- 融合拼接时overlap_point点y值需要设置为0,overlap_point[0][1].x表示拼接融合区域的位置,是相对于每一路的相对坐标,例如对一路宽为1920的图像,设置overlap_point[1][0].x=20,overlap_point[1][1].x=1890,表示其左端融合区域宽为20-0=20像素,右端融合区域宽为1920-1890=30像素。
- 两路的输入图像的重叠区域需要设置一样大,例如overlap_point[1][0].x=20,overlap_point[0][1].x=1920 -20,左重叠区域大小 left overlap=1920-overlap_point[0][1].x=20,右重叠区域大小right overlap=overlap_point[1][0].x=20。
- 每一个拼接块内的拼接区域的图像高需相等。
- 融合拼接时,每个融合拼接块宽高需相等。
- overlap_point值与vgs做融合任务时输入宽的范围有关,融合区域不能超出vgs输入限制。
【相关数据类型及接口】
- ss_mpi_vpss_set_grp_stitch
- ss_mpi_vpss_get_grp_stitch
ot_fmu_mode
【说明】
定义FMU模式枚举。
【定义】
typedef enum {
OT_FMU_MODE_OFF,
OT_FMU_MODE_WRAP,
OT_FMU_MODE_DIRECT,
OT_FMU_MODE_BUTT
} ot_fmu_mode;
【成员】
【注意事项】
无
【相关数据类型及接口】
- ss_mpi_vi_set_chn_fmu_mode
- ss_mpi_vi_get_chn_fmu_mode
- ss_mpi_vpss_set_chn_fmu_mode
- ss_mpi_vpss_get_chn_fmu_mode
ot_nr_param_auto_v1
【说明】
定义Hi3519DV500的3DNR自动模式参数。
【定义】
typedef struct {
td_u32 param_num;
td_u32 ATTRIBUTE *iso;
ot_nr_v1 ATTRIBUTE *nr_param;
} ot_nr_param_auto_v1;
【成员】
【注意事项】
- 此结构体用于Hi3519DV500。
- iso和nr_param指向的数组成员个数都必须与param_num一致。
- iso与nr_param存在一一对应关系。param_num、ISO值与nr_param参数为动态参数,用户可根据需求自由配置,其中最大组合数目不得大于16,ISO值必须从小到大配置,范围为[100, 3276800]。
- 如图像实际ISO值超出用户配置的ISO边界值,按边界值计算。
- 使用自动模式时,不管设置还是获取,用户必须根据3DNR自动模式配置标准参数的个数申请相应大小的内存。
- 业务运行过程中,如果VPSS获取的ISO值处于某一区间内,实际配置的3DNR参数为该区间左值对应的标准参数与右值对应的标准参数进行差值运算所得。
【相关数据类型及接口】
ot_nr_param_manual_v1
【说明】
定义Hi3519DV500的3DNR手动模式参数。
【定义】
【成员】
3DNR接口的标准参数。ot_nr_v1的定义见《Hi3519DV500/Hi3516DV500 3DNR参数配置说明》。 |
【注意事项】
此结构体用于Hi3519DV500。
【相关数据类型及接口】
ot_nr_norm_param_v1
【说明】
定义Hi3519DV500的3DNR标准参数。
【定义】
typedef struct {
ot_op_mode op_mode;
ot_nr_param_manual_v1 nr_manual;
ot_nr_param_auto_v1 nr_auto;
} ot_nr_norm_param_v1;
【成员】
【注意事项】
此结构体用于Hi3519DV500。
【相关数据类型及接口】
无
ot_nr_param_auto_v2
【说明】
定义Hi3516CV610/Hi3516CV608的3DNR自动模式参数。
【定义】
typedef struct {
td_u32 param_num;
td_u32 ATTRIBUTE *iso;
ot_nr_v2 ATTRIBUTE *nr_param;
} ot_nr_param_auto_v2;
【成员】
【注意事项】
- 此结构体用于Hi3516CV610/Hi3516CV608。
- iso和nr_param指向的数组成员个数都必须与param_num一致。
- iso与nr_param存在一一对应关系。param_num、ISO值与nr_param参数为动态参数,用户可根据需求自由配置,其中最大组合数目不得大于16,ISO值必须从小到大配置,范围为[100, 3276800]。
- 如图像实际ISO值超出用户配置的ISO边界值,按边界值计算。
- 使用自动模式时,不管设置还是获取,用户必须根据3DNR自动模式配置标准参数的个数申请相应大小的内存。
- 业务运行过程中,如果VPSS获取的ISO值处于某一区间内,实际配置的3DNR参数为该区间左值对应的标准参数与右值对应的标准参数进行差值运算所得。
【相关数据类型及接口】
ot_nr_param_manual_v2
【说明】
定义Hi3516CV610/Hi3516CV608 的3DNR手动模式参数。
【定义】
【成员】
3DNR接口的标准参数。ot_nr_v2的定义见《Hi3516CV610╱Hi3516CV608 3DNR参数配置说明》。 |
【注意事项】
此结构体用于Hi3516CV610/Hi3516CV608 。
【相关数据类型及接口】
ot_nr_norm_param_v2
【说明】
定义Hi3516CV610/Hi3516CV608的3DNR标准参数。
【定义】
typedef struct {
ot_op_mode op_mode;
ot_nr_param_manual_v2 nr_manual;
ot_nr_param_auto_v2 nr_auto;
} ot_nr_norm_param_v2;
【成员】
【注意事项】
此结构体用于Hi3516CV610/Hi3516CV608。
【相关数据类型及接口】
无
ot_nr_version
【说明】
3DNR版本枚举。
【定义】
【成员】
对于3DNR接口:
【注意事项】
无
【相关数据类型及接口】
无
ot_3dnr_param
【说明】
定义3DNR标准参数属性。
【定义】
typedef struct {
ot_nr_version nr_version;
union {
ot_nr_norm_param_v1 nr_norm_param_v1;
ot_nr_norm_param_v2 nr_norm_param_v2;
};
} ot_3dnr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
- ss_mpi_vpss_set_grp_3dnr_param
- ss_mpi_vi_set_pipe_3dnr_param
- ss_mpi_vpss_get_grp_3dnr_param
- ss_mpi_vi_get_pipe_3dnr_param
ot_nr_type
【说明】
定义3DNR类型枚举。
【定义】
typedef enum {
OT_NR_TYPE_VIDEO_NORM = 0,
OT_NR_TYPE_SNAP_NORM,
OT_NR_TYPE_VIDEO_SPATIAL,
OT_NR_TYPE_VIDEO_ENHANCED,
OT_NR_TYPE_BUTT
} ot_nr_type;
【成员】
【注意事项】
- Hi3519DV500仅支持OT_NR_TYPE_VIDEO_NORM、OT_NR_TYPE_SNAP_NORM和OT_NR_TYPE_VIDEO_SPATIAL。
- Hi3516CV610/Hi3516CV608仅支持OT_NR_TYPE_VIDEO_NORM和OT_NR_TYPE_VIDEO_SPATIAL。
- 用户送帧处理场景,如果不是持续送画面内容连续的YUV,建议使用3DNR OT_NR_TYPE_VIDEO_SPATIAL模式。此模式仅做空域处理,不分配参考帧内存。
- 抓拍场景,建议使用OT_NR_TYPE_SNAP_NORM模式。此模式仅做空域处理,不分配参考帧内存,仅处理ss_mpi_snap_trigger_pipe触发的抓拍帧,抓拍相关描述参考《抓拍 使用指南》。
- VI在线模式下且3DNR在VI时,或VI_VPSS全在线模式下且3DNR在VPSS时,使用OT_NR_TYPE_SNAP_NORM模式,抓拍特殊处理不生效,会正常写出所有帧,建议该模式在离线下使用。
【相关数据类型及接口】
ot_nr_motion_mode
【说明】
定义3DNR运动矢量模式。
【定义】
typedef enum {
OT_NR_MOTION_MODE_NORM = 0, /* Normal. */
OT_NR_MOTION_MODE_COMPENSATION, /* Motion compensate. */
OT_NR_MOTION_MODE_BUTT
} ot_nr_motion_mode;
【成员】
【注意事项】
Hi3519DV500/Hi3516CV610/Hi3516CV608只支持OT_NR_MOTION_MODE_NORM类型。
【相关数据类型及接口】
ot_3dnr_attr
【说明】
定义3DNR属性。
【定义】
typedef struct {
td_bool enable;
ot_nr_type nr_type; /* RW; 3DNR type. */
ot_compress_mode compress_mode; /* RW; Reference frame compression mode. */
ot_nr_motion_mode nr_motion_mode; /* RW; 3DNR motion compensate mode. */
td_u32 nr_motion_depth; /* RW; 3DNR motion buffer size. */
} ot_3dnr_attr;
【成员】
【注意事项】
- 开3DNR时,压缩格式只支持帧压缩和非压缩,而且压缩方式不能动态改变。
- 开3DNR时,不支持动态修改通道像素格式;通道出raw格式时,不支持开3DNR。
- nr_type支持动态修改。
- nr_motion_depth可以配置为0或[3,8],默认值为0,此时没有缓存池,无法获取运动信息。当配置为[3,8]时,预留2个缓存供逻辑读写使用,用户可以获取的缓存数量实际为[1,6]。
- nr_motion_depth不支持动态修改。仅在3dnr切换为开启时才能修改,不支持在3dnr开启后修改。
【相关数据类型及接口】
- ss_mpi_vpss_set_grp_3dnr_attr
- ss_mpi_vi_set_pipe_3dnr_attr
- ss_mpi_vpss_get_grp_3dnr_attr
- ss_mpi_vi_get_pipe_3dnr_attr
ot_aiseg_point_delta
【说明】
定义点模式下的图像中某个智能分割多边形相邻点的坐标差值集合结构体。
【定义】
【成员】
【注意事项】
- 该数据结构仅Hi3511CV100支持。在多片互联传输场景,该数据结构将随单独的补丁包提供给主控芯片,以用于支持多片传输。主控芯片范围请参考《多片互联传输开发指南》。
- delta_x和delta_y其中一个超出取值范围,VENC将丢弃该点数据,强制编码为delta_x=0和delta_y=0。
【相关数据类型及接口】
ot_aiseg_point
【说明】
定义点模式下的图像中某个智能分割多边形的点信息结构体。
【定义】
typedef struct {
td_u8 prob;
td_u8 point_num;
td_u16 base_point_x;
td_u16 base_point_y;
} ot_aiseg_point;
【成员】
表示一个智能分割区域的类别概率值,值为0表示不生效,无概率值信息;其他值表示的概率值可由使用者自行定义,建议1表示概率值1%,100表示概率值100%,n表示概率值n%。 |
|
【注意事项】
- 1*ot_aiseg_point和 point_num *ot_aiseg_point_delta表示一个目标物体的分割点信息,在可变附属信息vb中连续存储。
- 该数据结构仅Hi3511CV100支持。在多片互联传输场景,该数据结构将随单独的补丁包提供给主控芯片,以用于支持多片传输。主控芯片范围请参考《多片互联传输开发指南》。
【相关数据类型及接口】
ot_aiseg_point_category
【说明】
定义点模式下的图像中某个智能分割区域的类别信息结构体。
【定义】
【成员】
【注意事项】
- 1*ot_aiseg_point_category和aiseg_num* 单个目标物体,表示某个类别的分割点信息,在可变附属信息vb中连续存储。
- 单个目标物体的表示请参考ot_aiseg_point。
- 该数据结构仅Hi3511CV100支持。在多片互联传输场景,该数据结构将随单独的补丁包提供给主控芯片,以用于支持多片传输。主控芯片范围请参考《多片互联传输开发指南》。
【相关数据类型及接口】
ot_aiseg_point_info
【说明】
定义点模式下的图像中语义分割点的信息结构体。
【定义】
【成员】
【注意事项】
- 1*ot_aiseg_point_info和category_num* 某个类别分割点信息,表示当前图像的所有分割点信息,在可变附属信息vb中连续存储。
- 某个类别分割点信息表示请参考ot_aiseg_point_category。
- 该数据结构仅Hi3511CV100支持。在多片互联传输场景,该数据结构将随单独的补丁包提供给主控芯片,以用于支持多片传输。主控芯片范围请参考《多片互联传输开发指南》。
- 若用户传输的category_num大于31,VENC将仅取前31个category。
【相关数据类型及接口】
ot_aiseg_rect
【说明】
定义框模式下的图像中某个智能分割四边形的坐标信息结构体。
【定义】
【成员】
表示一个智能分割四边形的类别概率值,值为0表示不生效,无概率值信息;其他值表示的概率值可由使用者自行定义,建议1表示概率值1%,100表示概率值100%,n表示概率值n%。 |
|
【注意事项】
该数据结构仅Hi3511CV100支持。在多片互联传输场景,该数据结构将随单独的补丁包提供给主控芯片,以用于支持多片传输。主控芯片范围请参考《多片互联传输开发指南》。
【相关数据类型及接口】
ot_aiseg_rect_category
【说明】
定义框模式下的图像中某个智能分割区域的类别信息结构体。
【定义】
【成员】
【注意事项】
- 1*ot_aiseg_rect_category和aiseg_num* ot_aiseg_rect,表示某类别的框信息,在可变附属信息vb中连续存储。
- 该数据结构仅Hi3511CV100支持。在多片互联传输场景,该数据结构将随单独的补丁包提供给主控芯片,以用于支持多片传输。主控芯片范围请参考《多片互联传输开发指南》。
【相关数据类型及接口】
ot_aiseg_rect_info
【说明】
定义框模式下的图像中语义分割框的信息结构体。
【定义】
【成员】
【注意事项】
- ot_aiseg_rect_info和category_num 某类别的框信息,表示当前图像所有类别的框信息,在可变附属信息vb中连续存储。
- 某类别的框信息表示请参考ot_aiseg_rect_category。
- 该数据结构仅Hi3511CV100支持。在多片互联传输场景,该数据结构将随单独的补丁包提供给主控芯片,以用于支持多片传输。主控芯片范围请参考《多片互联传输开发指南》。
- 若用户传输的category_num大于31,VENC将仅取前31个category。
【相关数据类型及接口】
ot_aiseg_map_info
【说明】
定义图模式下的图像中语义分割图的信息结构体。
【定义】
typedef struct {
td_u16 map_width;
td_u16 map_height;
td_u8 map_class_num;
td_u8 map_label[OT_AISEG_MAX_CLASS_NUM];
td_u8 map_value[OT_AISEG_MAX_CLASS_NUM];
} ot_aiseg_map_info;
【成员】
map_label[OT_AISEG_MAX_CLASS_NUM] |
|
map_value[OT_AISEG_MAX_CLASS_NUM] |
【注意事项】
该数据结构仅Hi3511CV100支持。在多片互联传输场景,该数据结构将随单独的补丁包提供给主控芯片,以用于支持多片传输。主控芯片范围请参考《多片互联传输开发指南》。
【相关数据类型及接口】
无
OT_AISEG_MAX_CLASS_NUM
【说明】
智能分割图的像素最大类别个数。
【定义】
【成员】
无
【注意事项】
该宏定义仅Hi3511CV100支持。在多片互联传输场景,该数据结构将随单独的补丁包提供给主控芯片,以用于支持多片传输。主控芯片范围请参考《多片互联传输开发指南》。
【相关数据类型及接口】
OT_GDC_COMMON_COEF_NUM
【说明】
矫正系数的参数个数。
【定义】
【成员】
无
【注意事项】
无
【相关数据类型及接口】
OT_GDC_MAX_STITCH_NUM
【说明】
最大拼接路数。
【定义】
【成员】
无
【注意事项】
无
【相关数据类型及接口】
OT_NR_S_IDX_LEN
【说明】
空域NR强度数组长度。
【定义】
【成员】
无
【注意事项】
无
【相关数据类型及接口】
OT_FMU_MIN_PAGE_NUM
【说明】
最小卷绕空间页表个数。
【定义】
【成员】
无
【注意事项】
无
【相关数据类型及接口】
OT_FMU_MAX_Y_PAGE_NUM
【说明】
最大亮度卷绕空间页表个数。
【定义】
【成员】
无
【注意事项】
无
【相关数据类型及接口】
OT_FMU_MAX_C_PAGE_NUM
【说明】
最大色度卷绕空间页表个数。
【定义】
【成员】
无
【注意事项】
无
【相关数据类型及接口】
ot_zoom_attr
【说明】
定义vpss grp 裁剪放大属性。
【定义】
typedef struct {
td_bool enable; /* RW; Range: [0, 1]; Zoom enable. */
ot_coord mode; /* RW; Coordinate mode of zoom. */
ot_rect rect; /* RW; Zoom rectangular. */
} ot_zoom_attr;
【成员】
【注意事项】
只支持绝对或相对裁剪
【相关数据类型及接口】
- ss_mpi_vpss_set_grp_zoom_in_window
- ss_mpi_vpss_get_grp_zoom_in_window
系统控制数据类型
系统控制相关数据类型定义如下:
- 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_sys_mmz_status:定义MMZ相关状态的结构体。
- 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_type:定义视频缓存池类型枚举类型。
- 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_aiisp_mode:定义VI模块AIISP模式。
- ot_ext_chn_src_type:定义扩展通道的图像来源。
- ot_raw_frame_compress_param:定义VI模块RAW数据的压缩比。
- ot_3dnr_pos_type:定义3DNR位置类型枚举。
- ot_fmu_id:定义FMU ID枚举。
- ot_fmu_attr:定义FMU配置属性结构体。
- ot_vpss_venc_wrap_param:定义VPSS-VENC卷绕参数结构体。
- ot_vi_wrap_in_param:定义VICAP-VIPROC离线卷绕参数结构体。
- ot_vi_pipe_wrap_param:定义VI PIPE卷绕参数结构体。
- ot_vi_slave_wrap_param:定义VI PIPE卷绕参数结构体。
- ot_vi_wrap_out_param:定义VICAP-VIPROC离线卷绕输出卷绕行数。
- ot_sys_dump_debug_attr:定义系统的存帧调试属性。
OT_MAX_BIND_DST_NUM
【说明】
定义绑定目标的最大个数。
【定义】
Hi3519DV500:
Hi3516CV610/Hi3516CV608/Hi3511CV100:
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MAX_VERSION_NAME_LEN
【说明】
定义版本名称的最大长度。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_MAX_MOD_NAME_LEN
【说明】
定义模块名称的最大长度。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_UNIQUE_ID_NUM
【说明】
定义unique ID长度。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_mpp_sys_cfg
【说明】
定义MPP系统控制属性结构体。
【定义】
【成员】
整个系统中使用图像的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
【说明】
定义模块设备通道结构体。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_mpp_bind_dst
【说明】
定义MPP系统绑定目的信息结构体。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_mpp_version
【说明】
定义MPP版本描述结构体。
【定义】
【成员】
【注意事项】
无
【相关数据类型及接口】
ot_sys_virt_mem_info
【说明】
定义虚拟内存信息结构体。
【定义】
【成员】
【注意事项】
无
【相关数据类型及接口】
ot_sys_mem_info
【说明】
定义mmz buffer的内存描述信息结构体。
【定义】
【成员】
【注意事项】
无
【相关数据类型及接口】
ot_sys_mmz_status
【说明】
定义MMZ相关状态的结构体。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_unique_id
【说明】
定义unique ID结构体。
【定义】
【成员】
【注意事项】
无
【相关数据类型及接口】
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_19, /* coefficient level 19 */
OT_COEF_LEVEL_BUTT,
} ot_coef_level;
【成员】
无
【注意事项】
无
【相关数据类型及接口】
ot_scale_range
【说明】
定义VPSS和VGS的水平和垂直缩放比例范围的结构体。
【定义】
【成员】
【注意事项】
无
【相关数据类型及接口】
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;
【成员】
【注意事项】
各缩放比例下默认的缩放系数等级表,如表1所示。
表 1 各缩放比例下默认缩放参数等级表
注:(SR_x表示OT_ SCALE_RANGE_x,CL_x表示OT_ COEF_LEVEL_x)
【相关数据类型及接口】
ot_vb_pool_type
【说明】
定义视频缓存池类型枚举类型。
【定义】
typedef enum {
OT_VB_POOL_TYPE_COMMON = 0,
OT_VB_POOL_TYPE_PRIVATE,
OT_VB_POOL_TYPE_MODULE,
OT_VB_POOL_TYPE_USER,
OT_VB_POOL_TYPE_BUTT
} ot_vb_pool_type;
【成员】
【注意事项】
无
【相关数据类型及接口】
无
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;
【成员】
【注意事项】
无
【相关数据类型及接口】
无
ot_vb_cfg
【说明】
定义视频缓存池属性结构体。
【定义】
typedef struct {
td_u32 max_pool_cnt;
ot_vb_pool_cfg common_pool[OT_VB_MAX_COMMON_POOLS];
} ot_vb_cfg;
【成员】
|
取值范围:(0, OT_VB_MAX_POOLS] 保留,目前内部固定取值OT_VB_MAX_POOLS。 |
|
【注意事项】
- 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应根据当前图像宽高、像素格式、数据位宽、是否压缩等来计算。详细计算方法请参见视频缓存池大小计算接口和代码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_common_pools_id
【说明】
定义公共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;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
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_ONLINE,OT_VI_ONLINE_VPSS_ONLINE模式下VI PIPE编号与VPSS GROUP号一一对应,数据从VI PIPE流动到VPSS GROUP,不需要软件设定绑定关系。
【相关数据类型及接口】
无
ot_vi_vpss_mode
【说明】
定义VI各个PIPE和VPSS各个组的工作模式。
【定义】
【成员】
【注意事项】
- Hi3519DV500只支持OT_VI_OFFLINE_VPSS_OFFLINE,OT_VI_ONLINE_VPSS_OFFLINE,OT_VI_ONLINE_VPSS_ONLINE三种模式。
- Hi3511CV100只支持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必须保持一致。
【相关数据类型及接口】
ot_vi_aiisp_mode
【说明】
定义VI模块AIISP模式。
【定义】
typedef enum {
OT_VI_AIISP_MODE_DEFAULT=0,
OT_VI_AIISP_MODE_AIDRC,
OT_VI_AIISP_MODE_AIDM,
OT_VI_AIISP_MODE_AI3DNR,
OT_VI_AIISP_MODE_BUTT
} ot_vi_aiisp_mode;
【成员】
|
|
【注意事项】
无
【相关数据类型及接口】
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;
【成员】
扩展通道的图像来自物理通道后处理(DIS,LDC,SPREAD,CoverEx,LUMA,OVERLAYEx,Fisheye等)后的图像。 |
|
【注意事项】
当前只支持OT_EXT_CHN_SRC_TYPE_TAIL和OT_EXT_CHN_SRC_TYPE_HEAD。如果设置OT_EXT_CHN_SRC_TYPE_BEFORE_FISHEYE,效果与OT_EXT_CHN_SRC_TYPE_TAIL相同。
【相关数据类型及接口】
无
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:范围[1000, 4500]:默认值2000 |
|
comp_ratio_10_bit:范围[1000, 4500]:默认值2000 |
|
【注意事项】
- 这里的压缩比是放大了1000倍,即压缩比=(输入大小/输出大小)*1000。
- 当压缩比发生变化的时候,所需要的VB大小是不一样的,可以通过ot_common_get_pic_buf_cfg函数计算VB大小。
- 当设置的压缩比超过默认值时,由于压缩算法的原因,可能会导致视觉上可见的损失,因而,为了保证压缩效果,建议用户设置的值不要超过默认值。
【相关数据类型及接口】
ot_3dnr_pos_type
【说明】
定义3DNR位置类型枚举。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_fmu_id
【说明】
定义FMU ID枚举。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_fmu_attr
【说明】
定义FMU配置属性结构体。
【定义】
【成员】
|
fmu_id为OT_FMU_ID_VI时,取值范围:[OT_FMU_MIN_PAGE_NUM, OT_FMU_MAX_Y_PAGE_NUM] fmu_id为OT_FMU_ID_VPSS时,取值范围:[OT_FMU_MIN_PAGE_NUM * 2, OT_FMU_MAX_Y_PAGE_NUM +OT_FMU_MAX_C_PAGE_NUM] |
【注意事项】
- 存在卷绕通道时,必须开启WRAP空间。
- 单个page的大小为32K Byte。
- page_num提供了单路时最小卷绕空间的计算,配置时需要根据视频缓存池大小计算接口中ot_common_get_fmu_wrap_page_num公式计算大小,并在存在多路卷绕时,在支持的大小范围内适当留出余量。
【相关数据类型及接口】
ot_vpss_venc_wrap_param
【说明】
定义VPSS-VENC卷绕参数结构体。
【定义】
typedef struct {
td_bool all_online; /* vi-vpss all online or not */
/*
* input frame rate of VIPROC(linear/frame mode WDR is the sensor frame rate,
* and the line mode WDR is the frame rate after synthesis)
*/
td_u32 frame_rate;
td_u32 full_lines_std; /* total height of sensor, include of VBlank */
ot_size large_stream_size; /* VENC large stream Size */
ot_size small_stream_size; /* VENC small stream Size */
} ot_vpss_venc_wrap_param;
【成员】
【注意事项】
- 当VPSS通道0卷绕功能开启时,建议其他非卷绕通道最多绑定1路H264/H265/SVAC3编码。若存在多路小码流,则small_stream_size可设置为面积(宽x高)最大的那一路。
- full_lines_std为包含消隐区的总图像高度,由sensor配置决定。如果无法确定sensor的消隐区大小,VI线性模式输入时建议配置为valid_height+vfb_height+vbb_height(参考Proc调试信息VI章节),VI WDR模式输入时建议配置为valid_height+(vfb_height+vbb_height)/n(n为WDR合成帧数量)。
【相关数据类型及接口】
ss_mpi_sys_get_vpss_venc_wrap_buf_line
ot_vi_wrap_in_param
【说明】
定义VICAP-VIPROC离线卷绕参数结构体。
【定义】
typedef struct {
td_u32 pipe_num;
td_bool is_slave;
ot_vi_pipe_wrap_param wrap_param[OT_VI_MAX_PHYS_PIPE_NUM];
} ot_vi_wrap_in_param;
【成员】
【注意事项】
仅Hi3516CV610/Hi3516CV608支持。
【相关数据类型及接口】
ss_mpi_sys_get_vi_wrap_buffer_line
ot_vi_pipe_wrap_param
【说明】
定义VI PIPE卷绕参数结构体。
【定义】
typedef struct {
ot_size pipe_size; /* vi set pipe attr size */
td_u32 full_lines_std; /* total height of sensor, include of VBlank */
td_u32 frame_rate_100x; /* 100 times of sensor frame rate */
ot_vi_slave_wrap_param slave_param; /* vi offline vpss online mode effect param */
} ot_vi_pipe_wrap_param;
【成员】
|
宽度:[OT_VI_PIPE_OFFLINE_MIN_WIDTH, OT_VI_PIPE_OFFLINE_MAX_WIDTH] 高度:[OT_VI_PIPE_OFFLINE_MIN_HEIGHT, OT_VI_PIPE_OFFLINE_MAX_HEIGHT] |
|
【注意事项】
- 仅Hi3516CV610/Hi3516CV608支持。
- full_lines_std为包含消隐区的总图像高度,由sensor配置决定。如无法确定sensor的消隐区大小,建议配置为valid_height+vfb_height+vbb_height(参考Proc调试信息VI章节)。
【相关数据类型及接口】
ot_vi_slave_wrap_param
【说明】
定义VI PIPE卷绕参数结构体。
【定义】
typedef struct {
td_bool vi_vpss_online; /* vi-vpss mode is online or not */
td_bool vpss_venc_wrap; /* vpss-venc mode is wrap or not */
ot_size vpss_chn0_size; /* vpss chn0 size */
ot_size large_stream_size; /* VENC large stream Size */
ot_size small_stream_size; /* VENC small stream Size */
} ot_vi_slave_wrap_param;
【成员】
【注意事项】
- 仅Hi3516CV610/Hi3516CV608支持。
- vi_vpss_online值为0时,vpss_venc_wrap、vpss_chn0_size、large_stream_size、small_stream_size可以不配置;vpss_venc_wrap值为0时,large_stream_size、small_stream_size可以不配置。
- 参数默认pipe0路为第一路,当pipe_num为1时,只校验wrap_param[0]的参数是否为有效值,不校验wrap_param[1]的参数,输出wrap_param[0]的卷绕行有效。
【相关数据类型及接口】
ot_vi_wrap_out_param
【说明】
定义VICAP-VIPROC离线卷绕输出卷绕行数。
【定义】
【成员】
【注意事项】
仅Hi3516CV610/Hi3516CV608支持。
【相关数据类型及接口】
ss_mpi_sys_get_vi_wrap_buffer_line
ot_sys_dump_debug_attr
【说明】
定义系统的存帧调试属性。
【定义】
【成员】
【注意事项】
- 仅Hi3516CV610/Hi3516CV608支持。
- dump_pos仅支持设置为VI物理pipe和VPSS物理chn。
【相关数据类型及接口】
ss_mpi_sys_set_dump_debug_attr
ss_mpi_sys_get_dump_debug_attr
视频公共类型
视频公共数据类型定义如下:
- OT_GPS_EXPRESS_NUM:定义GPS经纬度数据个数。
- OT_GPS_GRP_NUM:定义GPS经纬度维度。
- 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_GPS_EXPRESS_NUM
【说明】
定义GPS经纬度数据个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_GPS_GRP_NUM
【说明】
定义GPS经纬度维度。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
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
【说明】
定义幅型比类型。
【定义】
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
【说明】
定义幅型比信息。
【定义】
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;
【成员】
【注意事项】
无。
【相关数据类型及接口】
- ot_aspect_ratio_type
- 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_CLUT2_2X2,
OT_PIXEL_FORMAT_ARGB_CLUT2_4X4,
OT_PIXEL_FORMAT_ARGB_CLUT4,
OT_PIXEL_FORMAT_ARGB_CLUT4_2X2,
OT_PIXEL_FORMAT_ARGB_CLUT4_4X4,
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_RGB_BAYER_16BPP_H10,
OT_PIXEL_FORMAT_RGB_BAYER_16BPP_H12,
OT_PIXEL_FORMAT_RGB_BAYER_16BPP_H14,
OT_PIXEL_FORMAT_RGB_BAYER_16BPP_L10,
OT_PIXEL_FORMAT_RGB_BAYER_16BPP_L12,
OT_PIXEL_FORMAT_RGB_BAYER_16BPP_L14,
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,
/*
* AD data format for raw pipe
* When MIPI is connected, VI Pipe receives package yuv422 (actual data) in raw16 format
* When BT656 is connected, VI Pipe receives package yuv422 in raw8 format, the number of line
* direction pixels is doubled, eg: 3840*1080(raw8) indicate 1920*1080(package yuv422)
*/
OT_PIXEL_FORMAT_RGB_BAYER_16BPP_INDICATE_YUYV_PACKAGE_422,
OT_PIXEL_FORMAT_RGB_BAYER_8BPP_INDICATE_UYVY_PACKAGE_422,
OT_PIXEL_FORMAT_BUTT
} ot_pixel_format;
【成员】
无。
【注意事项】
无。
【相关数据类型及接口】
- ot_rgn_overlayex_attr
- ot_rgn_canvas_info
- ot_vdec_pic_param
- ot_vgs_osd
- ot_vi_pipe_attr
- 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_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_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_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_32,
OT_DATA_BIT_WIDTH_64,
OT_DATA_BIT_WIDTH_BUTT
} ot_data_bit_width;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
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];
td_phys_addr_t variable_info_phys_addr;
} ot_video_supplement_misc;
【成员】
可变附属信息的VB的物理地址。VB头部存储请参考ot_video_variable_info_addr结构体。 |
【注意事项】
无。
【相关数据类型及接口】
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_mot_phys_addr;
td_phys_addr_t motion_data_phys_addr;
td_phys_addr_t frame_dng_phys_addr;
td_phys_addr_t aiisp_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;
td_void* ATTRIBUTE aiisp_virt_addr;
} ot_video_supplement;
【成员】
【注意事项】
无。
【相关数据类型及接口】
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;
【成员】
当前帧的标记,使用ot_frame_flag里面的值标记,可以按位或操作。 |
|
【注意事项】
数据图像内存默认仅支持VB内存,支持非VB内存的接口会在对应接口处添加特殊说明。
【相关数据类型及接口】
无。
ot_video_frame_info
【说明】
定义视频图像帧信息结构体。
【定义】
typedef struct {
ot_video_frame video_frame;
td_u32 pool_id;
ot_mod_id mod_id;
} ot_video_frame_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_video_variable_info_addr
【说明】
定义记录各类可变附属信息物理地址信息结构体。
【定义】
typedef struct {
td_phys_addr_t svc_rect_phys_addr;
td_phys_addr_t venc_user_rc_phys_addr;
td_phys_addr_t mosaic_phys_addr;
td_phys_addr_t aiseg_point_phys_addr;
td_phys_addr_t aiseg_rect_phys_addr;
td_phys_addr_t user_data_phys_addr;
} ot_video_variable_info_addr;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
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;
【成员】
【注意事项】
无。
【相关数据类型及接口】
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;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
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_TILE_32x4, /* tile cell: 32pixel x 4line */
OT_VIDEO_FORMAT_BUTT
} ot_video_format;
【成员】
【注意事项】
无
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_FMAP,
OT_COMPRESS_MODE_BUTT
} ot_compress_mode;
【成员】
【注意事项】
无。
ot_vb_supplement_cfg
【说明】
定义VB附加信息结构体。
【定义】
【成员】
【注意事项】
当前支持4种附加信息,具体请参考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;
【成员】
【注意事项】
无。
【相关数据类型及接口】
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_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为OT_FRAME_INTERRUPT_START时,early_line无效。
【相关数据类型及接口】
无。
ot_data_rate
【说明】
定义设备的速率的枚举。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_wdr_mode
【说明】
定义WDR工作模式的枚举。
【定义】
typedef enum {
OT_WDR_MODE_NONE = 0,
OT_WDR_MODE_BUILT_IN,
OT_WDR_MODE_QUADRA,
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_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;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_low_delay_info
【说明】
定义视频低延时信息结构体。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_schedule_mode
【说明】
定义调度模式的枚举。
【定义】
【成员】
【注意事项】
当配置为快速调度模式(OT_SCHEDULE_QUICK)时,整个系统会存在一定约束,具体请参考《MPP 媒体处理软件 V6.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_MEAN,
OT_SCALE_COEF_TYPE_BUTT
} ot_scale_coef_type;
【成员】
【注意事项】
当配置为OT_SCALE_COEF_TYPE_NORMAL时,采用ss_mpi_sys_set_scale_coef_level接口配置后生成的缩放系数对图像进行缩放;配置为OT_SCALE_COEF_TYPE_BILINEAR时,采用双线性插值;配置为OT_SCALE_COEF_TYPE_MEAN时,采用均值滤波,适用于图像缩小场景求取亮度和。
【相关数据类型及接口】
- ss_mpi_sys_set_scale_coef_level
- ss_mpi_vpss_set_chn_scale_coef_type
- ss_mpi_vpss_get_chn_scale_coef_type
ot_nr_motion_info
【说明】
定义3DNR运动信息。
【定义】
typedef struct {
td_phys_addr_t motion_phys_addr;
td_u8 *ATTRIBUTE motion_virt_addr;
td_u32 size;
td_u32 stride;
td_u32 width;
td_u32 height;
td_u32 pixel_bits;
} ot_nr_motion_info;
【成员】
【注意事项】
- motion_virt_addr是用户态映射好的虚拟地址,可以直接访问。
- 一个4*4宏块的运动信息占2bit,值越大表示越静止。
【相关数据类型及接口】
- ss_mpi_vi_get_pipe_3dnr_motion_info
- ss_mpi_vi_release_pipe_3dnr_motion_info
错误码
系统控制错误码
系统控制API错误码如表1所示。
表 1 系统控制API错误码
系统内存错误码
系统内存API错误码如表1所示。
表 1 系统内存API错误码
视频缓存池错误码
视频缓存池API错误码如表1所示。
表 1 视频缓存池API错误码
各模块支持的输入/输出数据格式和压缩模式
Hi3519DV500各模块输出支持的数据格式和压缩模式
Hi3519DV500各模块输入支持的数据格式和压缩模式
Hi3516CV610/Hi3516CV608各模块输入/输出支持的数据格式和压缩模式
Hi3511CV100各模块输入/输出支持的数据格式和压缩模式
视频缓存池大小计算接口
须知:
Hi3519DV500当图像宽度小于等于256且是紧凑段压缩时,通过ot_common_get_pic_buf_size接口获取到的内存大小与非紧凑段压缩大小相等。 Hi3519DV500分配MCF场景所需buffer时,如果mono路不是亮度单分量图像,则需使用ot_vpss_get_mcf_color_buf_size计算buffer大小。
表 1 ot_buffer.h中视频缓存池大小计算接口简介