系统控制

概述

系统控制根据芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成MPP(Media Process Platform媒体处理平台)系统各个业务模块的初始化、去初始化以及管理MPP系统各个业务模块的工作状态、提供当前MPP系统的版本信息、提供大块物理内存管理等功能。

应用程序启动MPP业务前,必须完成MPP系统初始化工作。同理,应用程序退出MPP业务后,也要完成MPP系统去初始化工作,释放资源。

须知:

  • 无特殊说明,SS625V100/SS626V100的描述与SS528V100一致,SS524V100的描述与SS522V100一致**。**

  • SS528V100、SS625V100和SS524V100不支持低延时、拼接和MCF

重要概念

低延时

低延时指图像写出指定的行数到DDR后,前端模块上报中断,把图像发给后端模块处理,可以减少通路延时,且前后端模块采用特定机制保证图像是先写后读,不会出现读图像错误。

须知:

  • 各模块低延时开启会与一些特定功能组合存在冲突,具体开启的方法及对应的限制参考各模块章节中相关的低延时描述。

  • SS928V100/SS626V100支持低延时,支持的模块分别见表1表2,未在列表中的模块不支持低延时。

表 1 SS928V100 支持低延时的模块列表

支持低延时的模块

备注

VI

支持输出低延时

MCF

支持输入、输出低延时

VPSS

支持输入、输出低延时

VO

支持输入低延时

VDEC

支持输入、输出低延时

VENC

支持输入、输出低延时

表 2 SS626V100 支持低延时的模块列表

支持低延时的模块

备注

VPSS

支持输入、输出低延时

VO

支持输入低延时

VDEC

支持输入、输出低延时

功能描述

视频缓存池

视频缓存池主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。

一组大小相同、物理地址连续的缓存块组成一个视频缓存池。必须在系统初始化之前配置公共视频缓存池。根据业务的不同,公共缓存池的数量、缓存块的大小和数量不同。

所有的视频输入通道都可以从公共视频缓存池中获取视频缓存块用于保存采集的图像,如图1中所示VI从公共视频缓存池B中获取视频缓存块Bm,缓存块Bm经 VI发送给VPSS,输入缓存块Bm经过VPSS处理之后被释放回公共视频缓存池。假设VPSS通道的工作模式是USER,则VPSS通道0从公共视频缓存池B中获取缓存块Bi作为输出图像缓存buffer发送给VENC,VPSS通道1从公共视频缓存池B中获取缓存块Bk作为输出图像缓存buffer发送给VO,Bi经VENC编码完之后释放回公共视频缓存池,Bk经VO显示完之后释放回公共视频缓存池。

图 1 典型的公共视频缓存池数据流图

不同类型的视频缓存池大小计算请参考代码ot_buffer.h

须知: SS528V100/SS524V100当图像宽度小于等于256且是紧凑段压缩时,通过ot_common_get_pic_buf_size接口获取到的内存大小与非紧凑段压缩大小相等。 SS928V100分配MCF场景所需buffer时,如果mono路不是亮度单分量图像,则需使用ot_vpss_get_mcf_color_buf_size计算buffer大小。

表 1 ot_buffer.h中视频缓存池大小计算接口简介

视频缓存池大小计算接口

接口简介

ot_common_get_pic_buf_cfg

一般linear格式的YUV或者raw数据缓存池配置,VI/VPSS模块紧凑段压缩格式需使用单独计算接口

ot_common_get_pic_buf_size

一般linear格式的YUV或者raw数据缓存池大小,VI/VPSS模块紧凑段压缩格式需使用单独计算接口

ot_hnr_get_pic_buf_size

HNR使用的帧数据缓存池,仅SS928V100支持

ot_common_vi_get_raw_buf_cfg_with_compress_ratio

raw数据根据压缩率获取缓存池配置,仅SS928V100支持

ot_vdec_get_pic_buf_size

VDEC输出的YUV帧存缓存池

ot_vdec_get_tmv_buf_size

VDEC输出的Tmv数据缓存池

ot_venc_get_pic_info_buf_size

VENC Picture信息VB大小,支持帧节省模式计算

ot_venc_get_pic_buf_size

VENC Picture VB大小,支持帧节省模式计算

ot_venc_get_ref_buf_size

VENC参考帧大小,SS928V100/SS626V100不支持

ot_venc_get_ref_pic_info_buf_size

VENC参考帧信息(pme、pmeinfo、tmv)大小

SS928V100/SS626V100不支持

ot_venc_get_qpmap_size

qpmap映射表大小

ot_venc_get_qpmap_stride

qpmap映射表stride

ot_venc_get_roimap_size

roi map映射表大小

ot_venc_get_roimap_stride

roi map映射表stride

ot_venc_get_skip_weight_size

skip weight映射表大小

ot_venc_get_skip_weight_stride

skip weight映射表stride

ot_avs_get_buf_size

AVS输入的YUV数据缓存池,仅SS928V100支持

ot_vpss_get_mcf_color_buf_size

MCF场景彩色通路VPSS通道VB大小,仅SS928V100支持

ot_vpss_get_mcf_mono_buf_size

MCF场景黑白通路VPSS通道VB大小,仅SS928V100支持

ot_common_get_vi_compact_seg_buf_size

VI输出的YUV数据缓存池大小,仅SS928V100支持

ot_common_get_vpss_compact_seg_buf_size

VPSS输出的YUV数据缓存池大小,仅SS928V100支持

系统绑定

MPP提供系统绑定接口(ss_mpi_sys_bind),即通过数据接收者绑定数据源来建立两者之间的关联关系(只允许数据接收者绑定数据源)。绑定后,数据源生成的数据将自动发送给接收者。目前MPP支持的绑定关系如表1所示。

表 1 MPP支持的绑定关系

数据源

数据接收者

VI

VO

VENC

VPSS

PCIV

VI(虚拟PIPE)

VPSS

VO

VENC

PCIV

VPSS

AVS

VI(虚拟PIPE)

VDEC

VPSS

VO

VENC

PCIV

VI(虚拟PIPE)

VO(WBC)

VO

VENC

VPSS

PCIV

VI(虚拟PIPE)

AVS

VPSS

VENC

VO

PCIV

VI(虚拟PIPE)

AI

AENC

AO

ADEC

AO

PCIV

VPSS

VENC

VO

MCF

VO

VENC

VPSS

VI(虚拟PIPE)

强制销毁VB功能

VB在占用状态时无法被销毁,插入xx_base.ko时加上模块参数g_vb_force_exit=1,即使VB正在被使用也可强制销毁,因此请谨慎使用此功能,需保证业务正常运行时不可主动销毁VB,必须待所有业务完全退出之后才能主动销毁VB。

须知: 强制销毁VB功能是为了应用程序异常崩溃之后方便业务重启而设计的:用户态应用程序异常崩溃之后,应用程序已经无法按正常的业务退出流程操作,此时重启业务前须先进行ss_mpi_sys_exit和ss_mpi_vb_exit把上次应用程序异常崩溃之后无法销毁的VB资源先销毁,然后再进行正常的业务重启流程。

VI和VPSS工作模式

VI和VPSS各自的工作模式分为在线,离线,工作模式说明如表1所示。

表 1 VI和VPSS的工作模式说明

模式

VI_CAP与VI_PROC

VI_PROC与VPSS

在线模式

VI_CAP与VI_PROC之间在线数据流传输,此模式下VI_CAP不会写出RAW数据到DDR,而是直接把数据流送给VI_PROC。

VI_PROC与VPSS之间的在线数据流传输,在此模式下VI_PROC不会写出YUV数据到DDR,而是直接把数据流送给VPSS。

离线模式

VI_CAP写出RAW数据到DDR,然后VI_PROC从DDR读取RAW数据进行后处理。

VI_PROC写出YUV数据到DDR,然后VPSS从DDR读取YUV数据进行后处理。

PIPE可以设置成多种工作模式,情况如下。

  • 第0个PIPE可以有4种模式:

    • VI在线VPSS离线

    • VI在线VPSS在线

    • VI离线VPSS离线

    • VI离线VPSS在线

  • 其他PIPE可以有2种模式:

    • 当第0个PIPE为VI离线VPSS在线时,绑定的其他PIPE只能设置VI离线VPSS在线。

    • 当第0个PIPE设置成其它模式时,绑定的其他PIPE只能为VI离线VPSS离线。

  • PIPE在不同的工作模式下可以进行切换,此时VI需要重建,情况如下:

    • VI在线模式不能切换到VI离线模式。

    • VI离线模式不能切换到VI在线模式。

说明:

  • 本文档中出现的“VI在线/离线”是指VI_CAP与VI_PROC之间的在线/离线模式。

  • 本文档中出现的“VPSS在线/离线”是指VI_PROC与VPSS之间的在线/离线模式。

VI的PIPE工作模式请见表2所示。

表 2 SS928V100 VI PIPE工作模式

PIPE ID

0

1

2

3

模式分布1

在线

离线

离线

离线

模式分布2

离线

离线

离线

离线

说明: 对于SS928V100系列,当PIPE0为在线时,其他PIPE的离线模式只能用来获取PIPE FRAME,其他功能都不能使用,即不能使用VI_PROC的功能。

VI视频模式

VI的视频模式分为两种:Normal模式和Advanced模式,默认为Normal模式。在单线性通路上,使用Advanced模式效果好,其它场景下使用Normal模式即可。该模式对VI所有的pipe生效。详见ss_mpi_sys_set_vi_video_mode接口描述。

logmpp日志

系统运行日志信息记录在logmpp文件中,运行异常时可通过查看日志文件进行问题定位,查看命令为cat /dev/logmpp。

说明: 对于SS626V100,解码通道部署在mdc上时,mdc日志记录在logmpp_mdc文件中,查看命令为cat /dev/logmpp_mdc。该功能需要使用低32bit的mmz地址,关闭该功能可在插入xx_base.ko时加上模块参数g_mdc_log_enable=0。

API参考

系统控制实现MPP(Media Process Platform)系统初始化、系统绑定解绑、获取MPP版本号、视频缓存池初始化、创建视频缓存池等功能。

该功能模块提供以下MPI:

  • ss_mpi_sys_set_cfg:配置系统控制参数。

  • ss_mpi_sys_get_cfg:获取系统控制参数。

  • ss_mpi_sys_init:初始化MPP系统。

  • ss_mpi_sys_exit:去初始化MPP系统。

  • ss_mpi_sys_bind:数据源到数据接收者绑定。

  • ss_mpi_sys_unbind:数据源到数据接收者解绑定。

  • ss_mpi_sys_get_bind_by_dst:根据目标获取绑定的源。

  • ss_mpi_sys_get_bind_by_src:根据源获取绑定的目标。

  • ss_mpi_sys_get_version:获取MPP的版本号。

  • ss_mpi_sys_get_chip_id:获取当前芯片的ID。

  • ss_mpi_sys_get_unique_id:获取当前芯片的unique ID。

  • ss_mpi_sys_get_custom_code:获取当前芯片的custom code。

  • ss_mpi_sys_get_cur_pts:获取当前时间戳。

  • ss_mpi_sys_init_pts_base:初始化MPP时间戳。

  • ss_mpi_sys_sync_pts:同步MPP时间戳。

  • ss_mpi_sys_mmap:memory存储映射接口。

  • ss_mpi_sys_mmap_cached:存储带Cache映射接口。

  • ss_mpi_sys_munmap:存储反映射接口。

  • ss_mpi_sys_flush_cache:刷新cache里的内容到内存并且使cache里的内容无效。

  • ss_mpi_sys_mmz_alloc:在用户态分配MMZ内存。

  • ss_mpi_sys_mmz_alloc_cached:在用户态分配MMZ内存,该内存支持cache缓存。

  • ss_mpi_sys_mmz_free:在用户态释放MMZ内存。

  • ss_mpi_sys_set_mem_cfg:设置模块设备通道使用内存的DDR名。

  • ss_mpi_sys_get_mem_cfg:获取模块设备通道使用的MMZ区域名称。

  • ss_mpi_sys_close_fd:关闭所有SYS打开的日志、系统Fd。

  • ss_mpi_sys_get_virt_mem_info:根据虚拟地址获取对应的内存信息。

  • ss_mpi_sys_set_scale_coef_level:设置VPSS模块和VGS模块的缩放系数等级。

  • ss_mpi_sys_get_scale_coef_level:获取VPSS和VGS缩放系数等级。

  • ss_mpi_sys_set_time_zone:设置时区信息。

  • ss_mpi_sys_get_time_zone:获取时区信息。

  • ss_mpi_sys_set_gps_info:设置GPS信息。

  • ss_mpi_sys_get_gps_info:获取GPS信息。

  • ss_mpi_sys_set_schedule_mode:设置系统调度模式。

  • ss_mpi_sys_get_schedule_mode:获取系统调度模式。

  • ss_mpi_sys_set_vi_vpss_mode:设置VI,VPSS的工作模式。

  • ss_mpi_sys_get_vi_vpss_mode:获取VI,VPSS的工作模式。

  • ss_mpi_sys_set_vi_video_mode:设置VI视频模式。

  • ss_mpi_sys_get_vi_video_mode:获取VI视频模式。

  • ss_mpi_sys_set_raw_frame_compress_param:设置RAW帧压缩参数。

  • ss_mpi_sys_get_raw_frame_compress_param:获取RAW帧压缩参数。

  • ss_mpi_sys_set_tuning_connect:设置Tuning工具连接。

  • ss_mpi_sys_get_tuning_connect:获取Tuning工具连接。

  • ss_mpi_sys_mem_share:将handle对应的mmz buffer共享给特定的进程ID。

  • ss_mpi_sys_mem_unshare:解除handle对应的mmz buffer对进程ID的共享。

  • ss_mpi_sys_mem_share_all:将handle对应的mmz buffer以不限进程ID的方式共享给所有进程。

  • ss_mpi_sys_mem_unshare_all:解除handle对应的mmz buffer对所有进程的共享。

  • ss_mpi_sys_get_mem_info_by_handle:通过handle获取mmz buffer的内存描述信息。

  • ss_mpi_sys_get_mem_info_by_phys:通过物理地址获取mmz buffer的内存描述信息。

  • ss_mpi_sys_get_mem_info_by_virt:通过用户态虚拟地址获取mmz buffer的内存描述信息。

  • ss_mpi_vb_set_cfg:设置MPP视频缓存池属性。

  • ss_mpi_vb_get_cfg:获取MPP视频缓存池属性。

  • ss_mpi_vb_init:初始化MPP视频缓存池。

  • ss_mpi_vb_exit:去初始化MPP视频缓存池。

  • ss_mpi_vb_create_pool:创建一个用户视频缓存池。

  • ss_mpi_vb_create_ext_pool:创建一个虚拟视频缓存池。

  • ss_mpi_vb_destroy_pool:销毁一个视频缓存池。

  • ss_mpi_vb_get_blk:获取一个缓存块。

  • ss_mpi_vb_release_blk:释放一个已经获取的缓存块。

  • ss_mpi_vb_insert_buf_to_ext_pool:添加一个缓存块到虚拟视频缓存池。

  • ss_mpi_vb_delete_buf_from_ext_pool:从虚拟视频缓存池中删除一个缓存块。

  • ss_mpi_vb_phys_addr_to_handle:用户态通过缓存块的物理地址获取其句柄。

  • ss_mpi_vb_handle_to_phys_addr:获取一个缓存块的物理地址。

  • ss_mpi_vb_handle_to_pool_id:获取一个缓存块所在缓存池的ID。

  • ss_mpi_vb_get_pool_info:获取一个视频缓存池的信息。

  • ss_mpi_vb_init_mod_common_pool:初始化模块公共视频缓冲池。

  • ss_mpi_vb_exit_mod_common_pool:注销模块公共视频缓冲池。

  • ss_mpi_vb_set_mod_pool_cfg:设置模块公共视频缓冲池属性。

  • ss_mpi_vb_get_mod_pool_cfg:获取模块公共视频缓冲池属性。

  • ss_mpi_vb_inquire_user_cnt:查询缓存块使用计数信息。

  • ss_mpi_vb_get_supplement_addr:获取VB block内存的辅助信息。

  • ss_mpi_vb_set_supplement_cfg:设置VB内存的附加信息。

  • ss_mpi_vb_get_supplement_cfg:获取VB内存的附加信息。

  • ss_mpi_vb_get_common_pool_id:获取公共VB池的pool ID。

  • ss_mpi_vb_get_mod_common_pool_id:获取模块公共VB池的pool ID。

  • ss_mpi_vb_pool_share:将pool ID对应的VB池共享给特定的进程ID。

  • ss_mpi_vb_pool_unshare:解除pool ID对应的VB池对进程ID的共享。

  • ss_mpi_vb_pool_share_all:将pool ID对应的VB池以不限进程ID的方式共享给所有进程。

  • ss_mpi_vb_pool_unshare_all:解除pool ID对应的VB池对所有进程的共享。

  • ss_mpi_log_set_level_cfg:设置日志等级。

  • ss_mpi_log_get_level_cfg:获取日志等级。

  • ss_mpi_log_set_wait_flag:设置读取日志时等待标志。

  • ss_mpi_log_read:读取日志。

  • ss_mpi_log_close:关闭日志文件。

ss_mpi_sys_set_cfg

【描述】

配置系统控制参数。

【语法】

td_s32 ss_mpi_sys_set_cfg(const ot_mpp_sys_cfg *sys_cfg);

【参数】

参数名称

描述

输入/输出

sys_cfg

系统控制参数指针。

静态属性(指只能在系统未初始化、未启用设备或通道时,才能设置的属性)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 只有在MPP整个系统处于未初始化状态,才可调用此函数配置MPP系统,否则会配置失败。

  • 此接口功能暂时无效。

【举例】

无。

【相关主题】

ot_mpp_sys_cfg

ss_mpi_sys_get_cfg

【描述】

获取系统控制参数。

【语法】

td_s32 ss_mpi_sys_get_cfg(ot_mpp_sys_cfg *sys_cfg);

【参数】

参数名称

描述

输入/输出

sys_cfg

系统控制参数指针。

静态属性。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

必须先调用ss_mpi_sys_set_cfg成功后才能获取配置。

【举例】

无。

【相关主题】

ss_mpi_sys_set_cfg

ss_mpi_sys_init

【描述】

初始化MPP系统。包括音频输入输出、视频输入输出、视频编解码、视频叠加区域、视频处理、图形处理等模块都会被初始化。

【语法】

td_s32 ss_mpi_sys_init(td_void);

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 由于MPP系统的正常运行依赖于缓存池,因此需要先调用ss_mpi_vb_init初始化缓存池,再初始化MPP系统,否则会导致业务运行异常。

  • 如果多次初始化,仍会返回成功,但实际上系统不会对MPP的运行状态有任何影响。

  • 只要有一个进程进行初始化即可,不需要所有的进程都做系统初始化的操作。

  • 由于音频模块依赖用户态属性,故音频不支持多进程操作。用户需要保证音频的相关操作和ss_mpi_vb_init在同一个进程中。

【举例】

无。

【相关主题】

ss_mpi_vb_exit

ss_mpi_sys_exit

【描述】

去初始化MPP系统。包括音频输入输出、视频输入输出、视频编解码、视频叠加区域、视频处理、图形处理等模块都会被销毁或者禁用。

【语法】

td_s32 ss_mpi_sys_exit(td_void);

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 去初始化时,如果有阻塞在MPI上的用户进程,调用ss_mpi_sys_exit会唤醒该阻塞进程,如果没有成功唤醒,则去初始化会失败。如果所有阻塞在MPI上的调用都返回,则可以成功去初始化。

  • 可以反复去初始化,不返回失败。

  • 由于系统去初始化不会销毁音频的编解码通道,因此这些通道的销毁需要用户主动进行。如果创建这些通道的进程退出,则通道随之被销毁。

【举例】

无。

【相关主题】

ss_mpi_vb_init

ss_mpi_sys_bind

【描述】

数据源到数据接收者绑定接口。

【语法】

td_s32 ss_mpi_sys_bind(const ot_mpp_chn *src_chn, const ot_mpp_chn *dst_chn);

【参数】

参数名称

描述

输入/输出

src_chn

源通道指针。

输入

dst_chn

目的通道指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 系统目前支持的绑定关系,请参见表1。

  • 同一个数据接收者只能绑定一个数据源。

  • 绑定是指数据源和数据接收者建立关联关系。绑定后,数据源生成的数据将自动发送给接收者。

  • VDEC作为数据源,是以通道为发送者,向其他模块发送数据,用户将设备号置为0,SDK不检查输入的设备号。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100 VI作为数据源,是以通道为发送者,向其他模块发送数据,用户将设备号置为0,SDK不检查输入的设备号。

  • SS928V100 VI作为数据源,是以设备(pipe)、通道(chn)为发送者,向其他模块发送数据;作为数据接收者时,以设备(pipe)、通道(chn)为接收者。

  • VO作为数据源发送回写(WBC)数据时,是以设备为发送者,向其他模块发送数据,用户将通道号置为0,SDK不检查输入的通道号。

  • VPSS作为数据接收者时,是以设备(GROUP)为接收者,接收其他模块发来的数据,用户将通道号置为0。

  • VENC作为数据接收者时,是以通道号为接收者,接收其他模块发过来的数据,用户将设备号置为0,SDK不检查输入的设备号。若VENC工作在OT_VENC_PIC_RECV_MULTI模式下,用户需要配置设备号,此时设备号实际用于指定输入源,可以使用OT_VENC_RECV_SRC0、OT_VENC_RECV_SRC1、OT_VENC_RECV_SRC2、OT_VENC_RECV_SRC3宏进行输入源指定。

  • AVS作为数据接收者,是以设备(GROUP)、通道(PIPE)为接收者。

  • MCF作为数据接收者,是以设备(GROUP)、通道(PIPE)为接收者。

  • 其他情况均需指定设备号和通道号。

【举例】

无。

【相关主题】

ss_mpi_sys_unbind

ss_mpi_sys_unbind

【描述】

数据源到数据接收者解绑定接口。

【语法】

td_s32 ss_mpi_sys_unbind(const ot_mpp_chn *src_chn, const ot_mpp_chn *dst_chn);

【参数】

参数名称

描述

输入/输出

src_chn

源通道指针。

输入

dst_chn

目的通道指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

dst_chn如果找不到绑定的源通道,则直接返回成功。如果找到了绑定的源通道,但是绑定的源通道和src_chn不匹配,则返回失败。

【举例】

无。

【相关主题】

ss_mpi_sys_bind

ss_mpi_sys_get_bind_by_dst

【描述】

获取此通道上绑定的源通道的信息。

【语法】

td_s32 ss_mpi_sys_get_bind_by_dst(const ot_mpp_chn *dst_chn, ot_mpp_chn *src_chn);

【参数】

参数名称

描述

输入/输出

src_chn

源通道指针。

输出

dst_chn

目的通道指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_sys_get_bind_by_src

【描述】

根据源获取绑定的目标。

【语法】

td_s32 ss_mpi_sys_get_bind_by_src(const ot_mpp_chn *src_chn, ot_mpp_bind_dst *bind_dst);

【参数】

参数名称

描述

输入/输出

src_chn

源通道指针。

输入

bind_dst

绑定的目的指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_sys_get_version

【描述】

获取MPP的版本号。

【语法】

td_s32 ss_mpi_sys_get_version(ot_mpp_version *version);

【参数】

参数名称

描述

输入/输出

version

版本号描述指针。

动态属性(指在任何时刻都可以设置的属性)。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_get_chip_id

【描述】

获取当前芯片的ID。

【语法】

td_s32 ss_mpi_sys_get_chip_id(td_u32 *chip_id);

【参数】

参数名称

描述

输入/输出

chip_id

芯片ID指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

td_s32 ret;
td_u32 chip_id;
ret = ss_mpi_sys_get_chip_id(&chip_id);
if (TD_SUCCESS != ret) {
    return ret;
}
printf("chip id is %#x\n", chip_id);

【相关主题】

无。

ss_mpi_sys_get_unique_id

【描述】

获取当前芯片的unique ID (芯片唯一码)。

【语法】

ss_mpi_sys_get_unique_id(ot_unique_id *unique_id);

【参数】

参数名称

描述

输入/输出

unique_id

芯片unique ID数据结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【相关主题】

无。

ss_mpi_sys_get_custom_code

【描述】

获取当前芯片的custom code。

【语法】

td_s32 ss_mpi_sys_get_custom_code(td_u32 *custom_code);

【参数】

参数名称

描述

输入/输出

custom_code

芯片custom code指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

td_s32 ret;
td_u32 c_code;
ret = ss_mpi_sys_get_custom_code(&c_code);
if (TD_SUCCESS != ret)
{
    return ret;
}
printf("custom code is %#x\n", c_code);

【相关主题】

无。

ss_mpi_sys_get_cur_pts

【描述】

获取MPP的当前时间戳。

【语法】

td_s32 ss_mpi_sys_get_cur_pts(td_u64 *cur_pts);

【参数】

参数名称

描述

输入/输出

cur_pts

当前时间戳指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_init_pts_base

【描述】

初始化MPP的时间戳基准。

【语法】

td_s32 ss_mpi_sys_init_pts_base(td_u64 pts_base);

【参数】

参数名称

描述

输入/输出

pts_base

时间戳基准。单位:微秒。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

初始化时间戳基准会将当前系统的时间戳强制置成pts_base,与系统原有时间戳没有任何约束。因此,建议在媒体业务没有启动时(例如操作系统刚启动),调用这个接口。如果媒体业务已经启动,建议调用ss_mpi_sys_sync_pts进行时间戳微调。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_sync_pts

【描述】

同步MPP的时间戳。

【语法】

td_s32 ss_mpi_sys_sync_pts(td_u64 pts_base);

【参数】

参数名称

描述

输入/输出

pts_base

时间戳基准。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

对当前系统时间戳(微秒级)进行微调,微调后不会出现时间戳回退现象。在多片之间做同步时,由于单板的时钟源误差可能比较大,建议一秒钟进行一次时间戳微调。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_mmap

【描述】

memory存储映射接口。

【语法】

td_void *ss_mpi_sys_mmap(td_phys_addr_t phys_addr, td_u32 size);

【参数】

参数名称

描述

输入/输出

phys_addr

需映射的内存单元起始地址。

输入

size

映射的字节数,不能为0。

输入

【返回值】

返回值

描述

0

无效地址。

非0

有效地址

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • open的节点是dev/mmz_userdev,在MMZ中实现映射非device类型(不可cache、可reorder)的DDR地址。

  • 对于输入的地址和size,需在单个(已分配的)mmz buffer的地址范围内。

  • 对应的解映射接口为ss_mpi_sys_munmap。

【举例】

无。

【相关主题】

ss_mpi_sys_munmap

ss_mpi_sys_mmap_cached

【描述】

存储映射接口,映射成cache属性。

【语法】

td_void *ss_mpi_sys_mmap_cached(td_phys_addr_t phys_addr, td_u32 size);

【参数】

参数名称

描述

输入/输出

phys_addr

需映射的内存单元起始地址。

输入

size

映射的字节数。不能为0。

输入

【返回值】

返回值

描述

0

无效地址。

非0

有效地址

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

对于输入的地址和size,需在单个(已分配的)mmz buffer的地址范围内。

【举例】

无。

【相关主题】

ss_mpi_sys_munmap

ss_mpi_sys_munmap

【描述】

存储反映射接口。

【语法】

td_s32 ss_mpi_sys_munmap(td_void *virt_addr, td_u32 size);

【参数】

参数名称

描述

输入/输出

virt_addr

mmap后返回的地址。

输入

size

映射区的字节长度。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

等同于系统munmap函数。

【举例】

无。

【相关主题】

ss_mpi_sys_mmap

ss_mpi_sys_flush_cache

【描述】

刷新cache里的内容到内存并且使cache里的内容无效。

【语法】

td_s32 ss_mpi_sys_flush_cache(td_phys_addr_t phys_addr, td_void *virt_addr, td_u32 size);

【参数】

参数名称

描述

输入/输出

phys_addr

待操作数据的起始物理地址。

需要4字节对齐。

输入

virt_addr

待操作数据的起始虚拟地址指针。

必须为用户态地址,且不能为空。

虚拟地址必须为物理地址映射的地址。

输入

size

待操作数据的大小。

不能为0。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 当cache里的数据为最新数据时,为了保证不能直接访问cache的硬件(如ive)在访问内存时能够得到正确的数据,此时需要先调用此接口将cache里的内容更新到内存,这样,当硬件访问内存时,保证了数据的一致性和正确性。

  • 此接口应与ss_mpi_sys_mmap_cached或者ss_mpi_sys_mmz_alloc_cached接口配套使用。

  • 用户需要确保传入参数的合法性。

【相关主题】

ss_mpi_sys_mmap_cached

ss_mpi_sys_mmz_alloc

【描述】

在用户态分配MMZ内存。

【语法】

td_s32 ss_mpi_sys_mmz_alloc(td_phys_addr_t *phys_addr, td_void **virt_addr, const td_char *mmb, const td_char *zone, td_u32 len);

【参数】

参数名称

描述

输入/输出

phys_addr

物理地址指针。

输出

virt_addr

指向虚拟地址指针的指针。

输出

mmb

Mmb名称的字符串指针。

输入

zone

MMZ zone名称的字符串指针。

输入

len

内存块大小。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

MMZ分为许多区域(Zone),每个区域下有多个Mmb,调用此接口在MMZ的名为*zone的区域中分配一个名为*mmb的内存块,大小为len,并返回物理地址和用户态虚拟地址指针。如果MMZ中有名为anonymous的区域,*zone可设为NULL。如果*mmb设为NULL,创建的Mmb分块名为“<null>”。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_mmz_alloc_cached

【描述】

在用户态分配MMZ内存,该内存支持cache缓存。

【语法】

td_s32 ss_mpi_sys_mmz_alloc_cached(td_phys_addr_t *phys_addr, td_void **virt_addr, const td_char *mmb, const td_char *zone, td_u32 len);

【参数】

参数名称

描述

输入/输出

phys_addr

物理地址指针。

输出

virt_addr

指向虚拟地址指针的指针。

输出

mmb

Mmb名称的字符串指针。

输入

zone

MMZ zone名称的字符串指针。

输入

len

内存块大小。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 本接口与ss_mpi_sys_mmz_alloc接口的区别:通过本接口分配的内存支持cache缓存,对于频繁使用的内存,最好使用本接口分配内存,这样可以提高cpu读写的效率,提升系统性能,如用户在使用ive算子时,就存在大量数据频繁读写,此时使用此接口来分配内存,就能很好的提高cpu的效率。

  • 当cpu访问此接口分配的内存时,会将内存中的数据放在cache中,而硬件设备(如ive)只能访问物理内存,不能访问cache的内容,对于这种cpu和硬件会共同操作的内存,需调用ss_mpi_sys_flush_cache做好数据同步。

【举例】

无。

【相关主题】

ss_mpi_sys_mmz_free

【描述】

在用户态释放MMZ内存。

【语法】

td_s32 ss_mpi_sys_mmz_free(td_phys_addr_t phys_addr, td_void *virt_addr);

【参数】

参数名称

描述

输入/输出

phys_addr

物理地址。

输入

virt_addr

虚拟地址指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 输入的地址必须为有效的物理地址,虚拟地址指针可以置为NULL。

  • 不能释放正在进行flush操作的内存,否则会引发不可预知的异常。

【举例】

无。

【相关主题】

ss_mpi_sys_mmz_alloc

ss_mpi_sys_set_mem_cfg

【描述】

配置内存参数,设置模块设备通道使用的MMZ区域名称。

【语法】

td_s32 ss_mpi_sys_set_mem_cfg(const ot_mpp_chn *mpp_chn, const td_char *mmz_name);

【参数】

参数名称

描述

输入/输出

mpp_chn

模块设备通道信息。

输入

mmz_name

MMZ区域名称。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 如无特殊说明,配置内存参数按照模块对应的通道设置。

  • 输入的MMZ区域名称不存在,接口也会返回成功,但在业务运行过程中分配内存会失败。所以为了保证内存分配正确,输入的MMZ区域名称必须从MMZ区域划分时的名称中选择。

  • 对VO模块做均分内存策略时,用户须保证同一设备号下的通道内存在同一个DDR上。如果不一致,SDK默认从该设备的通道0设置的DDR分配内存。

  • 对VFMW模块设置使用的MMZ内存,各个通道共用的MMZ内存通过vfmw设备0通道0来设置,包括vfmw(%d)_vdh_msg、vfmw_vdh_ext、vfmw_scd_msg、vfmw_mdma_msg。各个通道独立使用的MMZ内存通过vdec对应的通道设置。

  • VENC模块的vedu_hal内存通过venc设备0通道0设置,其他mmz内存通过venc对应的通道设置。

  • IVE模块不支持超过4G空间访问,请确保IVE输入输出内存在IVE对应的MMZ zone区域,不然会发生地址校验不通过的情况。若有指定IVE访问MMZ区域,那么只能访问从指定区域MMZ开始地址+(4G - 1)空间;若没有,那么只能访问的MMZ地址空间为MMZ匿名开始地址+(4G - 1)。

  • VDEC_ADAPT模块vdec_adp_proc和vdec_adp_vb内存是通过通道0设置,其他mmz内存根据对应的通道设置。

  • DCC模块dcc_msg_buf内存是通过设备0通道0设置。

【举例】

无。

【相关主题】

ss_mpi_sys_get_mem_cfg

ss_mpi_sys_get_mem_cfg

【描述】

获取模块设备通道使用的MMZ区域名称。

【语法】

td_s32 ss_mpi_sys_get_mem_cfg(const ot_mpp_chn *mpp_chn, td_char *mmz_name);

【参数】

参数名称

描述

输入/输出

mpp_chn

模块设备通道信息。

输入

mmz_name

MMZ区域的名称。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_sys_set_mem_cfg

ss_mpi_sys_close_fd

【描述】

关闭所有SYS打开的日志、系统Fd。

【语法】

td_s32 ss_mpi_sys_close_fd(td_void);

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

建议该接口在所有模块都禁用后使用。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_get_virt_mem_info

【描述】

根据虚拟地址获取对应的内存信息,包括物理地址及cached属性。

【语法】

td_s32 ss_mpi_sys_get_virt_mem_info(const void *virt_addr, ot_sys_virt_mem_info *mem_info);

【参数】

参数名称

描述

输入/输出

virt_addr

用户态虚拟地址。

输入

mem_info

虚拟地址对应的内存信息,含物理地址、cached属性等信息。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 输入必须为用户态虚拟地址。

  • 不支持跨进程使用。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_set_scale_coef_level

【描述】

设置VPSS模块和VGS模块的缩放系数等级。

【语法】

td_s32 ss_mpi_sys_set_scale_coef_level(const ot_scale_range *scale_range, const ot_scale_coef_level *scale_coef_level);

【参数】

参数名称

描述

输入/输出

scale_range

缩放系数所对应的缩放范围。

输入

scale_coef_level

缩放系数等级

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 各个缩放比例下的缩放系数等级默认值请参考ot_scale_coef_level结构体的注意事项。

  • 在保持缩放比例范围不变的情况下,增大缩放系数的等级时,会使该缩放比例范围的图像看起来更锐利,反之则更模糊。

  • 在保持缩放比例范围不变的情况下,增大缩放系数的等级时,会使得画面锯齿程度变严重,用户可根据需求进行选择。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_get_scale_coef_level

【描述】

获取VPSS和VGS缩放系数等级。

【语法】

td_s32 ss_mpi_sys_get_scale_coef_level(const ot_scale_range *scale_range, ot_scale_coef_level *scale_coef_level);

【参数】

参数名称

描述

输入/输出

scale_range

缩放系数所对应的缩放范围。

输入

scale_coef_level

缩放系数等级

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_set_time_zone

【描述】

设置时区信息。

【语法】

td_s32 ss_mpi_sys_set_time_zone(td_s32 time_zone);

【参数】

参数名称

描述

输入/输出

time_zone

时区,相对于UTC时间的偏移。

单位:秒。

取值范围:[-86400, 86400],对应为[-24, 24]小时。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

时区设置对JPEG DCF信息有效,设置后拍摄时间(UTC时间)将转换为本地时间。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_get_time_zone

【描述】

获取时区信息。

【语法】

td_s32 ss_mpi_sys_get_time_zone(td_s32 *time_zone);

【参数】

参数名称

描述

输入/输出

time_zone

时区,相对于UTC时间的偏移。

单位:秒。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_set_gps_info

【描述】

设置GPS信息。

【语法】

td_s32 ss_mpi_sys_set_gps_info(const ot_gps_info *gps_info);

【参数】

参数名称

描述

输入/输出

gps_info

GPS信息

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 涉及敏感数据处理,用户在使用该接口时需要保证输入和输出数据的安全同时注意隐私保护,遵循当地法律法规。

  • GPS信息设置对JPEG DCF信息有效。

【举例】

【相关主题】

ss_mpi_sys_get_gps_info

【描述】

获取GPS信息。

【语法】

td_s32 ss_mpi_sys_get_gps_info(ot_gps_info *gps_info);

【参数】

参数名称

描述

输入/输出

gps_info

GPS信息

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

涉及敏感数据处理,用户在使用该接口时需要保证输入和输出数据的安全同时注意隐私保护,遵循当地法律法规。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_set_schedule_mode

【描述】

设置系统调度模式。

【语法】

td_s32 ss_mpi_sys_set_schedule_mode(const ot_schedule_mode *schedule_mode);

【参数】

参数名称

描述

输入/输出

schedule_mode

系统调度模式的指针。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • SS928V100不支持此接口。

  • 必须在ss_mpi_sys_init后,所有的VDEC通道和所有的VPSS组创建前设置。

  • 设置OT_SCHEDULE_QUICK模式时,如果vdec帧存VB来源为OT_VB_SRC_PRIVATE时,接口返回不支持。

  • 当配置为快速模式(OT_SCHEDULE_QUICK)时,整个系统会存在一定的约束,具体请参考《MPP 媒体处理软件 V5.0 FAQ》的1.9 Quick schedule注意事项。

【举例】

无。

【相关主题】

ss_mpi_sys_get_schedule_mode

ss_mpi_sys_get_schedule_mode

【描述】

获取系统调度模式。

【语法】

td_s32 ss_mpi_sys_get_schedule_mode(ot_schedule_mode *schedule_mode);

【参数】

参数名称

描述

输入/输出

schedule_mode

系统调度模式的指针。

静态属性。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

SS928V100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_sys_set_schedule_mode

ss_mpi_sys_set_vi_vpss_mode

【描述】

设置VI,VPSS工作模式。

【语法】

td_s32 ss_mpi_sys_set_vi_vpss_mode(const ot_vi_vpss_mode *vi_vpss_mode);

【参数】

参数名称

描述

输入/输出

vi_vpss_mode

VI,VPSS的工作模式

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • SS528V100/SS524V100不支持此接口。

  • 必须在ss_mpi_sys_init后,所有的VI PIPE和所有的VPSS组创建前设置。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_get_vi_vpss_mode

【描述】

获取VI,VPSS的工作模式。

【语法】

td_s32 ss_mpi_sys_get_vi_vpss_mode(ot_vi_vpss_mode *vi_vpss_mode);

【参数】

参数名称

描述

输入/输出

vi_vpss_mode

VI,VPSS的工作模式

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

SS528V100/SS524V100不支持此接口。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_set_vi_video_mode

【描述】

设置VI视频模式。

【语法】

td_s32 ss_mpi_sys_set_vi_video_mode (ot_vi_video_mode video_mode);

【参数】

参数名称

描述

输入/输出

video_mode

VI视频模式

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • SS528V100/SS524V100不支持此接口。

  • 必须在ss_mpi_sys_init后,所有的VI PIPE和所有的VPSS组创建前设置。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_get_vi_video_mode

【描述】

获取VI视频模式。

【语法】

td_s32 ss_mpi_sys_get_vi_video_mode(ot_vi_video_mode *video_mode);

【参数】

参数名称

描述

输入/输出

video_mode

VI视频模式

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • SS528V100/SS524V100不支持此接口。

  • 只有在单线性通路下开启HNR功能时视频模式才需要设置为Advanced模式。

  • Advanced模式下需要分配非压格式的raw buffer供VIPROC逻辑使用。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_set_raw_frame_compress_param

【描述】

设置VI模块RAW数据的帧压缩比。

【语法】

td_s32 ss_mpi_sys_set_raw_frame_compress_param(const ot_raw_frame_compress_param *compress_param);

【参数】

参数名称

描述

输入/输出

compress_param

压缩参数

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • SS528V100/SS524V100不支持此接口。

  • 必须在ss_mpi_sys_init接口调用前才能调用。

  • 调用ss_mpi_sys_exit后设置的值仍然有效。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_get_raw_frame_compress_param

【描述】

获取VI模块RAW数据的帧压缩比。

【语法】

td_s32 ss_mpi_sys_get_raw_frame_compress_param(ot_raw_frame_compress_param *compress_param);

【参数】

参数名称

描述

输入/输出

compress_param

压缩参数

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

SS528V100/SS524V100不支持此接口。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_set_tuning_connect

【描述】

设置Tuning工具连接。

【语法】

td_s32 ss_mpi_sys_set_tuning_connect (td_s32 connect);

【参数】

参数名称

描述

输入/输出

connect

Tuning工具连接值

输入

0:不允许Tuning工具连接

1:允许Tuning工具连接

其它值:保留

【返回值】

返回值

描述

0

成功。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • SS528V100/SS524V100不支持此接口。

  • 保留值目前按0处理。

  • 第一次设置时可以设置为0或者1,其它任何情况下无论设置什么值内部都置为0。

  • SYS退出之后恢复默认值1。

  • connect为1时可正常接入PQTool等Tuning工具,connect为0时无法接入PQTool等Tuning工具。

【举例】

【相关主题】

ss_mpi_sys_get_tuning_connect

【描述】

获取Tuning工具连接。

【语法】

td_s32 ss_mpi_sys_get_tuning_connect (td_s32 *connect);

【参数】

参数名称

描述

输入/输出

connect

Tuning工具连接值

输出

【返回值】

返回值

描述

0

成功。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

SS528V100/SS524V100不支持此接口。

【举例】

无。

【相关主题】

无。

ss_mpi_sys_mem_share

【描述】

将handle对应的mmz buffer共享给特定的进程ID。

【语法】

td_s32 ss_mpi_sys_mem_share(const td_void *mem_handle, td_s32 pid);

【参数】

参数名称

描述

输入/输出

mem_handle

mmz buffer对应的handle

输入

pid

进程ID

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.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

ss_mpi_sys_mem_unshare

【描述】

解除handle对应的mmz buffer对进程ID的共享。

【语法】

td_s32 ss_mpi_sys_mem_unshare(const td_void *mem_handle, td_s32 pid);

【参数】

参数名称

描述

输入/输出

mem_handle

mmz buffer对应的handle

输入

pid

进程ID

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.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

ss_mpi_sys_mem_share_all

【描述】

将handle对应的mmz buffer以不限进程ID的方式共享给所有进程。

【语法】

td_s32 ss_mpi_sys_mem_share_all(const td_void *mem_handle);

【参数】

参数名称

描述

输入/输出

mem_handle

mmz buffer对应的handle

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 只有分配mmz buffer的进程能注册共享,其它进程注册共享返回失败。

  • 重复共享给所有进程,接口返回成功。

  • 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。

【举例】

无。

【相关主题】

ss_mpi_sys_mem_unshare_all

ss_mpi_sys_mem_unshare_all

【描述】

解除handle对应的mmz buffer对所有进程的共享。

【语法】

td_s32 ss_mpi_sys_mem_unshare_all(const td_void *mem_handle);

【参数】

参数名称

描述

输入/输出

mem_handle

mmz buffer对应的handle

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 只有分配mmz buffer的进程可以解除对所有进程的共享。

  • 重复解除对所有进程的共享,接口返回成功。

  • 与ss_mpi_sys_mem_share_all接口配对使用。

  • 调用此接口解除对所有进程共享的状态之后,仍然保留原有对进程ID的共享状态。

  • 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。

【举例】

无。

【相关主题】

ss_mpi_sys_mem_share_all

ss_mpi_sys_get_mem_info_by_handle

【描述】

通过handle获取mmz buffer的内存描述信息。

【语法】

td_s32 ss_mpi_sys_get_mem_info_by_handle(const td_void *mem_handle, ot_sys_mem_info *mem_info);

【参数】

参数名称

描述

输入/输出

mem_handle

mmz buffer对应的handle

输入

mem_info

mmz buffer的内存描述信息

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 只有分配mmz buffer的进程和被共享的进程可以通过handle获取mmz buffer的内存描述信息。

  • 此接口获取的内存描述信息中,offset的值固定为0。

  • 如果设置MMZ模块参数mem_process_isolation=0,参数合法即可获取mmz buffer的内存描述信息。

【举例】

无。

【相关主题】

ss_mpi_sys_get_mem_info_by_phys

【描述】

通过物理地址获取mmz buffer的内存描述信息。

【语法】

td_s32 ss_mpi_sys_get_mem_info_by_phys(td_phys_addr_t phys_addr, ot_sys_mem_info *mem_info);

【参数】

参数名称

描述

输入/输出

phys_addr

mmz buffer的物理地址。在buffer范围内的地址都可以,不一定是起始地址。

输入

mem_info

mmz buffer的内存描述信息

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

  • 只有分配mmz buffer的进程和被共享的进程可以通过物理地址获取mmz buffer的内存描述信息。

  • 如果设置MMZ模块参数mem_process_isolation=0,参数合法即可获取mmz buffer的内存描述信息。

【举例】

无。

【相关主题】

ss_mpi_sys_get_mem_info_by_virt

【描述】

通过用户态虚拟地址获取mmz buffer的内存描述信息。

【语法】

td_s32 ss_mpi_sys_get_mem_info_by_virt(const td_void *virt_addr, ot_sys_mem_info *mem_info);

【参数】

参数名称

描述

输入/输出

virt_addr

用户态虚拟地址。在buffer范围内的地址都可以,不一定是起始地址。

输入

mem_info

mmz buffer的内存描述信息

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_vb_set_cfg

【描述】

设置MPP视频缓存池属性。

【语法】

td_s32 ss_mpi_vb_set_cfg(const ot_vb_cfg *vb_cfg);

【参数】

参数名称

描述

输入/输出

vb_cfg

视频缓存池属性指针。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 只能在系统处于未初始化的状态下,才可以设置缓存池属性,否则会返回失败。

  • video buf根据不同的应用场景需要不同的配置。配置规则参见视频缓存池 。

  • 公共缓存池中每个缓存块的大小应根据当前图像像素格式以及图像是否压缩而有所不同。具体分配大小请参考ot_vb_cfg结构体中的描述。

【举例】

无。

【相关主题】

ss_mpi_vb_get_cfg

ss_mpi_vb_get_cfg

【描述】

获取MPP视频缓存池属性。

【语法】

td_s32 ss_mpi_vb_get_cfg(ot_vb_cfg *vb_cfg);

【参数】

参数名称

描述

输入/输出

vb_cfg

视频缓存池属性指针。

静态属性。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

必须先调用ss_mpi_vb_set_cfg设置MPP视频缓存池属性,再获取属性。

【举例】

无。

【相关主题】

ss_mpi_vb_set_cfg

ss_mpi_vb_init

【描述】

初始化MPP视频缓存池。

【语法】

td_s32 ss_mpi_vb_init(td_void);

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 必须先调用ss_mpi_vb_set_cfg配置缓存池属性,再初始化缓存池,否则会失败。

  • 可反复初始化,不返回失败。

【举例】

无。

【相关主题】

ss_mpi_vb_exit

ss_mpi_vb_exit

【描述】

去初始化MPP视频缓存池。

【语法】

td_s32 ss_mpi_vb_exit(td_void);

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 必须先调用ss_mpi_sys_exit去初始化MPP系统,再去初始化缓存池,否则返回失败。

  • 可以反复去初始化,不返回失败。

  • 去初始化不会清除先前对缓存池的配置。

  • 退出VB池之前请确保VB池里的任何VB都没有被占用,否则无法退出。

【举例】

无。

【相关主题】

ss_mpi_vb_init

ss_mpi_vb_create_pool

【描述】

创建一个用户视频缓存池。

【语法】

ot_vb_pool ss_mpi_vb_create_pool(ot_vb_pool_cfg *vb_pool_cfg);

【参数】

参数名称

描述

输入/输出

vb_pool_cfg

缓存池配置属性参数指针。

输入

【返回值】

返回值

描述

非OT_VB_INVALID_POOL_ID

有效的缓存池ID号。

OT_VB_INVALID_POOL_ID

创建缓存池失败,可能是参数非法或者保留内存不够。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_vb_destroy_pool

ss_mpi_vb_create_ext_pool

【描述】

创建一个虚拟视频缓存池,池里没有缓存块。

【语法】

ot_vb_pool ss_mpi_vb_create_ext_pool (const ot_vb_pool_cfg *vb_pool_cfg);

【参数】

参数名称

描述

输入/输出

vb_pool_cfg

缓存池配置属性参数指针。

输入

【返回值】

返回值

描述

非OT_VB_INVALID_POOL_ID

有效的缓存池ID号。

OT_VB_INVALID_POOL_ID

创建缓存池失败,可能是参数非法或者保留内存不够。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 此接口创建的缓存池是空的,VB不是在创建池子时分配的,而是来自外部,由外部程序分配。

  • 用户不能从池子中获取缓存块。

  • 虚拟视频缓存池不能作为模块的用户VB池,否则模块会获取不到VB。

  • vb_pool_cfg参数中,仅blk_size和blk_cnt有效,需要配置,其它成员保留,不需要配置,接口也不会检查。

  • 用户可以调用ss_mpi_vb_destroy_pool销毁缓存池,销毁时用户必须保证缓存池里没有实际的缓存块。

【举例】

无。

【相关主题】

ss_mpi_vb_destroy_pool

【描述】

销毁一个视频缓存池。

【语法】

td_s32 ss_mpi_vb_destroy_pool(ot_vb_pool pool);

【参数】

参数名称

描述

输入/输出

pool

缓存池ID号。

取值范围:0, OT_VB_MAX_POOLS)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 销毁一个不存在的缓存池,则返回OT_ERR_VB_UNEXIST。

  • 在去初始化MPP缓存池时,所有的缓存池都将被销毁,包括用户态的缓存池。

  • 退出VB池之前请确保VB池里的任何VB都没有被占用,否则无法退出。

  • [0, [OT_VB_MAX_POOLS)范围内的缓存池ID号,包括公共缓存池、模块公共缓存池、模块私有缓存池等的ID号。请确保Pool为ss_mpi_vb_create_pool所创建的缓存池的ID号,否则会返回失败。

  • 销毁VB池与创建VB池(或创建虚拟VB池)的操作,需要在同一个进程中执行。

【举例】

无。

【相关主题】

ss_mpi_vb_create_pool

ss_mpi_vb_get_blk

【描述】

用户态获取一个缓存块。

【语法】

ot_vb_blk ss_mpi_vb_get_blk(ot_vb_pool pool, td_u64 blk_size, const td_char *mmz_name)

【参数】

参数名称

描述

输入/输出

pool

缓存池ID号。

取值范围:[0, OT_VB_MAX_POOLS)。

输入

blk_size

缓存块大小。

取值范围:数据类型全范围,以byte为单位。

输入

mmz_name

缓存池所在DDR的名字。

输入

【返回值】

返回值

描述

非OT_VB_INVALID_HANDLE

有效的缓存块句柄。

OT_VB_INVALID_HANDLE

获取缓存块失败。

【错误码】

无。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 用户可以在创建一个缓存池之后,调用本接口从该缓存池中获取一个缓存块;即将第1个参数Pool设置为创建的缓存池ID;第2个参数blk_size须小于或等于创建该缓存池时指定的缓存块大小。从指定缓存池获取缓存块时,参数mmz_name无效。

  • 如果用户需要从任意一个公共缓存池中获取一块指定大小的缓存块,则可以将第1个参数Pool设置为无效ID号(OT_VB_INVALID_POOL_ID),将第2个参数blk_size设置为需要的缓存块大小,并指定要从哪个DDR上的公共缓存池获取缓存块。如果指定的DDR上并没有公共缓存池,那么将获取不到缓存块。如果mmz_name等于NULL,则表示在没有命名的DDR上的公共缓存池获取缓存块。

  • 公共缓存池主要用来存放VIU的捕获图像,因此,对公共缓存池的不当操作(如占用过多的缓存块)会影响MPP系统的正常运行。

【举例】

无。

【相关主题】

ss_mpi_vb_release_blk

ss_mpi_vb_release_blk

【描述】

用户态释放一个已经获取的缓存块。

【语法】

td_s32 ss_mpi_vb_release_blk(ot_vb_blk vb_blk);

【参数】

参数名称

描述

输入/输出

vb_blk

缓存块句柄。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

获取的缓存块使用完后,应该调用此接口释放缓存块。

【举例】

无。

【相关主题】

ss_mpi_vb_get_blk

ss_mpi_log_set_wait_flag

【描述】

设置读取日志时等待标志。

【语法】

td_s32 ss_mpi_log_set_wait_flag(td_bool flag);

【参数】

参数名称

描述

输入/输出

flag

读取日志时是否等待的标志。

输入

【返回值】

返回值

描述

0

成功。

非0

失败。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

无。

ss_mpi_vb_insert_buf_to_ext_pool

【描述】

往虚拟视频缓存池里添加缓存块,此缓存块由用户自己分配,并且不在公共缓存池内。

【语法】

ot_vb_blk ss_mpi_vb_insert_buf_to_ext_pool(ot_vb_pool pool, td_phys_addr_t phys_addr, td_u64 size, td_bool is_filled);

【参数】

参数名称

描述

输入/输出

pool

缓存池ID号。

取值范围:[0, OT_VB_MAX_POOLS)。

输入

phys_addr

缓存块物理地址。

取值范围:有效的MMZ物理地址,256字节对齐。

输入

size

缓存块大小。

取值范围:不能超过4GB,以byte为单位。

输入

is_filled

保留参数。

输入

【返回值】

返回值

描述

非OT_VB_INVALID_HANDLE

有效的缓存块句柄。

OT_VB_INVALID_HANDLE

获取缓存块失败。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 缓存块内存由用户自己分配和管理。此接口只是把缓存块添加到虚拟视频缓存池中。

  • pool必须是虚拟视频缓存池的ID号。

  • 缓存块的大小必须和创建虚拟视频缓存池时指定的blk_size保持一致。

  • 缓存块添加到虚拟视频缓存池后,不能再调用ss_mpi_vb_get_blk获取缓存块。

  • 用户传递的物理地址需在有效的mmz地址范围内,且需要256字节对齐,接口会检查是否会存在地址冲突。

  • 虚拟视频缓存池里缓存块的物理地址没有做虚拟地址映射,如果用户需要使用虚拟地址,请自己调用map函数映射。

  • 用户可以调用ss_mpi_vb_delete_buf_from_ext_pool从缓存池里释放缓存块。释放后缓存块就不在缓存池里,用户如果需要再使用,需要再次调用此接口把缓存块增加到缓存池。

  • 用户可以调用ss_mpi_vb_inquire_user_cnt查询此缓存块是否被占用。

  • 用户添加缓存块和创建虚拟VB池的操作,需要在同一个进程中执行。

【举例】

无。

【相关主题】

ss_mpi_vb_delete_buf_from_ext_pool

【描述】

用户从虚拟视频缓存池中释放一个缓存块。

【语法】

td_s32 ss_mpi_vb_delete_buf_from_ext_pool(ot_vb_blk block, td_s32 milli_sec);

【参数】

参数名称

描述

输入/输出

block

缓存块句柄。

输入

milli_sec

超时参数milli_sec设为-1时为阻塞接口;等于0时为非阻塞接口;大于0时为超时等待时间。超时时间的单位为毫秒(ms)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 应该调用此接口释放掉虚拟视频缓存池中不再使用的缓存块。

  • 此接口只能释放虚拟视频缓存池的缓存块。

【举例】

无。

【相关主题】

ss_mpi_vb_phys_addr_to_handle

【描述】

用户态通过缓存块的物理地址获取其句柄。

【语法】

ot_vb_blk ss_mpi_vb_phys_addr_to_handle (td_phys_addr_t phys_addr);

【参数】

参数名称

描述

输入/输出

phys_addr

缓存块物理地址。

输入

【返回值】

返回值

描述

非OT_VB_INVALID_HANDLE

有效的缓存池句柄。

OT_VB_INVALID_HANDLE

无效的缓存池句柄。

【错误码】

无。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

物理地址应该是从MPP视频缓存池中获取的有效缓存块的地址。

【举例】

无。

【相关主题】

无。

ss_mpi_vb_handle_to_phys_addr

【描述】

用户态获取一个缓存块的物理地址。

【语法】

td_phys_addr_t ss_mpi_vb_handle_to_phys_addr(ot_vb_blk vb_blk);

【参数】

参数名称

描述

输入/输出

vb_blk

缓存块句柄。

输入

【返回值】

返回值

描述

0

无效返回值,缓存块句柄非法。

非0

有效物理地址。

【错误码】

无。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

指定的缓存块应该是从MPP视频缓存池中获取的有效缓存块。

【举例】

无。

【相关主题】

无。

ss_mpi_vb_handle_to_pool_id

【描述】

用户态获取一个帧缓存块所在缓存池的ID。

【语法】

ot_vb_pool ss_mpi_vb_handle_to_pool_id(ot_vb_blk vb_blk);

【参数】

参数名称

描述

输入/输出

vb_blk

缓存块句柄。

输入

【返回值】

返回值

描述

非负数

有效的缓存池ID号。

负数

无效的缓存池ID号。

【错误码】

无。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

指定的缓存块应该是从MPP视频缓存池中获取的有效缓存块。

【举例】

无。

【相关主题】

无。

ss_mpi_vb_get_pool_info

【描述】

获取一个视频缓存池的信息。

【语法】

td_s32 ss_mpi_vb_get_pool_info(ot_vb_pool pool, ot_vb_pool_info *pool_info);

【参数】

参数名称

描述

输入/输出

pool

缓存池ID号。

取值范围:[0, OT_VB_MAX_POOLS)。

输入

pool_info

缓存池的信息。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

必须输入合法的缓存池ID。

【举例】

无。

【相关主题】

无。

ss_mpi_vb_init_mod_common_pool

【描述】

初始化模块公共视频缓存池。

【语法】

td_s32 ss_mpi_vb_init_mod_common_pool(ot_vb_uid vb_uid);

【参数】

参数名称

描述

输入/输出

vb_uid

使用模块公共视频缓冲池的模块ID。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 当前公共视频缓冲池仅适用于VDEC模块。

  • 必须先调用ss_mpi_vb_init进行公共视频缓冲池初始化。

  • 必须先调用ss_mpi_vb_set_mod_pool_cfg配置缓存池属性,再初始化缓存池,否则会失败。

  • 可反复初始化,不返回失败。

  • VDEC模块公共池仅在解码帧存分配方式使用模块公共VB池时才需要创建。

【举例】

无。

【相关主题】

ss_mpi_vb_exit_mod_common_pool

ss_mpi_vb_exit_mod_common_pool

【描述】

退出模块公共视频缓存池。

【语法】

td_s32 ss_mpi_vb_exit_mod_common_pool(ot_vb_uid vb_uid);

【参数】

参数名称

描述

输入/输出

vb_uid

使用模块公共视频缓冲池的模块ID。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 必须在ss_mpi_vb_exit之前调用该接口,否则返回失败。

  • 可以反复退出,不返回失败。

  • 退出后会清除先前对模块公共视频缓存池的配置。

  • 退出VB池之前请确保VB池里的任何VB都没有被占用,否则无法退出。

【举例】

无。

【相关主题】

ss_mpi_vb_init_mod_common_pool

ss_mpi_vb_set_mod_pool_cfg

【描述】

设置模块公共视频缓存池属性。

【语法】

td_s32 ss_mpi_vb_set_mod_pool_cfg(ot_vb_uid vb_uid, const ot_vb_cfg *vb_cfg);

【参数】

参数名称

描述

输入/输出

vb_uid

使用模块公共视频缓冲池的模块ID。

输入

vb_cfg

模块公共视频缓存池属性指针。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 模块公共视频缓冲区的配置根据实际需要配置,否则会造成内存浪费。

  • 如果模块VB已创建,再次配置返回错误码OT_ERR_VB_BUSY。

【举例】

无。

【相关主题】

ss_mpi_vb_get_mod_pool_cfg

ss_mpi_vb_get_mod_pool_cfg

【描述】

获取模块公共视频缓存池属性。

【语法】

td_s32 ss_mpi_vb_get_mod_pool_cfg(ot_vb_uid vb_uid, ot_vb_cfg *vb_cfg);

【参数】

参数名称

描述

输入/输出

vb_uid

使用模块公共视频缓冲池的模块ID。

输入

vb_cfg

模块公共视频缓存池属性指针。

静态属性。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

必须先调用ss_mpi_vb_set_mod_pool_cfg设置模块公共视频缓存池属性,再获取属性。

【举例】

无。

【相关主题】

ss_mpi_vb_set_mod_pool_cfg

ss_mpi_vb_inquire_user_cnt

【描述】

查询缓存块使用计数信息。

【语法】

td_s32 ss_mpi_vb_inquire_user_cnt(ot_vb_blk vb_blk);

【参数】

参数名称

描述

输入/输出

vb_blk

缓存块句柄。

输入

【返回值】

返回值

描述

OT_VB_INVALID_HANDLE

查询失败。

非OT_VB_INVALID_HANDLE

缓存块使用计数值。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

无。

ss_mpi_vb_get_supplement_addr

【描述】

获取VB block内存的辅助信息。

【语法】

td_s32 ss_mpi_vb_get_supplement_addr(ot_vb_blk vb_blk, ot_video_supplement *supplement);

【参数】

参数名称

描述

输入/输出

vb_blk

缓存块句柄。

输入

supplement

VB block内存的辅助信息。

如闪光帧类型、DCF信息等。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

supplement保存的DCF地址信息为内核态虚拟地址。

【举例】

【相关主题】

ss_mpi_vb_set_supplement_cfg

【描述】

设置VB内存的附加信息。

【语法】

td_s32 ss_mpi_vb_set_supplement_cfg(const ot_vb_supplement_cfg *supplement_cfg);

【参数】

参数名称

描述

输入/输出

supplement_cfg

VB内存附加信息控制结构体。

用于附加信息分配内存。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 当前支持5种VB内存附加信息,分别为:

    • DCF信息,对应结构体ot_jpeg_dcf。对应的MASK为OT_VB_SUPPLEMENT_JPEG_MASK。

    • 图像运动信息。无对应的结构体,对应的MASK为OT_VB_SUPPLEMENT_MOTION_DATA_MASK。

    • DNG信息,对应结构体为ot_dng_image_dynamic_info,对应的MASK为OT_VB_SUPPLEMENT_DNG_MASK。

    • 视频扩展补充信息。对应结构体为ot_video_supplement_misc,对应的MASK为OT_VB_SUPPLEMENT_MISC_MASK,SS928V100配置无效。

    • BNR信息。无对应结构体。对应的MASK为OT_VB_SUPPLEMENT_BNR_MOT_MASK。

  • 需要在ss_mpi_vb_init前调用此接口,辅助信息才能生效。

  • SS528V100/SS524V100/SS626V100不支持此接口。

【举例】

【相关主题】

ss_mpi_vb_get_supplement_cfg

ss_mpi_vb_get_supplement_cfg

【描述】

获取VB内存的附加信息。

【语法】

td_s32 ss_mpi_vb_get_supplement_cfg(ot_vb_supplement_cfg *supplement_cfg);

【参数】

参数名称

描述

输入/输出

supplement_cfg

VB内存附加信息控制结构体。

用于附加信息分配内存。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

SS528V100/SS524V100/SS626V100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vb_set_supplement_cfg

ss_mpi_vb_get_common_pool_id

【描述】

获取公共VB池的pool ID。

【语法】

td_s32 ss_mpi_vb_get_common_pool_id(ot_vb_common_pools_id *pools_id);

【参数】

参数名称

描述

输入/输出

pools_id

当前所有公共VB池的pool ID

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_vb_get_mod_common_pool_id

【描述】

获取模块公共VB池的pool ID。

【语法】

td_s32 ss_mpi_vb_get_mod_common_pool_id(ot_vb_uid vb_uid, ot_vb_common_pools_id *pools_id);

【参数】

参数名称

描述

输入/输出

vb_uid

使用模块公共VB池的模块ID

输入

pools_id

模块公共VB池的pool ID

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_vb_pool_share

【描述】

将pool ID对应的VB池共享给特定的进程ID。

【语法】

td_s32 ss_mpi_vb_pool_share(ot_vb_pool pool, td_s32 pid);

【参数】

参数名称

描述

输入/输出

pool

视频缓存池ID号。

取值范围:[0, OT_VB_MAX_POOLS)

输入

pid

进程ID

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件: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

ss_mpi_vb_pool_unshare

【描述】

解除pool ID对应的VB池对进程ID的共享。

【语法】

td_s32 ss_mpi_vb_pool_unshare(ot_vb_pool pool, td_s32 pid);

【参数】

参数名称

描述

输入/输出

pool

视频缓存池ID号。

取值范围:[0, OT_VB_MAX_POOLS)

输入

pid

进程ID

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件: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

ss_mpi_vb_pool_share_all

【描述】

将pool ID对应的VB池以不限进程ID的方式共享给所有进程。

【语法】

td_s32 ss_mpi_vb_pool_share_all(ot_vb_pool pool);

【参数】

参数名称

描述

输入/输出

pool

视频缓存池ID号。

取值范围:[0, OT_VB_MAX_POOLS)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件:ot_common_vb.h、ss_mpi_vb.h

  • 库文件:libss_mpi.a

【注意】

  • 只有创建VB池的进程能注册共享,其它进程注册共享返回失败。

  • 重复共享给所有进程,接口返回成功。

  • 不支持虚拟VB池。

  • 如果设置MMZ模块参数mem_process_isolation=0,此接口返回成功了也不会生效。

【举例】

无。

【相关主题】

ss_mpi_vb_pool_unshare_all

ss_mpi_vb_pool_unshare_all

【描述】

解除pool ID对应的VB池对所有进程的共享。

【语法】

td_s32 ss_mpi_vb_pool_unshare_all(ot_vb_pool pool);

【参数】

参数名称

描述

输入/输出

pool

视频缓存池ID号。

取值范围:[0, OT_VB_MAX_POOLS)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值参见错误码。

【需求】

  • 头文件: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_vb_pool_share_all

ss_mpi_log_set_level_cfg

【描述】

设置日志等级。

【语法】

td_s32 ss_mpi_log_set_level_cfg(ot_log_level_cfg *level_cfg);

【参数】

参数名称

描述

输入/输出

level_cfg

日志等级信息结构体。

输入

【返回值】

返回值

描述

0

成功。

非0

失败。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h

  • 库文件:libss_mpi.a

【注意】

  • 当level_cfg中的成员mod_name设置为字符串“all”时,将设置全部模块的日志等级。否则,只设定mod_id指定的模块的日志等级。

  • 只能设置芯片支持的模块的日志等级,否则会失败。

【举例】

无。

【相关主题】

ss_mpi_log_get_level_cfg

ss_mpi_log_get_level_cfg

【描述】

获取日志等级。

【语法】

td_s32 ss_mpi_log_get_level_cfg(ot_log_level_cfg *level_cfg);

【参数】

参数名称

描述

输入/输出

level_cfg

日志等级信息结构体。

输入

【返回值】

返回值

描述

0

成功。

非0

失败。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_log_set_level_cfg

ss_mpi_log_read

【描述】

读取日志。

【语法】

td_s32 ss_mpi_log_read(td_char *buf, td_u32 size);

【参数】

参数名称

描述

输入/输出

buf

用于存放日志的内存指针。

输出

size

读取日志的大小。

输入

【返回值】

返回值

描述

大于等于0

成功读取的日志的大小。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

无。

ss_mpi_log_close

【描述】

关闭日志文件。

【语法】

td_void ss_mpi_log_close(td_void);

【参数】

无。

【返回值】

无。

【需求】

  • 头文件:ot_common_sys.h、ss_mpi_sys.h、ot_debug.h

  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

无。

数据类型

基本数据类型

基本数据类型定义如下:

公共数据类型

typedef unsigned char           td_uchar;
typedef unsigned char           td_u8;
typedef unsigned short          td_u16;
typedef unsigned int            td_u32;
typedef unsigned long           td_ulong;
typedef char                    td_char;
typedef signed char            td_s8;
typedef short                   td_s16;
typedef int                     td_s32;
typedef long                    td_slong;
typedef float                   td_float;
typedef double                  td_double;
typedef void                    td_void;
#ifndef _M_IX86
    typedef unsigned long long  td_u64;
    typedef long long           td_s64;
#else
    typedef unsigned __int64  td_u64;
    typedef __int64             td_s64;
#endif
typedef unsigned long int     td_phys_addr_t;
typedef td_u32                  td_handle;
typedef unsigned int           td_fr32;
typedef td_u32 				  ot_vb_pool;
typedef td_u32                  ot_vb_blk;
typedef enum {
    TD_FALSE = 0,
    TD_TRUE  = 1,
} td_bool;
#ifndef NULL
    #define NULL    0L
#endif
#define TD_NULL     0L
#define TD_SUCCESS  0
#define TD_FAILURE  (-1)
typedef td_s32 ot_ai_chn;
typedef td_s32 ot_ao_chn;
typedef td_s32 ot_aenc_chn;
typedef td_s32 ot_adec_chn;
typedef td_s32 ot_audio_dev;
typedef td_s32 ot_vi_dev;
typedef td_s32 ot_vi_pipe;
typedef td_s32 ot_vi_way;
typedef td_s32 ot_vi_chn;
typedef td_s32 ot_vi_grp;
typedef td_s32 ot_vo_dev;
typedef td_s32 ot_vo_layer;
typedef td_s32 ot_vo_chn;
typedef td_s32 ot_vo_wbc;
typedef td_s32 ot_gfx_layer;
typedef td_s32 ot_venc_chn;
typedef td_s32 ot_vdec_chn;
typedef td_s32 ot_ive_handle;
typedef td_s32 ot_fd_chn;
typedef td_s32 ot_md_chn;
typedef td_s32 ot_isp_dev;
typedef td_s32 ot_blk_dev;
typedef td_s32 ot_sensor_id;
typedef td_s32 ot_mipi_dev;
typedef td_s32 ot_slave_dev;
typedef td_s32 ot_svp_nnie_handle;
typedef td_s32 ot_svp_dsp_handle;
typedef td_s32 ot_svp_alg_chn;
typedef td_s32 ot_svp_mau_handle;
typedef td_s32 ot_vpss_grp;
typedef td_s32 ot_vpss_grp_pipe;
typedef td_s32 ot_vpss_chn;
typedef td_s32 ot_avs_grp;
typedef td_s32 ot_avs_pipe;
typedef td_s32 ot_avs_chn;
typedef td_s32 ot_mcf_grp;
typedef td_s32 ot_mcf_pipe;
typedef td_s32 ot_mcf_chn;
typedef td_s32 ot_vda_chn;
typedef td_s32 ot_pciv_chn;
/* 无效的通道号、无效的WAY号、无效的设备号、无效的句柄号、无效的PoolID、无效handle*/
#define OT_INVALID_CHN (-1)
#define OT_INVALID_WAY (-1)
#define OT_INVALID_LAYER (-1)
#define OT_INVALID_DEV (-1)
#define OT_INVALID_HANDLE (-1)
#define OT_INVALID_VALUE (-1)
#define OT_INVALID_TYPE (-1)
#define OT_VB_INVALID_POOL_ID             (-1U)
#define OT_VB_INVALID_HANDLE              (-1U)
/* 最大的公共视频缓存池个数 */
#define OT_VB_MAX_COMMON_POOLS              16
/* 最大的模块视频缓存池个数 */
#define OT_VB_MAX_MOD_COMMON_POOLS          16
/* 公共视频缓存池的owner id */
#define OT_POOL_OWNER_COMMON	-1
/* 私有视频缓存池的owner id */
#define OT_POOL_OWNER_PRIVATE	-2
/* 模块视频缓存池的owner id */
#define OT_POOL_OWNER_MODULE	-3
/* 用户视频缓存池的owner id */
#define OT_POOL_OWNER_USER  -4
/* VB附加信息JPEG DCF MASK */
#define OT_VB_SUPPLEMENT_JPEG_MASK 0x1
/* VB附加信息MOTION DATA MASK */
#define OT_VB_SUPPLEMENT_MOTION_DATA_MASK 0x2
/* VB附加信息DNG MASK */
#define OT_VB_SUPPLEMENT_DNG_MASK         0x4
/* VB附加信息MISC MASK */
#define OT_VB_SUPPLEMENT_MISC_MASK        0x8
/* VB附加信息BNR MOT MASK */
#define OT_VB_SUPPLEMENT_BNR_MOT_MASK   0x10
/* MMZ名字长度 */
#define OT_MAX_MMZ_NAME_LEN             32
/* 定义变量的首地址按8Bytes对齐的宏ATTRIBUTE */
#define OT_ALIGN_NUM 8
#define ATTRIBUTE __attribute__((aligned (OT_ALIGN_NUM)))
/* 定义指针变量高32位清零的宏COMPAT_POINTER */
#define OT_COMPAT_POINTER(ptr, type) \
    do { \
        td_u32 dest_addr_ = (td_u32) (td_uintptr_t)ptr; \
        ptr = (type)( td_uintptr_t) dest_addr_; \
    } while (0)

【注意事项】

Linux系统下,如果是内核态64位、用户态32位系统架构的应用场景,指针变量在内核态和用户态的长度是不一样的,在内核态是64bit长度,用户态是32bit长度,如果用户态指针指向的内存里面的数据需要与内核态有交互,则需要把用户态指针变量传递到内核态之后把高32bit的值清0,还原出一个真正的用户态指针。

OT_VB_MAX_POOLS

【说明】

最大的视频缓存池个数。

【定义】

#define  OT_VB_MAX_POOLS	768

【注意事项】

无。

【相关数据类型及接口】

无。

OT_MAX_COLOR_COMPONENT

【说明】

定义数据分量个数。

【定义】

#define OT_MAX_COLOR_COMPONENT             2

【注意事项】

无。

【相关数据类型及接口】

无。

OT_MAX_PRIVATE_DATA_NUM

【说明】

定义私有数据个数。

【定义】

#define OT_MAX_PRIVATE_DATA_NUM            1

【注意事项】

无。

【相关数据类型及接口】

无。

OT_QUAD_POINT_NUM

【说明】

定义不规则四边形的坐标点个数。

【定义】

#define OT_QUAD_POINT_NUM                  4

【注意事项】

无。

【相关数据类型及接口】

无。

ot_mod_id

【说明】

定义模块ID枚举类型。

【定义】

typedef enum {
    OT_ID_CMPI    = 0,
    OT_ID_VB      = 1,
    OT_ID_SYS     = 2,
    OT_ID_RGN      = 3,
    OT_ID_CHNL    = 4,
    OT_ID_VDEC    = 5,
    OT_ID_AVS     = 6,
    OT_ID_VPSS    = 7,
    OT_ID_VENC    = 8,
    OT_ID_SVP     = 9,
    OT_ID_H264E   = 10,
    OT_ID_JPEGE   = 11,
    OT_ID_H265E   = 13,
    OT_ID_JPEGD   = 14,
    OT_ID_VO      = 15,
    OT_ID_VI      = 16,
    OT_ID_DIS     = 17,
    OT_ID_VALG    = 18,
    OT_ID_RC      = 19,
    OT_ID_AIO     = 20,
    OT_ID_AI      = 21,
    OT_ID_AO      = 22,
    OT_ID_AENC    = 23,
    OT_ID_ADEC    = 24,
    OT_ID_VPU    = 25,
    OT_ID_PCIV    = 26,
    OT_ID_PCIVFMW = 27,
    OT_ID_ISP      = 28,
    OT_ID_IVE      = 29,
    OT_ID_USER    = 30,
    OT_ID_PROC    = 33,
    OT_ID_LOG     = 34,
    OT_ID_VFMW    = 35,
    OT_ID_GDC     = 37,
    OT_ID_PHOTO   = 38,
    OT_ID_FB      = 39,
    OT_ID_HDMI    = 40,
    OT_ID_VOIE    = 41,
    OT_ID_TDE     = 42,
    OT_ID_HDR      = 43,
    OT_ID_PRORES  = 44,
    OT_ID_VGS     = 45,
    OT_ID_FD      = 47,
    OT_ID_OD      = 48,
    OT_ID_LPR      = 50,
    OT_ID_SVP_NNIE     = 51,
    OT_ID_SVP_DSP      = 52,
    OT_ID_DPU_RECT     = 53,
    OT_ID_DPU_MATCH    = 54,
    OT_ID_MOTIONSENSOR = 55,
    OT_ID_MOTIONFUSION = 56,
    OT_ID_GYRODIS      = 57,
    OT_ID_PM           = 58,
    OT_ID_SVP_ALG      = 59,
    OT_ID_IVP          = 60,
    OT_ID_MCF          = 61,
    OT_ID_SVP_MAU      = 62,
    OT_ID_VDA           = 63,
    OT_ID_VPP           = 64,
    OT_ID_KCF           = 65,
    OT_ID_PQP          = 66,
    OT_ID_NNNDEV      = 67,
    OT_ID_AACPU        = 68,
    OT_ID_NNNDFX      = 69,
    OT_ID_TSFW        = 70,
    OT_ID_CIPHER       = 71,
    OT_ID_KLAD         = 72,
    OT_ID_KEYSLOT      = 73,
    OT_ID_OTP          = 74,
    OT_ID_VDEC_ADAPT   = 75,
    OT_ID_DCC          = 76,
    OT_ID_VDEC_SERVER  = 77,
    OT_ID_VFMW_MDC     = 78,
    OT_ID_VB_LOG     = 79,
    OT_ID_MCF_CALIBRATION = 80,
    OT_ID_SVP_NNN      = 81,
    OT_ID_HNR          = 82,
    OT_ID_SNAP         = 83,
    OT_ID_LOG_MDC      = 84,
    OT_ID_UVC          = 85,
    OT_ID_FISHEYE_CALIBRATION  = 86,
    OT_ID_BUTT,
} ot_mod_id;

【成员】

无。

【注意事项】

无。

相关数据类型及接口

无。

ot_payload_type

【说明】

定义音视频净荷类型枚举。

【定义】

typedef enum {
        OT_PT_PCMU          = 0,
        OT_PT_1016          = 1,
        OT_PT_G721          = 2,
        OT_PT_GSM           = 3,
        OT_PT_G723          = 4,
        OT_PT_DVI4_8K       = 5,
        OT_PT_DVI4_16K      = 6,
        OT_PT_LPC           = 7,
        OT_PT_PCMA          = 8,
        OT_PT_G722          = 9,
        OT_PT_S16BE_STEREO  = 10,
        OT_PT_S16BE_MONO    = 11,
        OT_PT_QCELP         = 12,
        OT_PT_CN            = 13,
        OT_PT_MPEGAUDIO     = 14,
        OT_PT_G728          = 15,
        OT_PT_DVI4_3        = 16,
        OT_PT_DVI4_4        = 17,
        OT_PT_G729          = 18,
        OT_PT_G711A         = 19,
        OT_PT_G711U         = 20,
        OT_PT_G726          = 21,
        OT_PT_G729A         = 22,
        OT_PT_LPCM          = 23,
        OT_PT_CelB          = 25,
        OT_PT_JPEG          = 26,
        OT_PT_CUSM          = 27,
        OT_PT_NV            = 28,
        OT_PT_PICW          = 29,
        OT_PT_CPV           = 30,
        OT_PT_H261          = 31,
        OT_PT_MPEGVIDEO     = 32,
        OT_PT_MPEG2TS       = 33,
        OT_PT_H263          = 34,
        OT_PT_SPEG          = 35,
        OT_PT_MPEG2VIDEO    = 36,
        OT_PT_AAC           = 37,
        OT_PT_WMA9STD       = 38,
        OT_PT_HEAAC         = 39,
        OT_PT_PCM_VOICE     = 40,
        OT_PT_PCM_AUDIO     = 41,
        OT_PT_MP3           = 43,
        OT_PT_ADPCMA        = 49,
        OT_PT_AEC           = 50,
        OT_PT_X_LD          = 95,
        OT_PT_H264          = 96,
        OT_PT_D_GSM_HR      = 200,
        OT_PT_D_GSM_EFR     = 201,
        OT_PT_D_L8          = 202,
        OT_PT_D_RED         = 203,
        OT_PT_D_VDVI        = 204,
        OT_PT_D_BT656       = 220,
        OT_PT_D_H263_1998   = 221,
        OT_PT_D_MP1S        = 222,
        OT_PT_D_MP2P        = 223,
        OT_PT_D_BMPEG       = 224,
        OT_PT_MP4VIDEO      = 230,
        OT_PT_MP4AUDIO      = 237,
        OT_PT_VC1           = 238,
        OT_PT_JVC_ASF       = 255,
        OT_PT_D_AVI         = 256,
        OT_PT_DIVX3         = 257,
        OT_PT_AVS           = 258,
        OT_PT_REAL8         = 259,
        OT_PT_REAL9         = 260,
        OT_PT_VP6           = 261,
        OT_PT_VP6F          = 262,
        OT_PT_VP6A          = 263,
        OT_PT_SORENSON      = 264,
        OT_PT_H265          = 265,
        OT_PT_VP8           = 266,
        OT_PT_MVC           = 267,
        OT_PT_PNG           = 268,
        OT_PT_AMR           = 1001,
        OT_PT_MJPEG         = 1002,
        OT_PT_AMRWB         = 1003,
        OT_PT_PRORES        = 1006,
        OT_PT_OPUS          = 1007,
        OT_PT_BUTT
    } ot_payload_type;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

  • ot_venc_chn_attr

  • ot_vdec_chn_attr

  • ot_vdec_chn_status

  • ot_vdec_chn_param

  • ot_vdec_protocol_param

  • ot_aenc_chn_attr

  • ot_adec_chn_attr

ot_vb_uid

【说明】

定义视频缓冲池的模块ID枚举类型。

【定义】

typedef enum {
    OT_VB_UID_VI = 0,
    OT_VB_UID_VO = 1,
    OT_VB_UID_VGS = 2,
    OT_VB_UID_VENC = 3,
    OT_VB_UID_VDEC = 4,
    OT_VB_UID_H265E = 5,
    OT_VB_UID_H264E = 6,
    OT_VB_UID_JPEGE = 7,
    OT_VB_UID_JPEGD =8,
    OT_VB_UID_VPSS = 9,
    OT_VB_UID_DIS = 10,
    OT_VB_UID_USER = 11,
    OT_VB_UID_PCIV = 12,
    OT_VB_UID_AI = 13,
    OT_VB_UID_AENC = 14,
    OT_VB_UID_RC = 15,
    OT_VB_UID_VFMW = 16,
    OT_VB_UID_GDC = 17,
    OT_VB_UID_AVS = 18,
    OT_VB_UID_DPU_RECT = 19,
    OT_VB_UID_DPU_MATCH = 20,
    OT_VB_UID_MCF = 21,
    OT_VB_UID_VDA = 22,
    OT_VB_UID_VPP = 23,
    OT_VB_UID_COMMON  = 24,
    OT_VB_UID_UVC = 25,
    OT_VB_UID_VDEC_ADAPT = 26,
    OT_VB_UID_BUTT = 27,
} ot_vb_uid

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_op_mode

【说明】

定义操作模式枚举。

【定义】

typedef enum  {
    OT_OP_MODE_AUTO   = 0,
    OT_OP_MODE_MANUAL = 1,
    OT_OP_MODE_BUTT
} ot_op_mode;

【成员】

成员名称

描述

OT_OP_MODE_AUTO

自动模式,一般此模式使用程序内部的默认参数。

OT_OP_MODE_MANUAL

手动模式,一般此模式使用用户配置的参数。

【注意事项】

无。

【相关数据类型及接口】

ot_venc_cu_pred

ot_rotation

【说明】

定义旋转角度枚举。

【定义】

typedef enum  {
    OT_ROTATION_0   = 0,
    OT_ROTATION_90  = 1,
    OT_ROTATION_180 = 2,
    OT_ROTATION_270 = 3,
    OT_ROTATION_BUTT
} ot_rotation;

【成员】

成员名称

描述

OT_ROTATION_0

不旋转,旋转0度。

OT_ROTATION_90

旋转90度。

OT_ROTATION_180

旋转180度。

OT_ROTATION_270

旋转270度。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_vb_src

【说明】

定义VB来源选择。

【定义】

typedef enum  {
    OT_VB_SRC_COMMON  = 0,
    OT_VB_SRC_MOD  = 1,
    OT_VB_SRC_PRIVATE = 2,
    OT_VB_SRC_USER    = 3,
    OT_VB_SRC_BUTT
} ot_vb_src;

【成员】

成员名称

描述

OT_VB_SRC_COMMON

公共VB。

OT_VB_SRC_MOD

模块VB。

OT_VB_SRC_PRIVATE

私有VB。

OT_VB_SRC_USER

用户VB。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_point

【说明】

定义坐标信息结构体。

【定义】

typedef struct {
    td_s32 x;
    td_s32 y;
} ot_point;

【成员】

成员名称

描述

x

横坐标。

y

纵坐标。

【注意事项】

无。

【相关数据类型及接口】

  • ot_rgn_overlay_chn_attr

  • ot_rgn_quadrangle

  • ot_rgn_bmp_update

  • ot_vgs_draw_line

  • ot_vgs_quadrangle_cover

ot_size

【说明】

定义大小信息结构体。

【定义】

typedef struct {
    td_u32 width;
    td_u32 height;
} ot_size;

【成员】

成员名称

描述

width

宽度。

height

高度。

【注意事项】

无。

【相关数据类型及接口】

  • ot_rgn_overlay_attr

  • ot_rgn_overlayex_attr

  • ot_rgn_canvas_info

  • ot_venc_mpf_cfg

  • ot_vi_chn_attr

  • ot_vo_wbc_attr

  • ot_vo_video_layer_attr

ot_rect

【说明】

定义矩形区域信息结构体。

【定义】

typedef struct {
    td_s32 x;
    td_s32 y;
    td_u32 width;
    td_u32 height;
} ot_rect;

【成员】

成员名称

描述

x

横坐标。

y

纵坐标。

width

宽度。

height

高度。

【注意事项】

无。

【相关数据类型及接口】

  • ot_rgn_mosaic_chn_attr

  • ot_rgn_mosaicex_chn_attr

  • ot_venc_roi_attr

  • ot_venc_sse_rgn

  • ot_vgs_osd

  • ot_vi_chn_attr

  • ot_cover

  • ot_mosaic

  • ot_crop_info

  • ot_aspect_ratio

  • ot_vo_video_layer_attr

  • ot_vo_chn_attr

  • ot_vpss_crop_info

  • ot_mcf_crop_info

ot_coord

【说明】

定义坐标模式。

【定义】

typedef enum {
    OT_COORD_ABS = 0,
    OT_COORD_RATIO,
    OT_COORD_BUTT
} ot_coord;

【成员】

成员名称

描述

OT_COORD_ABS

绝对坐标。

OT_COORD_RATIO

相对坐标。

【注意事项】

相对坐标,即坐标值是以与当前图像宽高的比率来表示,具体比率转换以实际使用接口为准。

【相关数据类型及接口】

  • ot_rgn_cover_chn_attr

  • ot_vpss_crop_info

  • ot_mcf_crop_info

ot_border

【说明】

定义边框属性结构体。

【定义】

typedef struct {
    td_u32 top_width;
    td_u32 bottom_width;
    td_u32 left_width;
    td_u32 right_width;
    td_u32 color;
} ot_border;

【成员】

成员名称

描述

top_width

边框顶部宽度,以像素为单位。

bottom_width

边框底部宽度,以像素为单位。

left_width

边框左边宽度,以像素为单位。

right_width

边框右边宽度,以像素为单位。

color

边框颜色,颜色格式为rgb888,u32的低24bit为有效位。‎

【注意事项】

【相关数据类型及接口】

ot_vo_border

ot_cover

【说明】

定义cover属性结构体。

【定义】

typedef struct {
    ot_cover_type              type;
    union {
        ot_rect                rect;
        ot_quad_cover          quad;
    };
    td_u32                     color;
} ot_cover;

【成员】

成员名称

描述

type

Cover类型

rect

矩形坐标

quad

任意四边形结构

color

cover颜色 格式为RGB888

【注意事项】

无。

【相关数据类型及接口】

ot_cover_type

【说明】

cover类型枚举。

【定义】

typedef enum {
    OT_COVER_RECT = 0,
    OT_COVER_QUAD,
    OT_COVER_BUTT
} ot_cover_type;

【成员】

成员名称

描述

OT_COVER_RECT

矩形

OT_COVER_QUAD

任意四边形

【注意事项】

【相关数据类型及接口】

ot_quad_cover

【说明】

定义不规则四边形Cover属性结构。

【定义】

typedef struct {
    td_bool        is_solid;
    td_u32         thick;
    ot_point       point[OT_QUAD_POINT_NUM];
} ot_quad_cover

【成员】

成员名称

描述

is_solid

是否实心

thick

空心线宽,取值范围为[OT_RGN_COVEREX_MIN_THICK, OT_RGN_COVEREX_MAX_THICK],要求以2对齐。

point

任意四边形坐标

【注意事项】

任意四边形的四个点坐标不可以设置为同一点或者同一直线上。

【相关数据类型及接口】

ot_cover

ot_mosaic

【说明】

定义mosaic属性结构体。

【定义】

typedef struct {
    ot_mosaic_blk_size blk_size;
    ot_rect            rect;   /* RW; The rectangle area. */
} ot_mosaic;

【成员】

成员名称

描述

blk_size

Mosaic块大小

rect

矩形坐标

【注意事项】

无。

【相关数据类型及接口】

ot_mosaic_blk_size

【说明】

Mosaic 块大小枚举。

【定义】

typedef enum  {
    OT_MOSAIC_BLK_SIZE_4 = 0, /* block size 4*4 of MOSAIC */
    OT_MOSAIC_BLK_SIZE_8, /* block size 8*8 of MOSAIC */
    OT_MOSAIC_BLK_SIZE_16,    /* block size 16*16 of MOSAIC */
    OT_MOSAIC_BLK_SIZE_32,    /* block size 32*32 of MOSAIC */
    OT_MOSAIC_BLK_SIZE_64,    /* block size 64*64 of MOSAIC */
    OT_MOSAIC_BLK_SIZE_128,   /* block size 128*128 of MOSAIC */
    OT_MOSAIC_BLK_SIZE_BUTT
} ot_mosaic_blk_size; 

【成员】

成员名称

描述

OT_MOSAIC_BLK_SIZE_4

4x4大小Mosaic块

OT_MOSAIC_BLK_SIZE_8

8x8大小Mosaic块

OT_MOSAIC_BLK_SIZE_16

16x16大小Mosaic块

OT_MOSAIC_BLK_SIZE_32

32x32大小Mosaic块

OT_MOSAIC_BLK_SIZE_64

64x64大小Mosaic块

OT_MOSAIC_BLK_SIZE_128

128x128大小Mosaic块

【注意事项】

【相关数据类型及接口】

ot_corner_rect_type

【说明】

定义corner_rect形状枚举。

【定义】

typedef enum{
    OT_CORNER_RECT_TYPE_CORNER = 0,
    OT_CORNER_RECT_TYPE_FULL_LINE,
    OT_CORNER_RECT_TYPE_BUTT
}ot_corner_rect_type;

【成员】

成员名称

描述

OT_CORNER_RECT_TYPE_CORNER

角框

OT_CORNER_RECT_TYPE_FULL_LINE

线框

【注意事项】

无。

【相关数据类型及接口】

ot_corner_rect_attr

ot_corner_rect

【说明】

定义corner_rect位置结构体。

【定义】

typedef struct {
    ot_rect      rect;
    td_u32       hor_len;
    td_u32       ver_len;
    td_u32       thick;
} ot_corner_rect;

【成员】

成员名称

描述

rect

起始位置及宽高信息,参考ot_rect结构体描述。

hor_len

角框水平线长。

ver_len

角框竖直线长。

thick

角框线宽。

【注意事项】

无。

【相关数据类型及接口】

ot_corner_rect_attr

【说明】

定义corner_rect属性结构体。

【定义】

typedef struct {
    ot_corner_rect_type    corner_rect_type;
    td_u32                 color;
} ot_corner_rect_attr;

【成员】

成员名称

描述

corner_rect_type

定义角框形状。

color

定义角框颜色。

【注意事项】

无。

【相关数据类型及接口】

ot_crop_info

【说明】

定义CROP属性结构体。

【定义】

typedef struct {
    td_bool enable;
    ot_rect  rect;
} ot_crop_info;

【成员】

成员名称

描述

enable

Crop使能开关。

rect

Crop起始位置与宽高信息。

【注意事项】

无。

【相关数据类型及接口】

  • ot_venc_chn_param

  • ss_mpi_vo_set_video_layer_crop

  • ss_mpi_vo_get_video_layer_crop

ot_frame_rate_ctrl

【说明】

定义帧率控制结构体。

【定义】

typedef struct {
    td_s32  src_frame_rate;        /* RW; source frame rate */
    td_s32  dst_frame_rate;        /* RW; dest frame rate */
} ot_frame_rate_ctrl;

【成员】

成员名称

描述

src_frame_rate

源帧率,即输入帧率。

取值范围-1或[1, 240]

dst_frame_rate

目的帧率,即输出帧率。

取值范围[-1, src_frame_rate]

【注意事项】

无。

【相关数据类型及接口】

  • ot_venc_chn_param

  • ot_vpss_grp_attr

  • ot_vpss_chn_attr

  • ot_mcf_chn_attr

  • ot_mcf_grp_attr

ot_video_display_mode

【说明】

定义视频显示模式枚举。

【定义】

typedef enum  {
    OT_VIDEO_DISPLAY_MODE_PREVIEW  = 0,
    OT_VIDEO_DISPLAY_MODE_PLAYBACK = 1,
    OT_VIDEO_DISPLAY_MODE_BUTT
} ot_video_display_mode;

【成员】

成员名称

描述

OT_VIDEO_DISPLAY_MODE_PREVIEW

预览模式。

OT_VIDEO_DISPLAY_MODE_PLAYBACK

回放模式。

【注意事项】

无。

【相关数据类型及接口】

  • ss_mpi_vdec_set_display_mode

  • ss_mpi_vdec_get_display_mode

ot_rotation_view_type

【说明】

定义旋转的视野模式。

【定义】

typedef enum {
   OT_ROTATION_VIEW_TYPE_ALL      = 0, /* View all source Image,no lose*/
   OT_ROTATION_VIEW_TYPE_TYPICAL  = 1, /* View from rotation Image with source size,same lose*/
   OT_ROTATION_VIEW_TYPE_INSIDE   = 2, /* View with no black section,all  in dest Image*/
   OT_ROTATION_VIEW_TYPE_BUTT,
} ot_rotation_view_type;

【成员】

成员名称

描述

OT_ROTATION_VIEW_TYPE_ALL

全模式,保留所有的图像,无图像视野损失,但随着旋转角度改变带来较多的黑边。

OT_ROTATION_VIEW_TYPE_TYPICAL

典型模式,用原有视野截取旋转后图像,会有部分图像损失,也会留有一定量的黑边。

OT_ROTATION_VIEW_TYPE_INSIDE

无黑边模式,在旋转后图中选取无黑边的视野大小

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_free_rotation_attr

ot_free_rotation_attr

【说明】

定义任意角度旋转属性。

【定义】

typedef struct {
    ot_rotation_view_type view_type;
    td_u32    angle;
    td_s32    center_x_offset;
    td_s32    center_y_offset;
    ot_size   dst_size;
} ot_free_rotation_attr;

【成员】

成员名称

描述

view_type

任意角度旋转的旋转模式,裁剪模式、全模式和典型模式。

angle

旋转的角度。任意角度旋转时范围:[0, 360];高精度任意角度旋转时范围:[0, 36000]。

center_x_offset

旋转中心点相对图象中心点水平偏移。仅典型模式支持。范围是[-511, 511]。

center_y_offset

旋转中心点相对图象中心点垂直偏移。仅典型模式支持。范围是[-511, 511]

dst_size

旋转后的得到的图像大小,如果旋转后截取图像大小相对dst_size有变化,会对图像进行缩放处理。范围:[480x360, 8192x8192]。

【注意事项】

  • center_x_offset/ center_y_offset仅典型模式支持。

  • 高精度任意角度旋转,单位:0.01°。

【相关数据类型及接口】

ot_rotation_view_type

ot_rotation_type

【说明】

定义旋转类型。

【定义】

typedef enum {
    OT_ROTATION_ANG_FIXED = 0,
    OT_ROTATION_ANG_FREE,
    OT_ROTATION_ANG_FREE_HP,
    OT_ROTATION_ANG_BUTT
} ot_rotation_type;

【成员】

成员名称

描述

OT_ROTATION_ANG_FIXED

固定角度旋转。

OT_ROTATION_ANG_FREE

任意角度旋转。

OT_ROTATION_ANG_FREE_HP

高精度任意角度旋转。

【注意事项】

无。

【相关数据类型及接口】

ot_rotation_attr

ot_rotation_attr

【说明】

定义通道旋转属性。

【定义】

typedef struct {
    td_bool                  enable;
    ot_rotation_type    rotation_type;
    union {
        ot_rotation          rotation_fixed;
        ot_free_rotation_attr       rotation_free;
    };
} ot_rotation_attr;

【成员】

成员名称

描述

enable

控制旋转使能开关

rotation_type

旋转类型。

rotation_fixed

固定角度旋转属性,rotation_type为OT_ROTATION_ANG_FIXED时才生效。

rotation_free

任意角度旋转属性,rotation_type为OT_ROTATION_ANG_FREE或OT_ROTATION_ANG_FREE_HP时才生效。

【注意事项】

设置相应旋转时,需要打开使能开关enable。

【相关数据类型及接口】

ot_frame_flag

【说明】

定义帧的类型。

【定义】

typedef enum  {
    OT_FRAME_FLAG_SNAP_FLASH  = 0x1 << 0,
    OT_FRAME_FLAG_SNAP_CUR    = 0x1 << 1,
    OT_FRAME_FLAG_SNAP_REF    = 0x1 << 2,
    OT_FRAME_FLAG_SNAP_END    = 0x1 << 3,
    OT_FRAME_FLAG_MIRROR      = 0x1 << 4,
    OT_FRAME_FLAG_FLIP        = 0x1 << 5,
    OT_FRAME_FLAG_DGAIN_BYPASS = 0x1 << 6,
    OT_FRAME_FLAG_BUTT
} ot_frame_flag;

【成员】

成员名称

描述

OT_FRAME_FLAG_SNAP_FLASH

拍照时是否开启闪光灯。

OT_FRAME_FLAG_SNAP_CUR

拍照的有效数据帧。

OT_FRAME_FLAG_SNAP_REF

拍照帧的参考帧。

OT_FRAME_FLAG_SNAP_END

连拍的最后一张帧数据标示。

OT_FRAME_FLAG_MIRROR

mirror标识。

OT_FRAME_FLAG_FLIP

flip标识。

OT_FRAME_FLAG_DGAIN_BYPASS

isp dgain bypass功能标识。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_isp_inner_flag

【说明】

定义帧的类型。

【定义】

typedef enum  {
    OT_ISP_INNER_FLAG_DGAIN_FORWARD = 0x1 << 0,
    OT_ISP_INNER_FLAG_BUTT
} ot_isp_inner_flag;

【成员】

成员名称

描述

OT_ISP_INNER_FLAG_DGAIN_FORWARD

isp dgain 前移功能标识。

【注意事项】

无。

【相关数据类型及接口】

无。

OT_SRC_LENS_COEF_NUM

【说明】

镜头畸变表相关系数个数。

【定义】

#define OT_SRC_LENS_COEF_NUM  9

【注意事项】

【相关数据类型及接口】

OT_DST_LENS_COEF_NUM

【说明】

镜头畸变表相关系数个数。

【定义】

#define OT_DST_LENS_COEF_NUM  14

【注意事项】

【相关数据类型及接口】

ot_ldc_v1_attr

【说明】

定义OT_LDC_V1版本的镜头畸变校正属性。

【定义】

typedef struct {
    td_bool    aspect;
    td_s32     x_ratio;
    td_s32     y_ratio;
    td_s32     xy_ratio;
    td_s32 center_x_offset;
    td_s32 center_y_offset;
    td_s32 distortion_ratio;
} ot_ldc_v1_attr;

【成员】

成员名称

描述

aspect

畸变校正类型。

aspect=0:不保持幅形比;

aspect=1:保持幅形比。

x_ratio

水平视场角大小,aspect=0有效;

其值为水平视场角介于最小视场角和最大视场角之间的一个比例。

y_ratio

垂直视场角大小,aspect=0有效;

其值为垂直视场角介于最小视场角和最大视场角之间的一个比例。

xy_ratio

整体视场角大小,包括水平视场角和垂直视场角,aspect=1有效;

其值为整体视场角介于最小视场角和最大视场角之间的一个比例。

center_x_offset

畸变中心点相对图象中心点水平偏移。

center_y_offset

畸变中心点相对图象中心点垂直偏移。

distortion_ratio

畸变程度。当开启展宽(Spread)时候,LDC的distortion_ratio取值范围只能为[0, 500]。

【注意事项】

SS928V100:

  • center_x_offset取值范围:[-511, 511]

  • center_y_offset取值范围:[-511, 511];同时矫正中心点须落在图像内。

  • distortion_ratio取值范围:[-300, 500],其中[-300, 0)对应枕形模式,[0, 500]对应桶形模式。

SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

无。

ot_ldc_v2_attr

【说明】

定义OT_LDC_V2版本的镜头畸变校正属性。

【定义】

typedef struct {
    td_s32 focal_len_x;
    td_s32 focal_len_y;
    td_s32 coord_shift_x;
    td_s32 coord_shift_y;
    td_s32 src_calibration_ratio[OT_SRC_LENS_COEF_NUM];
    td_s32 dst_calibration_ratio[OT_DST_LENS_COEF_NUM];
    td_s32 max_du;
} ot_ldc_v2_attr;

【成员】

成员名称

描述

focal_len_x

水平方向镜头有效焦距。

参数范围:[6400, 117341700]

focal_len_y

垂直方向镜头有效焦距。

参数范围:[6400, 117341700]

coord_shift_x

光心X坐标。

参数范围:[35* Width,65* Width], Width为图像宽

coord_shift_y

光心Y坐标。

参数范围:[35* Height,65* Height], Height为图像高。

src_calibration_ratio

镜头畸变系数,其中[0]固定为1*10^5,[8]的范围为[0,32*10^5],其他成员范围均为[-16*10^5, 16*10^5]。

dst_calibration_ratio

镜头畸变系数。其中[12]、[13]的范围为[0, 16*10^5],每个成员范围均为[-16*10^5, 16*10^5]。

max_du

镜头畸变系数。参数范围:[0,1<<20]。

【注意事项】

SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

无。

ot_ldc_v3_attr

【说明】

定义OT_LDC_V3版本的镜头畸变校正属性。

【定义】

typedef struct {
    td_bool    aspect;
    td_s32     x_ratio;
    td_s32     y_ratio;
    td_s32     xy_ratio;
    td_s32 focal_len_x;
    td_s32 focal_len_y;
    td_s32 coord_shift_x;
    td_s32 coord_shift_y;
    td_s32 src_calibration_ratio[OT_SRC_LENS_COEF_NUM];
    td_s32 src_calibration_ratio_next[OT_SRC_LENS_COEF_NUM];
    td_u32 coef_intp_ratio;
} ot_ldc_v3_attr;

【成员】

成员名称

描述

aspect

畸变校正类型。

aspect=0:不保持幅形比;

aspect=1:保持幅形比。

x_ratio

水平视场角大小,aspect=0有效;

其值为水平视场角介于最小视场角和最大视场角之间的一个比例。

y_ratio

垂直视场角大小,aspect=0有效;

其值为垂直视场角介于最小视场角和最大视场角之间的一个比例。

xy_ration

整体视场角大小,包括水平视场角和垂直视场角,aspect=1有效;

其值为整体视场角介于最小视场角和最大视场角之间的一个比例。

focal_len_x

水平方向镜头有效焦距。

参数范围:[6400,3276700] .

focal_len_y

垂直方向镜头有效焦距。

参数范围:[6400, 3276700].

coord_shift_x

光心X坐标。

参数范围:[35* Width,65* Width], Width为图像宽

coord_shift_y

光心Y坐标。

参数范围:[35* Height,65* Height], Height为图像高。

src_calibration_ratio

镜头畸变系数,其中[0]固定为1*10^5,[4],[5],[6],[7]固定为0,[8]固定为3200000,其他成员范围均为[-16*10^5, 16*10^5]。

src_calibration_ratio_next

镜头畸变系数,其中[0]固定为1*10^5,[4],[5],[6],[7]固定为0,[8]固定为3200000,其他成员范围均为[-16*10^5, 16*10^5]。

coef_intp_ratio

镜头畸变系数。参数范围:[0,32768]。

【注意事项】

SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

无。

ot_ldc_version

【说明】

定义LDC版本。

【定义】

typedef enum  {
    OT_LDC_V1 = 1,
    OT_LDC_V2 = 2,
    OT_LDC_V3 = 3,
    OT_LDC_VERSION_BUTT
} ot_ldc_version;

【成员】

成员名称

描述

OT_LDC_V1

OT_LDC_V1版本

OT_LDC_V2

OT_LDC_V2版本

OT_LDC_V3

OT_LDC_V3版本

【注意事项】

SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

无。

ot_ldc_attr

【说明】

定义镜头畸变校正属性结构体。

【定义】

typedef struct {
    td_bool enable;
    ot_ldc_version ldc_version;
    union {
        ot_ldc_v1_attr ldc_v1_attr;
        ot_ldc_v2_attr ldc_v2_attr;
        ot_ldc_v3_attr ldc_v3_attr;
    };
} ot_ldc_attr;

【成员】

成员名称

描述

enable

控制LDC使能开关

ldc_version

LDC版本

ldc_v1_attr

镜头畸变校正属性,ldc_version为OT_LDC_V1时才生效。

ldc_v2_attr

镜头畸变校正属性,ldc_version为OT_LDC_V2时才生效。

ldc_v3_attr

镜头畸变校正属性,ldc_version为OT_LDC_V3时才生效。

【注意事项】

  • 设置LDC属性时,需要打开使能开关enable。

  • SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

无。

ot_spread_attr

【说明】

定义展宽属性的相关配置。

【定义】

typedef struct {
    td_bool enable;
    td_u32 spread_coef;
} ot_spread_attr;

【成员】

成员名称

描述

enable

关闭或打开展宽功能。当开启展宽(Spread)时候,LDC的distortion_ratio取值范围只能为 [0, 500],即只支持LDC的桶形模式。

spread_coef

展宽系数。取值范围:[0, 18]。

【注意事项】

SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

无。

ot_jpeg_dcf

【说明】

JPEG图片使用的DCF信息。

【定义】

typedef struct {
    td_u8           capture_time[OT_DCF_CAPTURE_TIME_LENGTH];
    td_bool         flash;
    td_u32          digital_zoom_ratio;
    ot_isp_dcf_info  isp_dcf_info;
} ot_jpeg_dcf;

【成员】

成员名称

描述

capture_time

Jpeg图片拍摄的时间。

flash

Jpeg照片拍摄的时候是否有闪光灯。

digital_zoom_ratio

Jpeg照片拍摄的时候的数码缩放倍数。

isp_dcf_info

DCF其他信息,ot_isp_dcf_info具体请参考《ISP 开发参考》。

【注意事项】

无。

【相关数据类型及接口】

ot_isp_dcf_info

OT_DCF_CAPTURE_TIME_LENGTH

【说明】

Jpeg图片拍摄的时间长度。

【定义】

#define OT_DCF_CAPTURE_TIME_LENGTH             20

【成员】

【注意事项】

【相关数据类型及接口】

ot_isp_fswdr_mode

【说明】

定义frame switch wdr 模式。

【定义】

typedef enum {
    OT_ISP_FSWDR_NORMAL_MODE          = 0x0,
    OT_ISP_FSWDR_LONG_FRAME_MODE      = 0x1,
    OT_ISP_FSWDR_AUTO_LONG_FRAME_MODE = 0x2,
    OT_ISP_FSWDR_MODE_BUTT
}ot_isp_fswdr_mode;

【成员】

成员名称

描述

OT_ISP_FSWDR_NORMAL_MODE

WDR NORMAL模式。

OT_ISP_FSWDR_LONG_FRAME_MODE

WDR长帧模式。

OT_ISP_FSWDR_AUTO_LONG_FRAME_MODE

WDR自动长帧模式。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_isp_frame_info

【说明】

ISP的实时信息。

【定义】

typedef struct {
    td_u32      iso;
    td_u32      exposure_time[OT_ISP_WDR_MAX_FRAME_NUM];
    td_u32      isp_dgain[OT_ISP_WDR_MAX_FRAME_NUM];
    td_u32      again[OT_ISP_WDR_MAX_FRAME_NUM];
    td_u32      dgain[OT_ISP_WDR_MAX_FRAME_NUM];
    ot_isp_fswdr_mode fs_wdr_mode;
    td_s32      fe_id[OT_ISP_WDR_MAX_FRAME_NUM];
    td_u32      ratio[3];
    td_u32      isp_nr_strength;
    td_u32      f_number;
    td_u32      sensor_id;
    td_u32      sensor_mode;
    td_u32      hmax_times;
    td_u32      vmax;
    td_u32      vc_num;
    td_u32      wb_gain[OT_ISP_WB_GAIN_NUM];
    td_u16      ccm[OT_ISP_CAP_CCM_NUM];
    td_u32      exposure_distance[OT_ISP_WDR_MAX_FRAME_NUM - 1];
    td_u32      inner_flag;
} ot_isp_frame_info;

【成员】

成员名称

描述

iso

当前sensor模拟增益*sensor数字增益*ISP数字增益*100

exposure_time

曝光时间,单位是微秒(us)。

isp_dgain

ISP数字增益。

again

Sensor的模拟增益。

dgain

Sensor的数字增益。

fs_wdr_mode

frame switch wdr 模式。

fe_id

fe通道号。

ratio

多帧合成WDR相邻2帧默认曝光比。

isp_nr_strength

ISP的NR强度。当前未支持,默认值为0。

f_number

当前使用的镜头的F值。

sensor_id

当前使用的sensorID。

sensor_mode

当前使用的sensor序列模式。

hmax_times

当前使用的sensor对应读出一行的时间,单位是纳秒(ns)。

vmax

sensor每帧实际生效的总行数,单位是行。

vc_num

当前采集的帧的序列号。当前未支持,默认值为0。

wb_gain

白平衡增益参数。

ccm

CCM矩阵参数。

exposure_distance

wdr模式下曝光行差。

具体请参考《ISP 开发参考》2.3小节

inner_flag

ISP当前帧的标记,使用ot_isp_inner_flag里面的值标记,内部使用,可以按位或操作。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_isp_hdr_info

【说明】

ISP的HDR信息。

【定义】

typedef struct {
    td_u32 color_temp;
    td_u16 ccm[9];
    td_u8  saturation;
} ot_isp_hdr_info;

【成员】

成员名称

描述

color_temp

色温

ccm

颜色矩阵

saturation

饱和度

【注意事项】

无。

【相关数据类型及接口】

无。

ot_isp_attach_info

【说明】

ISP的attach信息。

【定义】

typedef struct {
    ot_isp_hdr_info  isp_hdr;
    td_u32 iso;
    td_u32 init_iso;
    td_u8 sns_wdr_mode;
} ot_isp_attach_info;

【成员】

成员名称

描述

isp_hdr

Hdr相关的配置信息

iso

当前系统的iso信息

init_iso

初始的iso信息

sns_wdr_mode

Sensor的工作模式,指linear模式还是wdr模式

【注意事项】

无。

【相关数据类型及接口】

无。

ot_isp_colorgammut_info

【说明】

ISP的色域信息。

【定义】

typedef struct {
    ot_color_gamut color_gamut;
} ot_isp_colorgammut_info;

【成员】

成员名称

描述

color_gamut

颜色域信息

【注意事项】

无。

【相关数据类型及接口】

无。

ot_dng_rational

【说明】

定义DNG的无符号除法结构体。

【定义】

typedef struct {
    td_u32 numerator;
    td_u32 denominator;
} ot_dng_rational;

【成员】

成员名称

描述

numerator

分子

denominator

分母

【注意事项】

无。

【相关数据类型及接口】

无。

ot_dng_image_dynamic_info

【说明】

DNG格式的动态信息。

【定义】

typedef struct {
    td_u32 black_level[OT_ISP_BAYER_CHN];
    ot_dng_rational as_shot_neutral[OT_CFACOLORPLANE];
    td_double ad_noise_profile[OT_DNG_NP_SIZE];
} ot_dng_image_dynamic_info;

【成员】

成员名称

描述

black_level

黑电平

as_shot_neutral

白平衡系数

ad_noise_profile

噪声特性表

【注意事项】

获取到的black_level是12bit对应的黑电平。

【相关数据类型及接口】

OT_ISP_BAYER_CHN

【说明】

BAYER通道数。

【定义】

#define OT_ISP_BAYER_CHN                4

【成员】

【注意事项】

【相关数据类型及接口】

OT_CFACOLORPLANE

【说明】

滤色阵列的颜色分量。

【定义】

#define OT_CFACOLORPLANE                3

【成员】

【注意事项】

【相关数据类型及接口】

OT_DNG_NP_SIZE

【说明】

DNG NP大小。

【定义】

#define OT_DNG_NP_SIZE                 6

【成员】

【注意事项】

【相关数据类型及接口】

系统控制数据类型

系统控制相关数据类型定义如下:

  • OT_MAX_BIND_DST_NUM:定义绑定目标的最大个数。

  • OT_MAX_VERSION_NAME_LEN:定义版本名称的最大长度。

  • OT_MAX_MOD_NAME_LEN:定义模块名称的最大长度。

  • OT_UNIQUE_ID_NUM:定义unique ID长度

  • ot_mpp_sys_cfg:定义MPP系统控制属性结构体。

  • ot_mpp_chn:定义模块设备通道结构体。

  • ot_mpp_bind_dst:定义MPP系统绑定目的信息结构体。

  • ot_mpp_version:定义MPP版本描述结构体。

  • ot_sys_virt_mem_info:定义虚拟内存信息结构体。

  • ot_sys_mem_info:定义mmz buffer的内存描述信息结构体。

  • ot_unique_id:定义unique ID结构体。

  • ot_scale_range_type:定义VPSS和VGS的缩放比例范围的枚举类型。

  • ot_coef_level:定义VPSS和VGS缩放系数等级的枚举类型。

  • ot_scale_range:定义VPSS和VGS的水平和垂直缩放比例范围的结构体。

  • ot_scale_coef_level:定义VPSS和VGS水平亮度、水平色度、垂直亮度、垂直色度的缩放系数等级的结构体。

  • ot_vb_pool_info:定义视频缓存池信息结构体。

  • ot_vb_cfg:定义视频缓存池属性结构体。

  • ot_vb_pool_cfg:定义视频缓存池属性结构体。

  • ot_vb_remap_mode:定义VB内核态虚拟地址映射模式。

  • ot_vb_common_pools_id:定义公共VB池ID的结构体。

  • ot_log_level_cfg:定义日志等级信息结构体。

  • ot_vi_vpss_mode_type:定义VI PIPE和VPSS组的工作模式。

  • ot_vi_vpss_mode:定义VI各个PIPE和VPSS各个组的工作模式。

  • ot_vi_video_mode:定义VI,VIDEO模式。

  • ot_ext_chn_src_type:定义扩展通道的图像来源。

  • ot_raw_frame_compress_param:定义VI模块RAW数据的压缩比。

OT_MAX_BIND_DST_NUM

【说明】

定义绑定目标的最大个数。

【定义】

#define OT_MAX_BIND_DST_NUM         64

【注意事项】

无。

【相关数据类型及接口】

无。

OT_MAX_VERSION_NAME_LEN

【说明】

定义版本名称的最大长度。

【定义】

#define OT_MAX_VERSION_NAME_LEN    64

【注意事项】

无。

【相关数据类型及接口】

无。

OT_MAX_MOD_NAME_LEN

【说明】

定义模块名称的最大长度。

【定义】

#define OT_MAX_MOD_NAME_LEN 16

【注意事项】

无。

【相关数据类型及接口】

无。

OT_UNIQUE_ID_NUM

【说明】

定义unique ID长度。

【定义】

#define OT_UNIQUE_ID_NUM  6

【注意事项】

无。

【相关数据类型及接口】

无。

ot_mpp_sys_cfg

【说明】

定义MPP系统控制属性结构体。

【定义】

typedef struct {
    td_u32 align;
} ot_mpp_sys_cfg;

【成员】

成员名称

描述

align

整个系统中使用图像的stride字节对齐数,保留功能,暂未生效。

取值范围:[0, 1024],其中0为自动模式,即使用系统默认的stride对齐。

静态属性。

【注意事项】

  • align 为0时stride对齐使用自动模式,对齐要求跟随系统。

  • align 为非0时使用指定的stride对齐。

  • 当align 小于芯片要求的stride对齐时,系统分配buffer和计算stride还是以芯片要求stride对齐为准。

  • 当align不等于芯片要求的stride对齐倍数时,系统分配buffer和计算stride向上对齐到芯片要求stride对齐的倍数。

例:align设置为48,芯片要求32对齐时,系统分配buffer和计算stride时使用64对齐。

【相关数据类型及接口】

ss_mpi_sys_set_cfg

ot_mpp_chn

【说明】

定义模块设备通道结构体。

【定义】

typedef struct {
    ot_mod_id    mod_id;
    td_s32      dev_id;
    td_s32      chn_id;
} ot_mpp_chn;

【成员】

成员名称

描述

mod_id

模块号。

dev_id

设备号。

chn_id

通道号。

【注意事项】

无。

【相关数据类型及接口】

ot_mpp_bind_dst

【说明】

定义MPP系统绑定目的信息结构体。

【定义】

typedef struct {
    td_u32 num;
    ot_mpp_chn mpp_chn[OT_MAX_BIND_DST_NUM];
} ot_mpp_bind_dst;

【成员】

成员名称

描述

num

通过SYS绑定的目的数目。

mpp_chn

通过SYS绑定的目的模块通道信息结构体。

【注意事项】

无。

【相关数据类型及接口】

ss_mpi_sys_get_bind_by_src

ot_mpp_version

【说明】

定义MPI版本描述结构体。

【定义】

typedef struct {
    td_char version[OT_MAX_VERSION_NAME_LEN];
} ot_mpp_version;

【成员】

成员名称

描述

version

版本描述字符串。

比如“OT_VERSION=V1.0.4.0”

【注意事项】

【相关数据类型及接口】

ss_mpi_sys_get_version

ot_sys_virt_mem_info

【说明】

定义虚拟内存信息结构体。

【定义】

typedef struct {
    td_phys_addr_t phys_addr;
    td_bool is_cached;
} ot_sys_virt_mem_info;

【成员】

成员名称

描述

phys_addr

虚拟地址对应物理地址。

is_cached

是否为cached映射。

【注意事项】

【相关数据类型及接口】

ss_mpi_sys_get_virt_mem_info

ot_sys_mem_info

【说明】

定义mmz buffer的内存描述信息结构体。

【定义】

typedef struct {
    td_phys_addr_t phys_addr;
    td_u64 offset;
    td_void *mem_handle;
} ot_sys_mem_info;

【成员】

成员名称

描述

phys_addr

mmz buffer的起始物理地址。

offset

当前查询的地址基于起始phys_addr的偏移。

mem_handle

mmz buffer对应的handle。

【注意事项】

【相关数据类型及接口】

ot_unique_id

【说明】

定义unique ID结构体。

【定义】

typedef struct{
    td_u32 id[OT_UNIQUE_ID_NUM];
} ot_unique_id;

【成员】

成员名称

描述

id

unique ID,共OT_UNIQUE_ID_NUM个word长度。

【注意事项】

【相关数据类型及接口】

ss_mpi_sys_get_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_BUTT,
} ot_coef_level;

【成员】

【注意事项】

【相关数据类型及接口】

ot_scale_range

【说明】

定义VPSS和VGS的水平和垂直缩放比例范围的结构体。

【定义】

typedef struct {
    ot_scale_range_type hor;
    ot_scale_range_type ver;
} ot_scale_range;

【成员】

成员名称

描述

hor

水平缩放比例范围。

ver

垂直缩放比例范围。

【注意事项】

【相关数据类型及接口】

ot_scale_coef_level

【说明】

定义VPSS和VGS水平亮度、水平色度、垂直亮度、垂直色度的缩放系数等级的结构体。

【定义】

typedef struct {
    ot_coef_level hor_luma; /* horizontal luminance   coefficient level */
    ot_coef_level hor_chroma; /* horizontal chrominance coefficient level */
    ot_coef_level ver_luma; /* vertical   luminance   coefficient level */
    ot_coef_level ver_chroma; /* vertical   chrominance coefficient level */
} ot_scale_coef_level;

【成员】

成员名称

描述

hor_luma

水平亮度的缩放系数等级。

取值范围:[OT_COEF_LEVEL_0,OT_COEF_LEVEL_18]

hor_chroma

水平色度的缩放系数等级。

取值范围:[OT_COEF_LEVEL_0,OT_COEF_LEVEL_18]

ver_luma

垂直亮度的缩放系数等级。

取值范围:[OT_COEF_LEVEL_0,OT_COEF_LEVEL_18]

ver_chroma

垂直色度的缩放系数等级。

取值范围:[OT_COEF_LEVEL_0,OT_COEF_LEVEL_18]

【注意事项】

各缩放比例下默认的缩放系数等级表,如表1所示。

表 1 各缩放比例下默认缩放参数等级表

缩放比例

水平亮度

水平色度

垂直亮度

垂直色度

SR_0

CL_0

CL_0

CL_0

CL_0

SR_1

CL_1

CL_1

CL_1

CL_1

SR_2

CL_2

CL_2

CL_2

CL_2

SR_3

CL_3

CL_3

CL_3

CL_3

SR_4

CL_6

CL_4

CL_4

CL_6

SR_5

CL_6

CL_5

CL_5

CL_5

SR_6

CL_8

CL_12

CL_9

CL_12

SR_7

CL_8

CL_12

CL_9

CL_12

SR_8

CL_8

CL_12

CL_9

CL_12

SR_9

CL_9

CL_9

CL_9

CL_9

SR_10

CL_10

CL_10

CL_10

CL_10

SR_11

CL_11

CL_11

CL_11

CL_11

SR_12

CL_12

CL_12

CL_12

CL_12

SR_13

CL_13

CL_13

CL_13

CL_13

SR_14

CL_14

CL_14

CL_14

CL_14

SR_15

CL_15

CL_15

CL_15

CL_15

SR_16

CL_16

CL_16

CL_16

CL_16

SR_17

CL_17

CL_17

CL_17

CL_17

SR_18

CL_18

CL_18

CL_18

CL_18

注:(SR_x表示OT_ SCALE_RANGE_x,CL_x表示OT_ COEF_LEVEL_x)

【相关数据类型及接口】

ot_vb_pool_info

【说明】

定义视频缓存池信息结构体。

【定义】

typedef struct {
    td_u32 blk_cnt;
    td_u64 blk_size;
    td_u64 pool_size;
    td_phys_addr_t pool_phy_addr;
    ot_vb_remap_mode remap_mode;
} ot_vb_pool_info;

【成员】

成员名称

描述

blk_cnt

每个缓存池的缓存块个数。

blk_size

缓存块大小,以Byte为单位。

pool_size

缓存池大小,以Byte为单位。

pool_phy_addr

缓存池首地址。

remap_mode

VB的内核态虚拟地址映射模式。

【注意事项】

【相关数据类型及接口】

ot_vb_cfg

【说明】

定义视频缓存池属性结构体。

【定义】

typedef struct {
    td_u32 max_pool_cnt;
    ot_vb_pool_cfg common_pool[OT_VB_MAX_COMMON_POOLS];
} ot_vb_cfg;

【成员】

成员名称

描述

max_pool_cnt

整个系统中可容纳的缓存池个数。

取值范围:(0, OT_VB_MAX_POOLS]

静态属性。

保留,目前内部固定取值OT_VB_MAX_POOLS。

common_pool

公共缓存池属性结构体。

静态属性。

【注意事项】

  • blk_size等于0或blk_cnt等于0,则对应的缓存池不会被创建。

  • 建议整个结构体先memset为0再按需赋值。

【相关数据类型及接口】

ss_mpi_vb_set_cfg

ot_vb_pool_cfg

【说明】

定义视频缓存池属性结构体。

【定义】

typedef struct {
    td_u64 blk_size;
    td_u32 blk_cnt;
    ot_vb_remap_mode remap_mode;
    td_char mmz_name[OT_MAX_MMZ_NAME_LEN];
} ot_vb_pool_cfg;

【成员】

成员名称

描述

blk_size

缓存块大小,以Byte为单位。

blk_cnt

每个缓存池的缓存块个数。

取值范围:[0, 10240]

remap_mode

VB的内核态虚拟地址映射模式。

mmz_name

当前缓存池从哪个MMZ区域分配内存。

【注意事项】

  • 每个缓存块的大小blk_size应根据当前图像宽高、像素格式、数据位宽、是否压缩等来计算。详细计算方法请参见表1和代码ot_buffer.h里面各种格式的图像存储计算公式。

  • 分配VB时会对blk_size进行256对齐操作。

  • 该缓存池是从空闲MMZ内存中分配,一个缓存池包含若干个大小相同的缓存块。如果该缓存池的大小超过了保留内存中的空闲空间,则创建缓存池会失败。

  • 用户需保证输入的DDR名字已经存在,如果输入不存在DDR的名字,会造成分不到内存。如果数组mmz_name 被memset为0则表示在没有命名的DDR中创建缓存池。

  • 用户需保证输入的blk_cnt范围合法,如果输入blk_cnt超出范围,创建缓存池会失败。

【相关数据类型及接口】

ot_vb_remap_mode

【说明】

定义VB内核态虚拟地址映射模式。

【定义】

typedef enum {
    OT_VB_REMAP_MODE_NONE = 0,
    OT_VB_REMAP_MODE_NOCACHE = 1,
    OT_VB_REMAP_MODE_CACHED = 2,
    OT_VB_REMAP_MODE_BUTT
} ot_vb_remap_mode;

【成员】

成员名称

描述

OT_VB_REMAP_MODE_NONE

VB不映射内核态虚拟地址。

OT_VB_REMAP_MODE_NOCACHE

VB映射nocache属性的内核态虚拟地址。

OT_VB_REMAP_MODE_CACHED

VB映射cached属性的内核态虚拟地址。

【注意事项】

【相关数据类型及接口】

ot_vb_common_pools_id

【说明】

定义公共VB池ID的结构体。

【定义】

typedef struct {
    td_u32 pool_cnt;
    ot_vb_pool pool[OT_VB_MAX_COMMON_POOLS];
} ot_vb_common_pools_id;

【成员】

成员名称

描述

pool_cnt

整个系统中公共VB池的个数。

取值范围:(0, OT_VB_MAX_POOLS]

pool

公共VB池ID号的数组。

【注意事项】

无。

【相关数据类型及接口】

ot_log_level_cfg

【说明】

定义日志等级信息结构体。

【定义】

typedef struct {
    ot_mod_id  mod_id;
    td_s32  level;
    td_char mod_name[OT_MAX_MOD_NAME_LEN];
} ot_log_level_cfg;

【成员】

成员名称

描述

mod_id

模块的ID。

level

日志等级。

mod_name

模块的名字。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_vi_vpss_mode_type

【说明】

定义VI PIPE和VPSS组的工作模式。

【定义】

typedef enum {
    OT_VI_OFFLINE_VPSS_OFFLINE = 0,
    OT_VI_OFFLINE_VPSS_ONLINE,
    OT_VI_ONLINE_VPSS_OFFLINE,
    OT_VI_ONLINE_VPSS_ONLINE,
    OT_VI_PARALLEL_VPSS_OFFLINE,
    OT_VI_PARALLEL_VPSS_PARALLEL,
    OT_VI_VPSS_MODE_BUTT
} ot_vi_vpss_mode_type;

【成员】

成员名称

描述

OT_VI_OFFLINE_VPSS_OFFLINE

VI离线,VPSS离线。

OT_VI_OFFLINE_VPSS_ONLINE

VI离线,VPSS在线。

OT_VI_ONLINE_VPSS_OFFLINE

VI在线,VPSS离线。

OT_VI_ONLINE_VPSS_ONLINE

VI在线,VPSS在线。

OT_VI_PARALLEL_VPSS_OFFLINE

VI并行,VPSS离线。

OT_VI_PARALLEL_VPSS_PARALLEL

VI并行,VPSS并行。

【注意事项】

  • OT_VI_OFFLINE_VPSS_ONLINE,OT_VI_ONLINE_VPSS_ONLINE模式下VI PIPE编号与VPSS GROUP号一一对应,数据从VI PIPE流动到VPSS GROUP,不需要软件设定绑定关系。

  • SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

ot_vi_vpss_mode

【说明】

定义VI各个PIPE和VPSS各个组的工作模式。

【定义】

typedef struct {
    ot_vi_vpss_mode_type mode[OT_VI_MAX_PIPE_NUM];
} ot_vi_vpss_mode;

【成员】

成员名称

描述

mode

VI各个PIPE和VPSS各个组的工作模式。

OT_VI_MAX_PIPE_NUM具体请参考“视频输入”章节。

【注意事项】

  • SS928V100只支持OT_VI_OFFLINE_VPSS_OFFLINE,OT_VI_OFFLINE_VPSS_ONLINE,OT_VI_ONLINE_VPSS_OFFLINE,OT_VI_ONLINE_VPSS_ONLINE四种模式。

  • 当设置OT_VI_OFFLINE_VPSS_ONLINE、OT_VI_ONLINE_VPSS_ONLINE时,对应VI PIPE pipe_id和VPSS组 grp_id必须保持一致。

  • SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

ot_vi_video_mode

【说明】

定义VI,VIDEO模式。

【定义】

typedef enum {
    OT_VI_VIDEO_MODE_NORM = 0,
    OT_VI_VIDEO_MODE_ADVANCED,
    OT_VI_VIDEO_MODE_BUTT
} ot_vi_video_mode;

【成员】

成员名称

描述

OT_VI_VIDEO_MODE_NORM

普通模式。

OT_VI_VIDEO_MODE_ADVANCED

高级模式。

【注意事项】

SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

ot_ext_chn_src_type

【说明】

定义扩展通道的图像来源。

【定义】

typedef enum {
    OT_EXT_CHN_SRC_TYPE_TAIL = 0,
    OT_EXT_CHN_SRC_TYPE_BEFORE_FISHEYE,
    OT_EXT_CHN_SRC_TYPE_HEAD,
    OT_EXT_CHN_SRC_TYPE_BUTT
} ot_ext_chn_src_type;

【成员】

成员名称

描述

OT_EXT_CHN_SRC_TYPE_TAIL

扩展通道的图像来自物理通道后处理(DIS,LDC,SPREAD,CoverEx,LUMA,OVERLAYEx,Fisheye等)后的图像。

OT_EXT_CHN_SRC_TYPE_BEFORE_FISHEYE

扩展通道的图像来自物理通道后处理FISHEYE前的图像。

OT_EXT_CHN_SRC_TYPE_HEAD

扩展通道的图像来自物理通道后处理(DIS,LDC,SPREAD等)前的图像。

【注意事项】

SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

ot_raw_frame_compress_param

【说明】

定义VI模块RAW数据的压缩比。

【定义】

typedef struct {
    td_u32 comp_ratio_10_bit;
    td_u32 comp_ratio_12_bit;
    td_u32 comp_ratio_14_bit;
} ot_raw_frame_compress_param;

【成员】

成员名称

描述

comp_ratio_10_bit

VI 10bit RAW数据的压缩比。

comp_ratio_12_bit

VI 12bit RAW数据的压缩比。

comp_ratio_14_bit

VI 14bit RAW数据的压缩比。

【解决方案差异】

解决方案类型

压缩比范围

SS928V100

comp_ratio_10_bit:范围[1000, 4500]:默认值2000

comp_ratio_12_bit:范围[1000, 3700]:默认值2000

comp_ratio_14_bit:范围[1000, 3300]:默认值2000

【注意事项】

  • 这里的压缩比是放大了1000倍,即压缩比=(输入大小/输出大小)*1000。

  • 当压缩比发生变化的时候,所需要的VB大小是不一样的,可以通过ot_common_get_pic_buf_cfg函数计算VB大小。

  • 当设置的压缩比超过默认值时,由于压缩算法的原因,可能会导致视觉上可见的损失,因而,为了保证压缩效果,建议用户设置的值不要超过默认值。

  • SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

视频公共类型

视频公共数据类型定义如下:

  • OT_GPS_EXPRESS_NUM:定义GPS经纬度数据个数。

  • OT_GPS_GRP_NUM:定义GPS经纬度维度。

  • OT_MAX_COLOR_COMPONENT:最大颜色分量个数。

  • OT_MAX_PRIVATE_DATA_NUM:最大私有数据数目。

  • OT_MAX_USER_DATA_NUM:最大用户数据数目。

  • OT_ISP_WB_GAIN_NUM:WB颜色通道数。

  • OT_ISP_CAP_CCM_NUM:颜色校正矩阵大小。

  • ot_aspect_ratio_type:定义幅型比类型。

  • ot_aspect_ratio:定义幅型比信息。

  • ot_pixel_format:定义像素格式类型。

  • ot_video_field:定义视频图像帧场类型。

  • ot_color_gamut:定义色域范围枚举。

  • ot_dynamic_range:定义动态范围枚举。

  • ot_data_bit_width:定义数据位宽枚举。

  • ot_video_supplement_misc:定义视频扩展补充信息结构体。

  • ot_video_supplement:定义视频图像帧补充信息。

  • ot_video_frame:定义视频原始图像帧结构体。

  • ot_video_frame_info:定义视频图像帧信息结构体。

  • ot_vb_calc_cfg:定义视频图像帧各部分数据大小配置信息结构体。

  • ot_bmp:定义位图图像信息结构。

  • ot_video_format:定义视频格式结构体。

  • ot_compress_mode:定义视频压缩数据格式结构体。

  • ot_vb_supplement_cfg:定义VB辅助信息结构体。

  • ot_gps_info:定义GPS信息结构体。

  • ot_frame_interrupt_type:定义帧中断类型的枚举。

  • ot_frame_interrupt_attr:定义帧中断属性结构体。

  • ot_data_rate:定义设备的速率的枚举。

  • ot_wdr_mode:定义WDR工作模式的枚举。

  • ot_isp_config_info:定义ISP配置信息结构体。

  • ot_low_delay_info:定义低延时信息结构体。

  • ot_schedule_mode:定义调度模式的枚举。

  • ot_scale_coef_type:定义缩放系数类型的枚举。

OT_GPS_EXPRESS_NUM

【说明】

定义GPS经纬度数据个数。

【定义】

#define OT_GPS_EXPRESS_NUM   3

【注意事项】

无。

【相关数据类型及接口】

无。

OT_GPS_GRP_NUM

【说明】

定义GPS经纬度维度。

【定义】

#define OT_GPS_GRP_NUM   2

【注意事项】

无。

【相关数据类型及接口】

无。

OT_MAX_COLOR_COMPONENT

【说明】

最大颜色分量个数。

【定义】

#define  OT_MAX_COLOR_COMPONENT      2

【注意事项】

无。

【相关数据类型及接口】

无。

OT_MAX_PRIVATE_DATA_NUM

【说明】

最大私有数据数目。

【定义】

#define  OT_MAX_PRIVATE_DATA_NUM     1

【注意事项】

无。

【相关数据类型及接口】

无。

OT_MAX_USER_DATA_NUM

【说明】

最大用户数据数目。

【定义】

#define  OT_MAX_USER_DATA_NUM      2

【注意事项】

无。

【相关数据类型及接口】

无。

OT_ISP_WB_GAIN_NUM

【说明】

WB颜色通道数。

【定义】

#define  OT_ISP_WB_GAIN_NUM      4

【注意事项】

无。

【相关数据类型及接口】

无。

OT_ISP_CAP_CCM_NUM

【说明】

颜色校正矩阵大小。

【定义】

#define  OT_ISP_CAP_CCM_NUM      9

【注意事项】

无。

【相关数据类型及接口】

无。

ot_aspect_ratio_type

【说明】

定义幅型比类型。

【定义】

typedef enum  {
    OT_ASPECT_RATIO_NONE   = 0,        /* full screen */
    OT_ASPECT_RATIO_AUTO   = 1,        /* ratio no change, 1:1*/
    OT_ASPECT_RATIO_MANUAL = 2,        /* ratio manual set */
    OT_ASPECT_RATIO_BUTT
} ot_aspect_ratio_type;

【成员】

成员名称

描述

OT_ASPECT_RATIO_NONE

无幅型比。

OT_ASPECT_RATIO_AUTO

自动模式。

OT_ASPECT_RATIO_MANUAL

手动模式。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_aspect_ratio

【说明】

定义幅型比信息。

【定义】

typedef struct {
    ot_aspect_ratio_type mode;          /* aspect ratio mode: none/auto/manual */
    td_u32         bg_color;      /* background color, RGB 888 */
    ot_rect         video_rect;     /* valid in ASPECT_RATIO_MANUAL mode */
} ot_aspect_ratio;

【成员】

成员名称

描述

mode

幅型比类型。

bg_color

幅型比背景颜色。

video_rect

幅型比视频区域。

【注意事项】

无。

【相关数据类型及接口】

ot_pixel_format

【说明】

定义像素格式类型。

【定义】

typedef enum {
    OT_PIXEL_FORMAT_RGB_444 = 0,
    OT_PIXEL_FORMAT_RGB_555,
    OT_PIXEL_FORMAT_RGB_565,
    OT_PIXEL_FORMAT_RGB_888,
 
    OT_PIXEL_FORMAT_BGR_444,
    OT_PIXEL_FORMAT_BGR_555,
    OT_PIXEL_FORMAT_BGR_565,
    OT_PIXEL_FORMAT_BGR_888,
 
    OT_PIXEL_FORMAT_ARGB_1555,
    OT_PIXEL_FORMAT_ARGB_4444,
    OT_PIXEL_FORMAT_ARGB_8565,
    OT_PIXEL_FORMAT_ARGB_8888,
    OT_PIXEL_FORMAT_ARGB_2BPP,
    OT_PIXEL_FORMAT_ARGB_CLUT2,
    OT_PIXEL_FORMAT_ARGB_CLUT4,
 
    OT_PIXEL_FORMAT_ABGR_1555,
    OT_PIXEL_FORMAT_ABGR_4444,
    OT_PIXEL_FORMAT_ABGR_8565,
    OT_PIXEL_FORMAT_ABGR_8888,
 
    OT_PIXEL_FORMAT_RGB_BAYER_8BPP,
    OT_PIXEL_FORMAT_RGB_BAYER_10BPP,
    OT_PIXEL_FORMAT_RGB_BAYER_12BPP,
    OT_PIXEL_FORMAT_RGB_BAYER_14BPP,
    OT_PIXEL_FORMAT_RGB_BAYER_16BPP,
 
    OT_PIXEL_FORMAT_YVU_PLANAR_422,
    OT_PIXEL_FORMAT_YVU_PLANAR_420,
    OT_PIXEL_FORMAT_YVU_PLANAR_444,
 
    OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422,
    OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420,
    OT_PIXEL_FORMAT_YVU_SEMIPLANAR_444,
 
    OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422,
    OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420,
    OT_PIXEL_FORMAT_YUV_SEMIPLANAR_444,
 
    OT_PIXEL_FORMAT_YUYV_PACKAGE_422,
    OT_PIXEL_FORMAT_YVYU_PACKAGE_422,
    OT_PIXEL_FORMAT_UYVY_PACKAGE_422,
    OT_PIXEL_FORMAT_VYUY_PACKAGE_422,
    OT_PIXEL_FORMAT_YYUV_PACKAGE_422,
    OT_PIXEL_FORMAT_YYVU_PACKAGE_422,
    OT_PIXEL_FORMAT_UVYY_PACKAGE_422,
    OT_PIXEL_FORMAT_VUYY_PACKAGE_422,
    OT_PIXEL_FORMAT_VY1UY0_PACKAGE_422,
 
    OT_PIXEL_FORMAT_YUV_400,
    OT_PIXEL_FORMAT_UV_420,
 
    /* SVP data format */
    OT_PIXEL_FORMAT_BGR_888_PLANAR,
    OT_PIXEL_FORMAT_HSV_888_PACKAGE,
    OT_PIXEL_FORMAT_HSV_888_PLANAR,
    OT_PIXEL_FORMAT_LAB_888_PACKAGE,
    OT_PIXEL_FORMAT_LAB_888_PLANAR,
    OT_PIXEL_FORMAT_S8C1,
    OT_PIXEL_FORMAT_S8C2_PACKAGE,
    OT_PIXEL_FORMAT_S8C2_PLANAR,
    OT_PIXEL_FORMAT_S8C3_PLANAR,
    OT_PIXEL_FORMAT_S16C1,
    OT_PIXEL_FORMAT_U8C1,
    OT_PIXEL_FORMAT_U16C1,
    OT_PIXEL_FORMAT_S32C1,
    OT_PIXEL_FORMAT_U32C1,
    OT_PIXEL_FORMAT_U64C1,
    OT_PIXEL_FORMAT_S64C1,
 
    OT_PIXEL_FORMAT_BUTT
} ot_pixel_format;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

  • ot_rgn_overlayex_attr

  • ot_rgn_canvas_info

  • ot_vdec_pic_param

  • ot_vgs_osd

  • ot_vi_chn_attr

  • ot_video_frame

  • ot_vo_video_layer_attr

  • ot_bmp

  • ot_vo_wbc_attr

  • ot_vpss_grp_attr

  • ot_vpss_chn_attr

  • ot_mcf_grp_attr

  • ot_mcf_chn_attr

ot_video_field

【说明】

定义视频图像帧场类型。

【定义】

typedef enum  {
    OT_VIDEO_FIELD_TOP         = 1,    /* even field */
    OT_VIDEO_FIELD_BOTTOM      = 2,    /* odd field */
    OT_VIDEO_FIELD_INTERLACED  = 3,    /* two interlaced fields */
    OT_VIDEO_FIELD_FRAME       = 4,    /* frame */
    OT_VIDEO_FIELD_BUTT
} ot_video_field;

【成员】

成员名称

描述

OT_VIDEO_FIELD_TOP

顶场类型。

OT_VIDEO_FIELD_BOTTOM

底场类型。

OT_VIDEO_FIELD_INTERLACED

两场间插类型。

OT_VIDEO_FIELD_FRAME

帧类型。

【注意事项】

无。

【相关数据类型及接口】

ot_video_frame

ot_color_gamut

【说明】

定义色域范围枚举。

【定义】

typedef enum  {
    OT_COLOR_GAMUT_BT601 = 0,
    OT_COLOR_GAMUT_BT709,
    OT_COLOR_GAMUT_BT2020,
    OT_COLOR_GAMUT_USER,
    OT_COLOR_GAMUT_BUTT
} ot_color_gamut;

【成员】

成员名称

描述

OT_COLOR_GAMUT_BT601

BT601色域

OT_COLOR_GAMUT_BT709

BT709色域。

OT_COLOR_GAMUT_BT2020

BT2020色域。

OT_COLOR_GAMUT_USER

用户自定义的色域,非标准色域。

【注意事项】

  • 各个色域范围的绿、蓝、红、白点坐标如下:

ColorGamut

Primary

Green

Blue

Reg

White

BT601

(0.29, 0.60)

(0.15, 0.06)

(0.64, 0.33)

(0.3127, 0.3290)

BT709

(0.300, 0.600)

(0.150, 0.060)

(0.640, 0.330)

(0.3127, 0.3290)

BT2020

(0.170, 0.797)

(0.131, 0.046)

(0.708, 0.292)

(0.3127, 0.3290)

  • SS528V100/SS524V100支持BT601、BT709以及用户自定义色域,不支持BT2020。

【相关数据类型及接口】

无。

ot_dynamic_range

【说明】

定义动态范围枚举。

【定义】

typedef enum  {
    OT_DYNAMIC_RANGE_SDR8 = 0,
    OT_DYNAMIC_RANGE_SDR10,
    OT_DYNAMIC_RANGE_HDR10,
    OT_DYNAMIC_RANGE_HLG,
    OT_DYNAMIC_RANGE_SLF,
    OT_DYNAMIC_RANGE_XDR,
    OT_DYNAMIC_RANGE_BUTT
} ot_dynamic_range;

【成员】

成员名称

描述

OT_DYNAMIC_RANGE_SDR8

8bit数据的标准动态范围。

OT_DYNAMIC_RANGE_SDR10

10bit数据的标准动态范围。

OT_DYNAMIC_RANGE_HDR10

10bit数据的高动态范围。

OT_DYNAMIC_RANGE_HLG

10bit数据的高动态范围。

OT_DYNAMIC_RANGE_SLF

暂时无效。

OT_DYNAMIC_RANGE_XDR

10bit数据,算法处理的一个中间类型数据,用户无需关心。

【注意事项】

  • 各个动态范围对应的曲线如下:

Dynamic Range

Transfer Characteristic

SDR8/SDR10

V = α * Lc0.45 − (α − 1) for 1 >= Lc >= β

V = 4.500 * Lc for β > Lc >= 0

HDR10

V = ( ( c1 + c2 * Lc n ) ÷ ( 1 + c3 * Lc n ) )m for all values of Lc

c1 = c3 − c2 + 1 = 3424 ÷ 4096 = 0.8359375

c2 = 32 * 2413 ÷ 4096 = 18.8515625

c3 = 32 * 2392 ÷ 4096 = 18.6875

m = 128 * 2523 ÷ 4096 = 78.84375

n = 0.25 * 2610 ÷ 4096 = 0.1593017578125

for which Lc equal to 1 for peak white is ordinarily intended to correspond to a reference output luminance level of 10000 candelas per square metre

HLG

V = a * Ln( 12 * Lc − b ) + c for 1 >= Lc > 1 ÷ 12

V = Sqrt( 3 ) * Lc0.5 for 1 ÷ 12 >= Lc >= 0

a = 0.17883277, b = 0.28466892, c = 0.55991073

  • SS528V100/SS524V100/SS928V100仅支持SDR8。

【相关数据类型及接口】

无。

ot_data_bit_width

【说明】

定义数据位宽枚举。

【定义】

typedef enum  {
    OT_DATA_BIT_WIDTH_8 = 0,
    OT_DATA_BIT_WIDTH_10,
    OT_DATA_BIT_WIDTH_12,
    OT_DATA_BIT_WIDTH_14,
    OT_DATA_BIT_WIDTH_16,
    OT_DATA_BIT_WIDTH_BUTT
} ot_data_bit_width;

【成员】

成员名称

描述

OT_DATA_BIT_WIDTH_8

8 bit数据位宽。

OT_DATA_BIT_WIDTH_10

10 bit数据位宽。

OT_DATA_BIT_WIDTH_12

12 bit数据位宽。

OT_DATA_BIT_WIDTH_14

14 bit数据位宽。

OT_DATA_BIT_WIDTH_16

16 bit数据位宽。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_video_supplement_misc

【说明】

定义视频扩展补充信息结构体。

【定义】

typedef struct {
    td_s16              offset_top;
    td_s16              offset_left;
    td_s16              offset_bottom;
    td_s16              offset_right;
    td_u32              max_luma;
    td_u32              min_luma;
    td_u64              private_data[OT_MAX_PRIVATE_DATA_NUM];
} ot_video_supplement_misc;

【成员】

成员名称

描述

offset_top

图像顶部剪裁宽度。

offset_left

图像左侧剪裁宽度。

offset_bottom

图像底部剪裁宽度。

offset_right

图像右侧剪裁宽度。

max_luma

显示图像的最大亮度。

min_luma

显示图像的最小亮度。

private_data

私有数据。

【注意事项】

无。

【相关数据类型及接口】

ot_video_supplement

ot_video_supplement

【说明】

定义视频图像帧补充信息。

【定义】

typedef struct {
    td_phys_addr_t    misc_info_phys_addr;
    td_phys_addr_t    jpeg_dcf_phys_addr;
    td_phys_addr_t    isp_info_phys_addr;
    td_phys_addr_t    low_delay_phys_addr;
    td_phys_addr_t    bnr_rnt_phys_addr;
    td_phys_addr_t    motion_data_phys_addr;
    td_phys_addr_t    frame_dng_phys_addr;
    td_void* ATTRIBUTE misc_info_virt_addr;
    td_void* ATTRIBUTE jpeg_dcf_virt_addr; 
    td_void* ATTRIBUTE isp_info_virt_addr; 
    td_void* ATTRIBUTE low_delay_virt_addr; 
    td_void* ATTRIBUTE bnr_mot_virt_addr;
    td_void* ATTRIBUTE motion_data_virt_addr;
    td_void* ATTRIBUTE frame_dng_virt_addr;
} ot_video_supplement;

【成员】

成员名称

描述

misc_info_phys_addr

视频扩展信息的物理地址

jpeg_dcf_phys_addr

Jpeg DCF信息的物理地址。

isp_info_phys_addr

ISP辅助信息的物理地址。

low_delay_phys_addr

低延时信息物理地址。

bnr_rnt_phys_addr

BNR信息物理地址。

motion_data_phys_addr

运动数据物理地址。

frame_dng_phys_addr

DNG信息的物理地址。

misc_info_virt_addr

视频扩展信息的虚拟地址

jpeg_dcf_virt_addr

Jpeg DCF信息的虚拟地址

内核态虚拟地址。

isp_info_virt_addr

ISP辅助信息的内核态虚拟地址。

内核态虚拟地址。

low_delay_virt_addr

低延时信息虚拟地址。

内核态虚拟地址。

bnr_mot_virt_addr

BNR信息虚拟地址。

内核态虚拟地址。

motion_data_virt_addr

运动数据虚拟地址。

内核态虚拟地址。

frame_dng_virt_addr

DNG格式信息的虚拟地址。

内核态虚拟地址。

【注意事项】

无。

【相关数据类型及接口】

ot_video_frame

ot_video_frame

【说明】

定义视频原始图像帧结构。

【定义】

typedef struct {
    td_u32              width;
    td_u32              height;
    ot_video_field       field;
    ot_pixel_format      pixel_format;
    ot_video_format      video_format;
    ot_compress_mode     compress_mode;
    ot_dynamic_range     dynamic_range;
    ot_color_gamut       color_gamut;
    td_u32              header_stride[OT_MAX_COLOR_COMPONENT];
    td_u32              stride[OT_MAX_COLOR_COMPONENT];
    td_phys_addr_t     header_phys_addr[OT_MAX_COLOR_COMPONENT];
    td_phys_addr_t     phys_addr[OT_MAX_COLOR_COMPONENT];
    td_void* ATTRIBUTE  header_virt_addr[OT_MAX_COLOR_COMPONENT];
    td_void* ATTRIBUTE  virt_addr[OT_MAX_COLOR_COMPONENT];
    td_u32              time_ref;
    td_u64              pts;
    td_u64              user_data[OT_MAX_USER_DATA_NUM];
    td_u32              frame_flag; /* frame_flag, can be OR operation. */
    ot_video_supplement  supplement;
} ot_video_frame;

【成员】

成员名称

描述

width

图像宽度。

height

图像高度。

field

帧场模式。

pixel_format

视频图像像素格式。

video_format

视频图像格式。

compress_mode

视频压缩模式。

dynamic_range

动态范围。

color_gamut

色域范围。

header_stride

图像压缩头跨距。

stride

图像数据跨距。

header_phys_addr

压缩头物理地址

header_virt_addr

压缩头虚拟地址。

内核态虚拟地址。

phys_addr

图像数据物理地址。

virt_addr

图像数据虚拟地址。

内核态虚拟地址。

time_ref

图像帧序列号。

pts

图像时间戳。

user_data

用户数据

frame_flag

当前帧的标记,使用ot_frame_flag里面的值标记,可以按位或操作。

supplement

图像的补充信息。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_video_frame_info

【说明】

定义视频图像帧信息结构体。

【定义】

typedef struct {
    ot_video_frame video_frame;
    td_u32        pool_id;
    ot_mod_id      mod_id;
} ot_video_frame_info;

【成员】

成员名称

描述

video_frame

视频图像帧。

pool_id

视频缓存池ID。

mod_id

当前帧数据是由哪一个模块写出的。

【注意事项】

无。

【相关数据类型及接口】

ot_video_frame

ot_vb_calc_cfg

【说明】

定义视频图像帧各部分数据大小配置信息结构体。

【定义】

typedef struct {
    td_u32 vb_size;
    td_u32 head_stride;
    td_u32 head_size;
    td_u32 head_y_size;
    td_u32 main_stride;
    td_u32 main_size;
    td_u32 main_y_size;
} ot_vb_calc_cfg;

【成员】

成员名称

描述

vb_size

视频图像帧总大小。

head_stride

视频图像帧压缩头stride。

head_size

视频图像帧压缩头总大小。

head_y_size

视频图像帧亮度压缩头大小

main_stride

视频图像帧主体数据stride

main_size

视频图像帧主体数据总大小

main_y_size

视频图像帧主体数据亮度大小

【注意事项】

无。

【相关数据类型及接口】

ot_video_frame

ot_bmp

【说明】

定义位图图像信息结构。

【定义】

typedef struct {
    ot_pixel_format  pixel_format;  /* bitmap's pixel format */
    td_u32 width;               /* bitmap's width */
    td_u32 height;              /* bitmap's height */
    td_void* ATTRIBUTE data;      /* address of bitmap's data */
} ot_bmp;

【成员】

成员名称

描述

pixel_format

位图像素格式。

width

位图宽度。

height

位图高度。

data

位图数据。

用户态虚拟地址。

【注意事项】

无。

【相关数据类型及接口】

无。

ot_video_format

【说明】

定义视频格式结构体。

【定义】

typedef enum  {
    OT_VIDEO_FORMAT_LINEAR = 0,       /* nature video line */
    OT_VIDEO_FORMAT_TILE_64x16,       /* tile cell: 64pixel x 16line */
    OT_VIDEO_FORMAT_TILE_16x8,        /* tile cell: 16pixel x 8line */
    OT_VIDEO_FORMAT_BUTT
} ot_video_format;

【成员】

成员名称

描述

OT_VIDEO_FORMAT_LINEAR

线性存储的视频格式。

OT_VIDEO_FORMAT_TILE_64x16

TILE格式存储的视频格式,其中tile的块大小为64像素宽,16行像素高。

OT_VIDEO_FORMAT_TILE_16x8

TILE格式存储的视频格式,其中tile的块大小为16像素宽,8行像素高。

【注意事项】

无。

ot_compress_mode

【说明】

定义视频压缩数据格式结构体。

【定义】

typedef enum  {
    OT_COMPRESS_MODE_NONE = 0,
    OT_COMPRESS_MODE_SEG,
    OT_COMPRESS_MODE_SEG_COMPACT, 
    OT_COMPRESS_MODE_TILE,
    OT_COMPRESS_MODE_LINE,
    OT_COMPRESS_MODE_FRAME,
    OT_COMPRESS_MODE_BUTT
} ot_compress_mode;

【成员】

成员名称

描述

OT_COMPRESS_MODE_NONE

非压缩的视频格式。

OT_COMPRESS_MODE_SEG

段压缩的视频格式,按256 bytes为一段进行压缩。

OT_COMPRESS_MODE_SEG_COMPACT

紧凑段压缩的视频格式,按256 bytes为一段进行紧凑压缩。

OT_COMPRESS_MODE_TILE

Tile压缩的视频格式,按照Tile为一段进行压缩。

OT_COMPRESS_MODE_LINE

行压缩的视频格式,按照一行为一段进行压缩。

OT_COMPRESS_MODE_FRAME

帧压缩的视频格式,以一帧为单位进行压缩。

【注意事项】

无。

ot_vb_supplement_cfg

【说明】

定义VB附加信息结构体。

【定义】

typedef struct {
    td_u32 supplement_cfg;
} ot_vb_supplement_cfg;

【成员】

成员名称

描述

supplement_cfg

附加信息控制。

【注意事项】

当前支持5种附加信息,具体请参考ss_mpi_vb_set_supplement_cfg接口描述。

【相关数据类型及接口】

ot_gps_info

【说明】

定义GPS信息结构体。

【定义】

typedef struct {
    td_char gps_latitude_ref;
    td_u32 gps_latitude[OT_GPS_EXPRESS_NUM][OT_GPS_GRP_NUM];
    td_char gps_longitude_ref;
    td_u32 gps_longitude[OT_GPS_EXPRESS_NUM][OT_GPS_GRP_NUM];
    td_u8 gps_altitude_ref;
    td_u32 gps_altitude[OT_GPS_GRP_NUM];
} ot_gps_info;

【成员】

成员名称

描述

gps_latitude_ref

GPS纬度参考。取值’N’或’S’,默认值为’N’。

gps_latitude

GPS纬度坐标。形式为度、分、秒三维,每一纬度数值表达包含分子分母两部分,每维数组中第一位数为分子,第二位数为分母,分母必须大于0,例如{dd/1, mm/1, ss/1}。默认值为{0/1,0/1,0/1},表示0度0分0秒。

gps_longitude_ref

GPS经度参考。取值’E’或’W’,默认值为’E’。

gps_longitude

GPS经度坐标。形式为度、分、秒三维,每一纬度数值表达包含分子分母两部分,每维数组中第一位数为分子,第二位数为分母,分母必须大于0,例如{dd/1, mm/1, ss/1}。默认值为{0/1,0/1,0/1},表示0度0分0秒。

gps_altitude_ref

GPS高度参考。取值0或1,默认值为0。

0:海平面参考,海平面向上;

1:海平面参考,海平面向下。

gps_altitude

GPS高度坐标。数值表达包含分子分母两部分,数组中第一位数为分子,第二位数为分母,分母必须大于0,例如hh/1。默认值为0/1,表示0米。

单位为米。

【注意事项】

无。

【相关数据类型及接口】

ot_frame_interrupt_type

【说明】

定义帧中断类型的枚举。

【定义】

typedef enum  {
    OT_FRAME_INTERRUPT_START,
    OT_FRAME_INTERRUPT_EARLY,
    OT_FRAME_INTERRUPT_EARLY_END,
    OT_FRAME_INTERRUPT_EARLY_EARLY,
    OT_FRAME_INTERRUPT_BUTT,
} ot_frame_interrupt_type;

【成员】

成员名称

描述

OT_FRAME_INTERRUPT_START

使用帧起始中断准备和发送。

OT_FRAME_INTERRUPT_EARLY

使用帧提前上报中断准备,帧起始中断发送。

OT_FRAME_INTERRUPT_EARLY_END

使用帧提前上报中断准备,帧完成中断发送。

OT_FRAME_INTERRUPT_EARLY_EARLY

使用帧提前上报中断准备和发送。

【注意事项】

OT_FRAME_INTERRUPT_EARLY_EARLY模式只推荐在VI-VO的低延迟场景使用,会存在VB被改写覆盖的风险。

【相关数据类型及接口】

无。

ot_frame_interrupt_attr

【说明】

定义帧中断属性结构体。

【定义】

typedef struct {
    ot_frame_interrupt_type interrupt_type;
    td_u32 early_line;
} ot_frame_interrupt_attr;

【成员】

成员名称

描述

interrupt_type

帧中断类型的枚举。

early_line

延时行号。

SS928V100最小值为0,其他最小值为40;最大值小于图像高度。

【注意事项】

当interrupt_type为OT_FRAME_INTERRUPT_START时,early_line无效。

【相关数据类型及接口】

无。

ot_data_rate

【说明】

定义设备的速率的枚举。

【定义】

typedef enum {
    OT_DATA_RATE_X1 = 0,
    OT_DATA_RATE_X2,
    OT_DATA_RATE_BUTT
} ot_data_rate;

【成员】

成员名称

描述

OT_DATA_RATE_X1

一拍一像素。

OT_DATA_RATE_X2

一拍二像素。

【注意事项】

SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

无。

ot_wdr_mode

【说明】

定义WDR工作模式的枚举。

【定义】

typedef enum {
    OT_WDR_MODE_NONE = 0,
    OT_WDR_MODE_BUILT_IN,
    OT_WDR_MODE_QUDRA,
    OT_WDR_MODE_2To1_LINE,
    OT_WDR_MODE_2To1_FRAME,
    OT_WDR_MODE_3To1_LINE,
    OT_WDR_MODE_3To1_FRAME,
    OT_WDR_MODE_4To1_LINE,
    OT_WDR_MODE_4To1_FRAME,
    OT_WDR_MODE_BUTT,
} ot_wdr_mode;

【成员】

成员名称

描述

OT_WDR_MODE_NONE

线性模式。

OT_WDR_MODE_BUILT_IN

Sensor合成WDR模式。

OT_WDR_MODE_QUDRA

QUDRA WDR模式。

OT_WDR_MODE_2To1_LINE

2帧合成行WDR模式。

OT_WDR_MODE_2To1_FRAME

2帧合成帧WDR模式。

OT_WDR_MODE_3To1_LINE

3帧合成行WDR模式。

OT_WDR_MODE_3To1_FRAME

3帧合成帧WDR模式。

OT_WDR_MODE_4To1_LINE

4帧合成行WDR模式。

OT_WDR_MODE_4To1_FRAME

4帧合成帧WDR模式。

【注意事项】

SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

无。

ot_isp_config_info

【说明】

定义ISP配置信息。

【定义】

typedef struct {
    td_u32 iso;
    td_u32 isp_dgain;
    td_u32 exposure_time;
    td_u32 white_balance_gain[OT_ISP_WB_GAIN_NUM];
    td_u32 color_temperature;
    td_u16 cap_ccm[OT_ISP_CAP_CCM_NUM];
} ot_isp_config_info;

【成员】

成员名称

描述

iso

曝光ISO值。

isp_dgain

ISP的数字增益。

exposure_time

曝光时间。

white_balance_gain

R、Gr、Gb、B四颜色通道的增益,16bit精度表示。

color_temperature

当前检测的色温值。

cap_ccm

颜色还原矩阵。为3*3矩阵。

【注意事项】

SS528V100/SS524V100/SS626V100不支持此结构体。

【相关数据类型及接口】

无。

ot_low_delay_info

【说明】

定义视频低延时信息结构体。

【定义】

typedef struct {
    td_bool  enable;
    td_u32  line_cnt;
    td_bool  one_buf_en;
} ot_low_delay_info

【成员】

成员名称

描述

enable

低延时使能开关

line_cnt

低延时输出行号,最小值为16,最大值不超过图像高度,不建议设置行号太接近图像高度。

one_buf_en

是否开启one buffer

【注意事项】

SS528V100/SS524V100不支持此结构体。

【相关数据类型及接口】

无。

ot_schedule_mode

【说明】

定义调度模式的枚举。

【定义】

typedef enum {
    OT_SCHEDULE_NORMAL = 0,
    OT_SCHEDULE_QUICK,
    OT_SCHEDULE_BUTT
} ot_schedule_mode;

【成员】

成员名称

描述

OT_SCHEDULE_NORMAL

正常调度模式。

OT_SCHEDULE_QUICK

快速调度模式。

【注意事项】

当配置为快速调度模式(OT_SCHEDULE_QUICK)时,整个系统会存在一定约束,具体请参考《MPP 媒体处理软件 V5.0 FAQ》的1.9 Quick schedule注意事项。

【相关数据类型及接口】

ot_scale_coef_type

【说明】

定义缩放系数类型的枚举。

【定义】

typedef enum {
    OT_SCALE_COEF_TYPE_NORMAL,
    OT_SCALE_COEF_TYPE_BILINEAR,
    OT_SCALE_COEF_TYPE_BUTT
} ot_scale_coef_type;

【成员】

成员名称

描述

OT_SCALE_COEF_TYPE_NORMAL

正常缩放系数类型。

OT_SCALE_COEF_TYPE_BILINEAR

双线性缩放系数类型。

【注意事项】

当配置为正常缩放系数类型(OT_SCALE_COEF_TYPE_NORMAL)时,采用ss_mpi_sys_set_scale_coef_level接口配置后生成的缩放系数对图像进行缩放;而配置为双线性缩放系数类型(OT_SCALE_COEF_TYPE_BILINEAR)时,采用双线性插值。

【相关数据类型及接口】

错误码

系统控制错误码

系统控制API错误码如下所示。

表 1 系统控制API错误码

错误代码

宏定义

描述

0xa0028007

OT_ERR_SYS_ILLEGAL_PARAM

参数设置无效

0xa002800a

OT_ERR_SYS_NULL_PTR

空指针错误

0xa002800c

OT_ERR_SYS_NOT_SUPPORT

不支持的功能

0xa002800d

OT_ERR_SYS_NOT_PERM

操作不允许

0xa0028014

OT_ERR_SYS_NO_MEM

分配内存失败,如系统内存不足

0xa0028018

OT_ERR_SYS_NOT_READY

系统控制属性未配置

0xa0028022

OT_ERR_SYS_BUSY

系统忙

视频缓存池错误码

视频缓存池API错误码如下所示。

表 1 视频缓存池API错误码

错误代码

宏定义

描述

0xa0018007

OT_ERR_VB_ILLEGAL_PARAM

参数设置无效

0xa0018009

OT_ERR_VB_UNEXIST

视频缓存池不存在

0xa001800a

OT_ERR_VB_NULL_PTR

参数空指针错误

0xa001800c

OT_ERR_VB_NOT_SUPPORT

操作不支持

0xa001800d

OT_ERR_VB_NOT_PERM

操作不允许

0xa0018014

OT_ERR_VB_NO_MEM

分配内存失败

0xa0018015

OT_ERR_VB_NO_BUF

分配缓存失败

0xa0018018

OT_ERR_VB_NOT_READY

系统控制属性未配置

0xa0018022

OT_ERR_VB_BUSY

系统忙

0xa0018023

OT_ERR_VB_SIZE_NOT_ENOUGH

VB块大小不够

各模块支持的输入/输出数据格式和压缩模式

SS528V100各模块输出支持的数据格式和压缩模式

模块

输出支持的数据格式

输出支持的压缩模式

VI for YUV

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

VPSS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

VGS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

VO(WBC)

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

VDEC for H264/H265

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

VDEC for JPEG

OT_VIDEO_FORMAT_LINEAR

不支持压缩

TDE

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_LINE

SS528V100各模块输入支持的数据格式和压缩模式

模块

输入支持的数据格式

输入支持的压缩模式

VI for YUV

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VPSS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

VGS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

VDA

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VO

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

VENC

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

TDE

OT_VIDEO_FORMAT_LINEAR

不支持压缩

GFBG

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_LINE

SS524V100各模块输出支持的数据格式和压缩模式

模块

输出支持的数据格式

输出支持的压缩模式

VI for YUV

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

VPSS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

VGS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

VO(WBC)

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

VDEC for H264/H265

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

VDEC for JPEG

OT_VIDEO_FORMAT_LINEAR

不支持压缩

TDE

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_LINE

SS524V100各模块输入支持的数据格式和压缩模式

模块

输入支持的数据格式

输入支持的压缩模式

VI for YUV

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VPSS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

VGS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

VDA

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VO

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

VENC

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

TDE

OT_VIDEO_FORMAT_LINEAR

不支持压缩

GFBG

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_LINE

SS928V100各模块输出支持的数据格式和压缩模式

模块

输出支持的数据格式

输出支持的压缩模式

VI for YUV

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

VI for RAW

--

OT_COMPRESS_MODE_LINE

OT_COMPRESS_MODE_FRAME

VPSS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_VIDEO_FORMAT_TILE_16x8

OT_COMPRESS_MODE_TILE

AVS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

VGS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

GDC

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

VDEC for H264/H265

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VDEC for JPEG

OT_VIDEO_FORMAT_LINEAR

不支持压缩

TDE

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_LINE

MCF

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

SS928V100各模块输入支持的数据格式和压缩模式

模块

输入支持的数据格式

输入支持的压缩模式

VI for YUV

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VI for RAW

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_LINE

OT_COMPRESS_MODE_FRAME

VPSS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

AVS for BLEND

OT_VIDEO_FORMAT_TILE_16x8

OT_COMPRESS_MODE_TILE

AVS for NOBLEND_VER

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

AVS for NOBLEND_HOR/NOBLEND_QR

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT(非压缩输出时)

VGS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

GDC

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VO

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

VENC

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

TDE

OT_VIDEO_FORMAT_LINEAR

不支持压缩

GFBG

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_LINE

MCF

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

SS626V100各模块输出支持的数据格式和压缩模式

模块

输出支持的数据格式

输出支持的压缩模式

备注

VI for YUV

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

VPSS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

VGS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

GDC

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

VO(WBC)

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

VDEC for H264/H265

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VDEC for JPEG

OT_VIDEO_FORMAT_LINEAR

不支持压缩

TDE

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_LINE

SS626V100各模块输入支持的数据格式和压缩模式

模块

输入支持的数据格式

输入支持的压缩模式

备注

VI for YUV

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VPSS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

VGS

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

OT_COMPRESS_MODE_SEG_COMPACT

OT_COMPRESS_MODE_LINE

OT_VIDEO_FORMAT_TILE_64x16

OT_COMPRESS_MODE_TILE

GDC

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VDA

OT_VIDEO_FORMAT_LINEAR

不支持压缩

VO

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

部分场景会调用VGS进行解压缩,具体请参考“视频输出”章节和VGS支持的数据和压缩格式

OT_COMPRESS_MODE_LINE

VENC

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_SEG

其它情况,VENC会调用VGS进行数据格式转换,具体请参考VGS支持的数据和压缩格式

OT_COMPRESS_MODE_SEG_COMPACT

TDE

OT_VIDEO_FORMAT_LINEAR

不支持压缩

GFBG

OT_VIDEO_FORMAT_LINEAR

OT_COMPRESS_MODE_LINE