视频输入
须知:
本章节不适用于Hi3511CV100。
概述
视频输入(VI)模块实现的功能:通过MIPI Rx(含MIPI接口、LVDS接口和HISPI接口),BT.1120,BT.656,BT.601,DC, THERMO等接口接收视频数据。VI将接收到的数据存入到指定的内存区域,在此过程中,VI可以对接收到的原始视频图像数据进行处理,实现视频数据的采集。
重要概念
-
视频输入设备
视频输入设备支持若干种时序输入,负责对时序进行解析。
-
视频输入物理PIPE
视频输入PIPE绑定在设备后端,负责设备解析后的数据再处理。
-
视频输入虚拟PIPE
视频输入虚拟PIPE不绑定设备,负责其他模块或用户发送过来的数据再处理。
-
视频物理通道
物理通道负责将最终处理后的数据输出到DDR,在真正将数据输出到DDR之前,它可以实现裁剪等功能。
-
PIPE的工作模式
详情请参考“系统控制”章节的“VI和VPSS”的工作模式描述。
-
掩码
掩码用于指示VI设备的视频数据来源。
-
DIS
DIS模块通过比较当前图像与前两帧图像,采用不同自由度的防抖算法计算出当前图像在各个轴方向上的抖动偏移向量,然后根据抖动偏移向量对当前图像进行校正,从而起到防抖的效果。
-
3DNR
去噪。通过参数配置,把图像中的高斯噪声去除,使得图像变得平滑,有助于降低编码码率。
-
提前上报中断
提前上报中断指图像写出指定的行数到DDR后,VI上报一个中断,把图像发给后端模块处理,可以减少延时,但没有和低延时一样的硬件机制保证后端模块读图像不会出错。
-
Mirror/Flip
Mirror即水平镜像,Flip即上下翻转。可使用Mirror+Flip实现180°旋转。
-
FMU
Frame Memory Management Unit,帧存管理单元。支持使用帧存管理单元管理帧存数据,降低媒体数据内存占用,降低端到端延时。
-
行buffer
图像处理的数据单位。图像的行超过图像处理的单位长度时,驱动会做分块处理。
功能描述
功能框图

VI从软件上划分了输入设备(DEV),输入PIPE(图示为物理PIPE,虚拟PIPE只包含ISP_BE)、物理通道(PHY_CHN)、扩展通道(EXT_CHN)四个层级。扩展通道不开启时,VI模块数据流由物理通道直接输出到后级模块。各芯片的设备、PIPE、通道个数差异如表1所示。
表 1 设备/PIPE/通道的个数
视频输入设备
所有VI设备都是相互独立的,支持时序解析。
表 1 VI DEV输入分辨率
视频输入PIPE
VI的PIPE包含了ISP的相关处理功能,主要是对图像数据进行流水线处理,输出YUV图像格式给通道。PIPE的工作模式请参考“系统控制”章节的“VI和VPSS”的工作模式描述。
表 1 Hi3519DV500 VI PIPE支持输入格式
表 2 Hi3516CV610 VI PIPE支持输入格式
表 3 VI PIPE输入分辨率
- Hi3516CV610中,PIPE0只支持VI在线YUV输入,PIPE1只支持VI离线YUV输入。一路RAW和一路YUV复合输入时,RAW路必须在线,YUV路必须离线写出到DDR且不经过VIPROC处理。
视频物理通道
- Hi3519DV500/Hi3516CV610 VI只有一个物理通道。
- Hi3519DV500物理通道支持的典型分辨率如3840x2160@30fps、2688x1520@60fps、2688x1520@30fps、1080p@60fps、1080p@30fps等。
- Hi3516DV500物理通道支持的典型分辨率如3072x1728@30fps、2688x1520@30fps、1080p@60fps、1080p@30fps等。
- Hi3516CV610物理通道支持的典型分辨率如3840*2160@20fps、3200x1800@30fps、1080p@30fps等。
-
RAW PIPE对应的物理通道支持OT_PIXEL_FORMAT_RGB_BAYER_16BPP_INDICATE_YUYV_PACKAGE_422、OT_PIXEL_FORMAT_RGB_BAYER_8BPP_INDICATE_UYVY_PACKAGE_422转OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420的像素格式转换 ,此时不支持通道上的其他功能。例如:
支持vi通道后处理的:OT_PIXEL_FORMAT_RGB_BAYER_16BPP_INDICATE_YUYV_PACKAGE_422到OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420的转换。
使用时设置vi:pipe_attr.pixel_format = HI_PIXEL_FORMAT_RGB_BAYER_16BPP_INDICATE_YUYV_PACKAGE_422
chn_attr.pixel_format = HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420
开启vi通道,即可打开像素转换。使用vi_pipe_dump工具,将OT_PIXEL_FORMAT_RGB_BAYER_16BPP_INDICATE_YUYV_PACKAGE_422格式图像存成raw16格式,可以调试查看。
说明: Hi3516CV610不支持物理通道像素转换。
表 1 VI CHN输出分辨率
视频扩展通道
扩展通道是物理通道的扩展,扩展通道具备缩放、裁剪功能,它通过绑定物理通道,将物理通道输出作为自己的输入,然后输出用户设置的目标图像。Hi3519DV500 不支持扩展通道功能,Hi3516CV610支持1个扩展通道。
表 1 VI EXT_CHN输出分辨率
绑定关系
- DEV和前端时序输入的接口有约束关系。例如Hi3519DV500前端需要接入BT.1120,且选择了第0组BT.1120管脚,PIPE应该和DEV1绑定,才能正常接收数据。
- Hi3519DV500/Hi3516CV610 DEV和时序输入接口的约束关系如表1所示,Hi3516DV500 参考DEV0、DEV1配置。
- DEV和PIPE的绑定关系:每个PIPE都可以与任意Dev绑定,PIPE销毁后,PIPE可以和DEV解绑定。
表 1 DEV与MIPI/BT.1120/BT.656/BT.601/DC/THERMO接口的绑定关系
“x”表示无效设备号,数字表示有效的设备ID。
从模式
从模式SENSOR,需要使用VI的从模式模块。从模式与VI的物理PIPE对应关系是固定的。用户需要根据SENSOR管脚的连线和表1确定使用哪个从模式模块,然后选择对应的物理PIPE号创建物理PIPE,否则会没有数据,详细步骤如下:
- 根据硬件原理图确认SENSOR管脚连接到了SENSOR_HSx/ SENSOR_VSx。
- 根据表1确定该SENSOR连接到从模式模块x。
-
软件根据表1确定在采集这个SENSOR的数据时可以使用编号为x的PIPE。
表 1 从模式与PIPE的对应关系表
说明: 从模式和PIPE的对应关系默认是如表1所示,如果需要修改,可以通过修改ISP相关的代码完成。
掩码配置
掩码的高12bit对应着硬件线路的12个pin脚连接(D0到D15之间的任意连续12个pin脚即可,例如D4~D15),用户需要根据实际连接情况设置恰当的掩码配置,掩码的最高比特位对应的pin为D15,例如10bit输入的Sensor连接的pin为D6~D15,掩码配置为0xFFC00000;同理如果是14bit输入时,对应的掩码配置为0xFFFC0000。
VI接入Data线序为由低到高,例如单分量接入时,D0为数据低比特位,D15为数据高比特位。
- Hi3519DV500最高支持2路BT.1120,Hi3516CV610最高支持1路BT.1120;
-
1路/2路5M或1080p图像输入场景(12bit输入)
1路/2路5M或1080p图像输入场景下,设置VI设备属性时,可根据表1配置掩码。
表 1 1路、2路5M或1080p场景下的掩码配置(12bit)
-
1路/2路BT.1120高清输入场景(16bit输入)
1路/2路BT.1120高清图像输入场景下,设置VI设备属性时,可根据表2配置掩码。
表 2 1路/2路BT.1120图像输入场景下的掩码配置(16bit)
-
1路/2路D1图像输入场景(8bit输入)
1路/2路 图像输入场景下,设置VI设备属性时,可根据表3配置掩码。
表 3 1路D1图像输入场景下的掩码配置(8bit)
API参考
VI模块实现Dev配置和使能、Dev和Pipe绑定、Grp配置、Pipe创建和使能、Chn配置和使能等功能。
该功能模块提供以下MPI:
- ss_mpi_vi_set_dev_attr:设置VI设备属性。
- ss_mpi_vi_get_dev_attr:获取VI设备属性。
- ss_mpi_vi_set_dev_irq_affinity:设置VI 设备的中断源亲和性。
- ss_mpi_vi_get_dev_irq_affinity:获取VI 设备的中断源亲和性。
- ss_mpi_vi_enable_dev:启用VI设备。
- ss_mpi_vi_disable_dev:禁用VI设备。
- ss_mpi_vi_set_thermo_sns_attr:设置热成像探测器的配置属性。
- ss_mpi_vi_get_thermo_sns_attr:获取热成像探测器的配置属性。
- ss_mpi_vi_enable_dev_send_frame:启用设备送帧功能。
- ss_mpi_vi_disable_dev_send_frame:禁用设备送帧功能。
- ss_mpi_vi_send_dev_frame:配置设备送帧的帧信息。
- ss_mpi_vi_set_dev_timing_attr:设置设备自产生时序属性。
- ss_mpi_vi_get_dev_timing_attr:获取设备自产生时序属性。
- ss_mpi_vi_set_dev_data_attr:设置设备自产生数据属性。
- ss_mpi_vi_get_dev_data_attr:获取设备自产生数据属性。
- ss_mpi_vi_bind:一对一绑定Dev和Pipe。
- ss_mpi_vi_unbind:一对一解绑定Dev和Pipe。
- ss_mpi_vi_get_bind_by_dev:获取与Dev绑定的Pipe。
- ss_mpi_vi_get_bind_by_pipe:获取与Pipe绑定的Dev。
- ss_mpi_vi_set_wdr_fusion_grp_attr:设置wdr合成组的属性。
- ss_mpi_vi_get_wdr_fusion_grp_attr:获取wdr合成组的属性。
-
ss_mpi_vi_set_distribute_grp_attr:设置分发组的属性。
ss_mpi_vi_get_distribute_grp_attr:获取分发组的属性
-
ss_mpi_vi_create_pipe:创建一个VI PIPE。
- ss_mpi_vi_destroy_pipe:销毁一个VI PIPE。
- ss_mpi_vi_set_pipe_attr:设置VI PIPE的属性。
- ss_mpi_vi_get_pipe_attr:获取VI PIPE的属性。
- ss_mpi_vi_start_pipe:启用VI PIPE。
- ss_mpi_vi_stop_pipe:禁用VI PIPE。
- ss_mpi_vi_set_pipe_buf_wrap_attr:设置VI PIPE的离线卷绕属性。
- ss_mpi_vi_get_pipe_buf_wrap_attr:获取VI PIPE的离线卷绕属性。
- ss_mpi_vi_set_pipe_3dnr_attr:设置VI PIPE的3DNR属性。
- ss_mpi_vi_get_pipe_3dnr_attr:获取VI PIPE 3DNR的属性。
- ss_mpi_vi_set_pipe_3dnr_param:设置VI PIPE的3DNR参数。
- ss_mpi_vi_get_pipe_3dnr_param:获取VI PIPE 3DNR的参数。
- ss_mpi_vi_set_pipe_pre_crop:设置VI 物理PIPE输入端的裁剪功能属性。
- ss_mpi_vi_get_pipe_pre_crop:获取VI 物理PIPE输入端的裁剪功能属性。
- ss_mpi_vi_set_pipe_post_crop:设置VI 物理PIPE输出端的裁剪功能属性。
- ss_mpi_vi_get_pipe_post_crop:获取VI 物理PIPE输出端的裁剪功能属性。
- ss_mpi_vi_set_pipe_frame_dump_attr:设置VI 物理PIPE dump图像帧属性。
- ss_mpi_vi_get_pipe_frame_dump_attr:获取VI 物理PIPE dump图像帧属性。
- ss_mpi_vi_get_pipe_frame:获取VI物理PIPE图像帧。
- ss_mpi_vi_release_pipe_frame:释放VI 物理PIPE的图像帧。
- ss_mpi_vi_set_pipe_private_data_dump_attr:设置VI物理PIPE dump私有数据的属性。
- ss_mpi_vi_get_pipe_private_data_dump_attr:获取VI物理PIPE dump私有数据的属性。
- ss_mpi_vi_get_pipe_private_data:获取VI物理PIPE的私有数据。
- ss_mpi_vi_release_pipe_private_data:释放VI物理PIPE的私有数据。
- ss_mpi_vi_set_pipe_frame_source:设置VI PIPE数据的来源。
- ss_mpi_vi_get_pipe_frame_source:获取VI PIPE数据的来源。
- ss_mpi_vi_set_pipe_param:设置VI PIPE参数。
- ss_mpi_vi_get_pipe_param:获取VI PIPE参数。
- ss_mpi_vi_set_pipe_bnr_buf_num:设置VI PIPE bayernr buffer个数。
- ss_mpi_vi_get_pipe_bnr_buf_num:获取VI PIPE bayernr buffer个数。
- ss_mpi_vi_send_pipe_yuv:通过VI PIPE发送YUV数据。
- ss_mpi_vi_send_pipe_raw:通过VI PIPE发送RAW数据。
- ss_mpi_vi_query_pipe_status:查询VI PIPE状态。
- ss_mpi_vi_enable_pipe_interrupt:启动VI 物理PIPE中断。
- ss_mpi_vi_disable_pipe_interrupt:禁用VI 物理PIPE中断。
- ss_mpi_vi_set_pipe_vc_number:设置VI 物理PIPE对接前端sensor或者AD的VC号。
- ss_mpi_vi_get_pipe_vc_number:获取VI 物理PIPE对接前端sensor或者AD的VC号。
- ss_mpi_vi_set_pipe_low_delay:设置VI PIPE低延时属性。
- ss_mpi_vi_get_pipe_low_delay:获取VI PIPE低延时属性。
- ss_mpi_vi_set_pipe_frame_interrupt_attr:设置VI PIPE上报中断属性。
- ss_mpi_vi_get_pipe_frame_interrupt_attr:获取VI PIPE上报中断属性。
- ss_mpi_vi_get_pipe_compress_param:获取VI物理 PIPE的RAW压缩参数。
- ss_mpi_vi_set_pipe_user_pic:设置用户图片,作为无视频信号时的插入图片。
- ss_mpi_vi_enable_pipe_user_pic:启用VI PIPE插入用户图片。
- ss_mpi_vi_disable_pipe_user_pic:禁用VI PIPE插入用户图片。
- ss_mpi_vi_set_pipe_vb_src:设置VI PIPE的VB来源。
- ss_mpi_vi_get_pipe_vb_src:获取VI PIPE的VB来源。
- ss_mpi_vi_attach_pipe_vb_pool:将VI的PIPE绑定到某个视频缓存VB池中。
- ss_mpi_vi_detach_pipe_vb_pool:将VI的PIPE从某个视频缓存VB池中解绑定。
- ss_mpi_vi_attach_aiisp_vb_pool:将VI的AIISP算法绑定到某个视频缓存VB池中。
- ss_mpi_vi_detach_aiisp_vb_pool:将VI的AIISP算法从某个视频缓存VB池中解绑定。
- ss_mpi_vi_set_pipe_online_clock:设置VI在线PIPE处理时钟。
- ss_mpi_vi_get_pipe_fd:获取VI PIPE文件描述符。
- ss_mpi_vi_set_chn_attr:设置VI通道属性。
- ss_mpi_vi_get_chn_attr:获取VI通道属性。
- ss_mpi_vi_set_ext_chn_attr:设置VI扩展通道属性。
- ss_mpi_vi_get_ext_chn_attr:获取VI扩展通道属性。
- ss_mpi_vi_enable_chn:启用VI通道。
- ss_mpi_vi_disable_chn:禁用VI通道。
- ss_mpi_vi_set_chn_crop:设置VI通道裁剪功能属性。
- ss_mpi_vi_get_chn_crop:获取VI通道裁剪功能属性。
- ss_mpi_vi_set_chn_dis_cfg:设置VI通道的DIS配置信息。
- ss_mpi_vi_get_chn_dis_cfg:获取VI通道的DIS配置信息。
- ss_mpi_vi_set_chn_dis_attr:设置VI通道的DIS属性。
- ss_mpi_vi_get_chn_dis_attr:获取VI通道的DIS属性。
- ss_mpi_vi_set_chn_dis_alg_attr:设置VI通道的DIS算法属性。
- ss_mpi_vi_get_chn_dis_alg_attr:获取VI通道的DIS属性。
- ss_mpi_vi_set_chn_dis_param:设置VI通道的DIS可选参数。
- ss_mpi_vi_get_chn_dis_param:获取VI通道的DIS的可选参数。
- ss_mpi_vi_set_chn_rotation:设置VI图像旋转属性。
- ss_mpi_vi_get_chn_rotation:获取VI图像旋转属性。
- ss_mpi_vi_set_chn_ldc_attr:设置VI镜头畸变校正(LDC)属性。
- ss_mpi_vi_get_chn_ldc_attr:获取VI镜头畸变校正(LDC)属性。
- ss_mpi_vi_get_chn_dis_out_size: 获取VI通道的DIS生效后的图像宽高。
- ss_mpi_vi_get_chn_frame:从VI通道获取采集的图像。
- ss_mpi_vi_release_chn_frame:释放一帧从VI通道获取的图像。
- ss_mpi_vi_set_chn_low_delay:设置VI通道低延时属性。
- ss_mpi_vi_get_chn_low_delay:获取VI通道低延时属性。
- ss_mpi_vi_set_chn_align:设置VI通道输出数据的行stride对齐。
- ss_mpi_vi_get_chn_align:获取VI通道输出数据的行stride对齐。
- ss_mpi_vi_set_chn_fmu_mode:设置VI通道 FMU模式。
- ss_mpi_vi_get_chn_fmu_mode:获取VI通道 FMU模式。
- ss_mpi_vi_set_chn_vb_src:设置VI通道使用VB的来源。
- ss_mpi_vi_get_chn_vb_src:获取VI通道使用VB的来源。
- ss_mpi_vi_attach_chn_vb_pool:将VI通道绑定到某个视频缓存VB池中。
- ss_mpi_vi_detach_chn_vb_pool:将VI通道从某个视频缓存VB池中解绑定。
- ss_mpi_vi_query_chn_status:查询VI通道的状态。
- ss_mpi_vi_get_chn_fd:获取VI通道文件描述符。
- ss_mpi_vi_set_stitch_grp_attr:设置VI 的拼接组属性。
- ss_mpi_vi_get_stitch_grp_attr:获取VI 的拼接组属性。
- ss_mpi_vi_set_mod_param:设置VI模块参数。
- ss_mpi_vi_get_mod_param:获取VI模块参数。
- ss_mpi_vi_set_pipe_psfm_attr:设置伪单帧模式的配置属性。
- ss_mpi_vi_get_pipe_psfm_attr:获取伪单帧模式的配置属性。
- ss_mpi_vi_enable_chn_motion_denoise:启用VI通道的运动降噪。
- ss_mpi_vi_disable_chn_motion_denoise:禁用VI通道的运动降噪。
- ss_mpi_vi_set_chn_dis_wdr_attr:设置VI通道的DIS WDR属性。
- ss_mpi_vi_get_chn_dis_wdr_attr:获取VI通道的DIS WDR属性。
- ss_mpi_vi_distribute_one_frame:用户向指定分发组的pipe发一帧。
- ss_mpi_vi_get_pipe_3dnr_motion_info:获取VI PIPE的3DNR运动信息。
- ss_mpi_vi_release_pipe_3dnr_motion_info:释放VI PIPE的3DNR运动信息。
- ss_mpi_vi_set_pipe_align:设置VI PIPE的输出数据的行stride对齐。
- ss_mpi_vi_get_pipe_align:获取VI PIPE的输出数据的行stride对齐。
ss_mpi_vi_set_dev_attr
【描述】
设置VI设备属性。基本设备属性默认了部分芯片配置,满足绝大部分的sensor对接要求。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 不支持隔行模式输入。
- 在调用前要保证VI设备处于禁用状态。如果VI设备已处于使能状态,可以使用ss_mpi_vi_disable_dev来禁用设备。
- 参数dev_attr主要用来配置指定VI设备的视频接口模式,用于与外围camera、sensor或codec对接,支持的接口模式包括MIPI Rx(MIPI/LVDS/HISPI)、SLVS-EC。用户需要配置以下几类信息,具体属性意义参见“数据类型”部分的说明:
- 接口模式信息:接口模式为MIPI Rx(MIPI/LVDS/HISPI)等模式
- 工作模式信息:1路、2路、4路复合模式,Hi3516CV610不支持复合模式
- 数据布局信息:复合模式下多路数据的排布
- 数据信息:逐行输入、YUV数据输入顺序
- 同步时序信息:垂直、水平同步信号的属性
【举例】
无。
【相关主题】
ss_mpi_vi_get_dev_attr
【描述】
获取VI设备属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
如果未设置VI设备属性,该接口将返回失败。
【举例】
无。
【相关主题】
ss_mpi_vi_set_dev_irq_affinity
【描述】
设置VI 设备的中断源亲和性,即不同设备优先响应对应的中断源。
【语法】
【参数】
|
取值:[0, OT_VI_MAX_DEV_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 默认全部设备都在索引为0的中断源上。
- 需要在设备绑定pipe之前使用。
-
多路sensor接入时,可通过本接口将不同dev分别配置到不同中断源,结合中断源绑核的方式提高中断处理效率;
例如,两路设备接入时,设置DEV0在中断源0上响应,DEV2在中断源1上响应,再将中断源0绑核到CPU0,中断源1绑核到CPU1,可以使VI DEV0和DEV2的中断分别在不同CPU核上并行处理,提高VICAP中断处理及时性。
-
中断源索引不是实际的中断号,实际中断号可通过 cat /proc/interrupts的方式,查看VICAP_0_0、VICAP_0_1各自对应的中断号。
- 拼接sync模式下不支持各路dev 配置不同的中断源亲和性,会导致通路异常。
【举例】
无。
【相关主题】
ss_mpi_vi_get_dev_irq_affinity
ss_mpi_vi_get_dev_irq_affinity
【描述】
获取VI 设备的中断源亲和性。
【语法】
【参数】
|
取值:[0, OT_VI_MAX_DEV_NUM)。 |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vi_set_dev_irq_affinity
ss_mpi_vi_enable_dev
【描述】
启用VI设备。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM)。 |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 启用前必须已经设置设备属性,否则返回失败。
- 可重复启用,不返回失败。
【举例】
无。
【相关主题】
ss_mpi_vi_disable_dev
【描述】
禁用VI设备。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM)。 |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 需先销毁所有与该VI设备绑定的物理PIPE后,再禁用VI设备。
- 可重复禁用,不返回失败。
- 支持低功耗处理,禁用VI设备后将完全关闭该设备,需要重新设置属性,才能使能VI设备。
【举例】
无。
【相关主题】
ss_mpi_vi_set_thermo_sns_attr
【描述】
设置热成像探测器的配置属性。请参考《Thermo开发参考》第3章。
【解决方案差异】
Hi3516CV610不支持该接口。
【相关主题】
ss_mpi_vi_get_thermo_sns_attr
【描述】
获取热成像探测器的配置属性。请参考《Thermo开发参考》第3章。
【解决方案差异】
Hi3516CV610不支持该接口。
【相关主题】
ss_mpi_vi_enable_dev_send_frame
【描述】
启用设备送帧功能。
【语法】
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持该接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 必须已经启用设备,才能配置该接口送帧,否则会返回错误。
- 必须和ss_mpi_vi_disable_dev_send_frame成对使用,否则会导致VB泄露。
- dev自产生时序进行wdr模式灌raw时,不能使用pipe帧率控制对wdr长短帧帧率进行控制,否则可能出现wdr长短帧不匹配造成的wdr丢帧。
- dev自产生时序进行灌raw的时需要注意,如果使用pipe低延时、early_end等提前送帧的功能,通路退出时需要先退出pipe再停止灌raw;否则可能出现停止灌raw瞬间,自产生时序产生的黑帧提前送后端,导致画面异常。
- dev自产生时序进行wdr模式灌raw时,wdr模式自适应为帧模式,不支持使用wdr卷绕功能,否则可能会导致画面分层异常。
【举例】
无。
【相关主题】
ss_mpi_vi_disable_dev_send_frame
ss_mpi_vi_disable_dev_send_frame
【描述】
禁用设备送帧功能。
【语法】
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持该接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vi_enable_dev_send_frame
ss_mpi_vi_send_dev_frame
【描述】
配置设备送帧的帧信息。
【语法】
td_s32 ss_mpi_vi_send_dev_frame(ot_vi_dev vi_dev, const ot_video_frame_info *frame_info, td_s32 milli_sec);
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持该接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 使用本接口时,需先调用ss_mpi_vi_enable_dev_send_frame使能送帧。
- WDR模式下,需依次调用该接口输入长、中、短帧,确保要求与vc_num的顺序一致。
【举例】
无。
【相关主题】
ss_mpi_vi_enable_dev_send_frame
ss_mpi_vi_set_dev_timing_attr
【描述】
设置自产生时序属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- 使用本接口前,需先配置DEV属性,并使能设备,否则返回失败。
- 使用自产生时序功能灌RAW时,需配置DEV的宽高与RAW文件的宽高保持一致。
- 使能自产生时序后,若不灌RAW,则无图像显示。
- 使能自产生时序后,从DEV灌RAW后VI输出帧率由配置自产生时序产生的有效帧率决定。
- DEV配置X2速率时,使能自产生时序会导致时序异常。
【举例】
无。
【相关主题】
ss_mpi_vi_get_dev_timing_attr
【描述】
获取自产生时序属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h 、ss_mpi_vi.h
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_dev_data_attr
【描述】
设置设备自产生数据属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
使用本接口前,需先配置DEV属性,并使能设备,否则返回失败。
【举例】
无。
【相关主题】
ss_mpi_vi_get_dev_data_attr
【描述】
获取设备自产生数据属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vi_bind
【描述】
一对一绑定Dev和Pipe。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 必须先使能VI设备后才能绑定物理PIPE。
- 不支持动态绑定。
- 不支持绑定已经创建的PIPE。
- 一个设备只能同时绑定一种类型pipe(RAW pipe或者YUV pipe),例如Hi3519DV500不支持dev0同时绑定pipe0与pipe4。
【举例】
无。
【相关主题】
ss_mpi_vi_unbind
【描述】
一对一解绑定Dev和Pipe。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
必须先销毁物理PIPE再解绑定,否则返回失败。
【举例】
无。
【相关主题】
ss_mpi_vi_get_bind_by_dev
【描述】
获取与Dev绑定的Pipe。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DEV_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vi_get_bind_by_pipe
【描述】
获取与Pipe绑定的Dev。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)。 |
||
|
取值范围:[0, OT_VI_MAX_DEV_NUM)。 |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vi_set_wdr_fusion_grp_attr
【描述】
设置wdr合成组的属性。
【语法】
td_s32 ss_mpi_vi_set_wdr_fusion_grp_attr(ot_vi_grp fusion_grp, const ot_vi_wdr_fusion_grp_attr *grp_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_WDR_FUSION_GRP_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610_10B 默认频点较低,若需要接入WDR模式,需要修改宏值“HI3516CV610_10B_WDR”,详见《SYS_CONFIG 配置指南》。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- 使用本接口,需先调用DEV和PIPE绑定接口,且grp_attr中的pipe id都必须是与同一个Dev绑定的,虚拟pipe除外;支持虚拟pipe设置wdr组属性,通过ss_mpi_vi_send_pipe_raw接口做虚拟pipeWDR融合功能。
- 本接口需要在创建pipe前调用。
- 本接口支持更新grp_attr的pipe_id,如WDR模式和线性模式的切换,但不支持同一个pipe_id绑定到两个grp_attr。
- WDR合成组的pipe_id不能重复。
- WDR模式下主pipe默认为pipe id最小的pipe,例如,wdr合成组pipe id为2、1、3,主pipe为pipe1;若配置pipe_reverse为TRUE,则主pipe为pipe_id最大的pipe,即pipe3。
- pipe_reverse为TRUE仅支持行模式WDR以及VI离线模式。
- pipe_reverse需要wdr多路行差大于1ms,否则可能出现同时响应导致丢帧。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_wdr_fusion_grp_attr
【描述】
获取wdr合成组的属性。
【语法】
td_s32 ss_mpi_vi_get_wdr_fusion_grp_attr(ot_vi_grp fusion_grp, ot_vi_wdr_fusion_grp_attr *grp_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_WDR_FUSION_GRP_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
本接口需要在设置WDR GROUP后调用。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_distribute_grp_attr
【描述】
设置分发组的属性。
【语法】
td_s32 ss_mpi_vi_set_distribute_grp_attr(ot_vi_grp distribute_grp, const ot_vi_distribute_grp_attr *distribute_grp_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_DISTRIBUTE_GRP_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
仅Hi3516CV610支持。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- 本接口需要在创建pipe前调用。
- PIPE处于离线非卷绕模式,不支持WDR模式下使能分发属性。
- 分发组的pipe_id[0]必须是物理pipe,pipe_id[1]必须是虚拟pipe,且组0和组1的pipe号不能相同。
- 分发组内的两个pipe分辨率必须保持一致。
- 本接口使能分发组属性后不能再次调用使能,必须去使能后才能重新配置。
- 使用分发属性时,不能在媒体业务启动后调用ss_mpi_sys_init_pts_base、ss_mpi_sys_sync_pts接口修改时间戳。
- 使能分发属性后,不支持配置联合帧控。
- 使能分发属性后,支持静态ISP、MIPIRX裁剪,但是不支持动态裁剪。
- 使能分发属性后采集功能配置(pipe_attr)以主pipe为主,从pipe配置不生效,部分功能受限,详细限制见表1。
表 1 部分功能限制差异表
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_distribute_grp_attr
【描述】
获取分发组的属性。
【语法】
td_s32 ss_mpi_vi_get_distribute_grp_attr(ot_vi_grp distribute_grp, ot_vi_distribute_grp_attr *distribute_grp_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_DISTRIBUTE_GRP_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
仅Hi3516CV610支持。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
本接口需要在设置分发组属性后调用。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_create_pipe
【描述】
创建一个VI PIPE。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 物理PIPE属性中的size、pixel_format等必须与前端进入VI的时序设置保持一致,否则会出现错误。
- 不支持重复创建。
- 当VI离线且输入图像大于行buffer时,Hi3519DV500不支持压缩,Hi3516CV610不支持帧压缩但是支持行压缩。
- WDR模式下需要创建多个物理PIPE绑定到同一个开了WDR的设备上,当进行切换时,需要把所有绑定到该设备的物理PIPE销毁再重建。不能使用上次使用过而未销毁的物理PIPE,否则可能造成错误。
【举例】
无。
【相关主题】
ss_mpi_vi_destroy_pipe
【描述】
销毁一个VI PIPE。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- 使用本接口前,需先调用ss_mpi_vi_stop_pipe(vi_pipe)停止PIPE,否则提示失败。
- 在未创建PIPE或重复销毁PIPE时,调用本接口,不会失败。
【举例】
无。
【相关主题】
ss_mpi_vi_set_pipe_attr
【描述】
设置VI PIPE的属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建
- PIPE属性必须合法,其中部分静态属性不可动态设置,具体请参见ot_vi_pipe_attr。
- 当配置为OT_VI_PIPE_BYPASS_BE时,VI 通道类功能(如mirror/flip)不生效。
- 当配置OT_COMPRESS_MODE_FRAME时,PIPE低延时、提前上报属性等功能不能使用。
【举例】
无。
【相关主题】
无
ss_mpi_vi_get_pipe_attr
【描述】
获取VI PIPE的属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
PIPE必须已创建。
【举例】
无
【相关主题】
无
ss_mpi_vi_start_pipe
【描述】
启用VI PIPE。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建
- 重复调用该函数设置同一个PIPE返回成功。
【举例】
无。
【相关主题】
ss_mpi_vi_stop_pipe
【描述】
禁用VI PIPE。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须已创建。
- 重复调用该函数设置同一个PIPE返回成功。
- 在线WDR模式下,退出pipe需先退出主pipe,再退出其他pipe,否则主pipe在从pipe stop后缺少数据输入,可能会有异常报错。
【举例】
无。
【相关主题】
ss_mpi_vi_set_pipe_buf_wrap_attr
【描述】
设置VI PIPE的离线卷绕属性。
【语法】
td_s32 ss_mpi_vi_set_pipe_buf_wrap_attr(ot_vi_pipe vi_pipe, const ot_vi_pipe_buf_wrap_attr *wrap_attr)
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3519DV500不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 必须在PIPE创建之前调用。
- PIPE处于离线模式。
- 开启卷绕后不能动态修改PIPE压缩属性、像素格式、帧率控制。
- 双路接入或者一路dev绑定两个pipe时,不支持一路开启卷绕、一路关闭卷绕。
- 其他卷绕使用限制如表1所示。
- 双路sensor从模式的配置步骤详见《性能╱带宽╱延时╱内存调优指南》“双路离线卷绕编码场景”章节。
表 1 卷绕功能与其他VI子功能限制
【举例】
无
【相关主题】
无
ss_mpi_vi_get_pipe_buf_wrap_attr
【描述】
获取VI PIPE的离线卷绕属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3519DV500不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
PIPE处于线性离线模式。
【举例】
无
【相关主题】
无
ss_mpi_vi_set_pipe_3dnr_attr
【描述】
设置VI PIPE的3DNR属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM)。 |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- PIPE 3DNR属性必须合法,其中部分静态属性不可动态设置,具体请参见ot_3dnr_attr。
- 设置本接口前应先设置通道属性。
- Hi3519DV500调用接口时应先通过ss_mpi_sys_set_3dnr_pos(请参考“系统控制”章节)接口设置3DNR位置为 OT_3DNR_POS_VI,Hi3516CV610不支持ss_mpi_sys_set_3dnr_pos接口。
- WDR模式从PIPE 不支持调用本接口。
【举例】
无
【相关主题】
无
ss_mpi_vi_get_pipe_3dnr_attr
【描述】
获取VI PIPE 3DNR的属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
-
PIPE必须已创建。
-
Hi3519DV500调用接口时应先通过ss_mpi_sys_set_3dnr_pos(请参考“系统控制”章节)接口设置3DNR位置为 OT_3DNR_POS_VI,Hi3516CV610不支持ss_mpi_sys_set_3dnr_pos接口。
- WDR模式从PIPE 不支持调用本接口。
【举例】
无
【相关主题】
ss_mpi_vi_set_pipe_3dnr_param
【描述】
设置VI PIPE的3DNR参数。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- PIPE 3DNR参数必须合法,其中部分静态属性不可动态设置,具体请参见ot_3dnr_param。
- Hi3519DV500调用接口时应先通过ss_mpi_sys_set_3dnr_pos接口(请参考“系统控制”章节)设置3DNR位置为 OT_3DNR_POS_VI。
- Hi3516CV610不支持ss_mpi_sys_set_3dnr_pos接口。
- WDR模式从PIPE 不支持调用本接口。
【举例】
无
【相关主题】
无
ss_mpi_vi_get_pipe_3dnr_param
【描述】
获取VI PIPE 3DNR的参数。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
-
PIPE必须已创建。
-
Hi3519DV500调用接口时应先通过ss_mpi_sys_set_3dnr_pos接口(请参考“系统控制”章节)设置3DNR位置为 OT_3DNR_POS_VI。
-
Hi3516CV610不支持ss_mpi_sys_set_3dnr_pos接口(请参考系统控制章节)。
-
WDR模式从PIPE 不支持调用本接口。
【举例】
无
【相关主题】
ss_mpi_vi_set_pipe_pre_crop
【描述】
设置VI 物理PIPE输入端的裁剪功能属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_video.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 本接口需在Start Pipe前配置,启动PIPE后,不可调用。
- crop_info.rect.x+width需大于等于pipe_attr.size.width,且需小于等于DEV输出的宽度,高度同理。
- Crop属性的x/y需2对齐,宽高需4对齐。
- Crop属性的x/y不支持负数。
- 配置pre_crop后,需配置ISP的PUB属性小于或者等于PreCrop的宽高。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_pipe_pre_crop
【描述】
获取VI 物理PIPE输入端的裁剪功能属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_video.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_pipe_post_crop
【描述】
设置VI 物理PIPE输出端的裁剪功能属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_video.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- VI离线VPSS离线、VI离线VPSS在线时,不支持本接口。
- Crop_info.rect.x+width需小于等于pipe_attr.size.width,且裁剪宽度需要大于等于32;高度同理。
- 支持动态配置pipe post crop属性。
- Crop属性的x/y需2对齐,宽高需4对齐。
- Crop属性的x/y不支持负数。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_pipe_post_crop
【描述】
获取VI 物理PIPE输出端的裁剪功能属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_video.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- VI离线VPSS离线、VI离线VPSS在线时,不支持本接口。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_pipe_frame_dump_attr
【描述】
设置VI 物理PIPE dump图像帧属性。
【语法】
td_s32 ss_mpi_vi_set_pipe_frame_dump_attr(ot_vi_pipe vi_pipe, const ot_vi_frame_dump_attr *dump_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)。 |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 需要dump裁剪后的图像,可以在dump前设置pipe的裁剪。
- 需要dump压缩或者非压图像,可以在dump前设置pipe的属性以改变压缩类型。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_pipe_frame_dump_attr
【描述】
获取VI 物理PIPE dump图像帧属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)。 |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须已创建。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_pipe_frame
【描述】
获取VI物理PIPE图像帧。
【语法】
td_s32 ss_mpi_vi_get_pipe_frame(ot_vi_pipe vi_pipe, ot_video_frame_info *frame_info, td_s32 milli_sec);
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须已创建。
- 调用ss_mpi_vi_set_pipe_frame_dump_attr设置dump属性、使能dump、设置depth,否则获取不到帧数据。
- 虚拟PIPE不支持。
- PIPE做AIBNR功能时,调用本接口获取的图像帧为AIBNR处理前的图像帧数据;若需获取经过AIBNR处理后的图像帧数据,可调用AIBNR捞帧接口ss_mpi_aibnr_get_output_frame,具体描述请参考《AIISP开发参考》。
【举例】
无
【相关主题】
ss_mpi_vi_release_pipe_frame
【描述】
释放VI 物理PIPE的图像帧。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- 本接口调用次数需与ss_mpi_vi_get_pipe_frame匹配使用,释放次数过多则返回报错。
- 用户必须保证frame_info结构中的信息与获取时一致,否则可能造成释放不成功。
【举例】
无。
【相关主题】
ss_mpi_vi_set_pipe_private_data_dump_attr
【描述】
设置VI物理PIPE dump私有数据的属性。
【语法】
td_s32 ss_mpi_vi_set_pipe_private_data_dump_attr(ot_vi_pipe vi_pipe, const ot_vi_private_data_dump_attr *dump_attr);
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 仅pipe0,1支持private data。
- private data使用公共VB,需要准备好公共VB池。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_pipe_private_data_dump_attr
【描述】
获取VI物理PIPE dump私有数据的属性。
【语法】
td_s32 ss_mpi_vi_get_pipe_private_data_dump_attr(ot_vi_pipe vi_pipe, ot_vi_private_data_dump_attr *dump_attr);
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 仅pipe0,1支持private data。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_pipe_private_data
【描述】
获取VI物理PIPE的私有数据。
【语法】
td_s32 ss_mpi_vi_get_pipe_private_data(ot_vi_pipe vi_pipe, ot_vi_private_data_info *data_info, td_s32 milli_sec);
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须已创建。
- 调用ss_mpi_vi_set_pipe_private_data_dump_attr设置dump属性、使能dump、设置depth,否则获取不到私有数据。
- 本接口不支持使用select模式获取帧数据。
- 仅pipe0,1支持private data。
【举例】
无
【相关主题】
ss_mpi_vi_release_pipe_private_data
ss_mpi_vi_release_pipe_private_data
【描述】
释放VI PIPE的私有数据。
【语法】
td_s32 ss_mpi_vi_release_pipe_private_data(ot_vi_pipe vi_pipe, const ot_vi_private_data_info *data_info);
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- 本接口调用次数需与ss_mpi_vi_get_pipe_private_data匹配使用,释放次数过多则返回报错。
- 用户必须保证data_info结构中的信息与获取时一致,否则可能造成释放不成功。
- 仅pipe0,1支持private data。
【举例】
无。
【相关主题】
ss_mpi_vi_get_pipe_private_data
ss_mpi_vi_set_pipe_frame_source
【描述】
设置VI PIPE数据的来源。
【语法】
td_s32 ss_mpi_vi_set_pipe_frame_source(ot_vi_pipe vi_pipe, const ot_vi_pipe_frame_source frame_source);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须已创建。
- 只支持VI离线模式。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_pipe_frame_source
【描述】
获取VI PIPE数据的来源。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须已创建。
- 只支持VI离线模式。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_pipe_param
【描述】
设置PIPE参数。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须已创建。
- 请务必先调用ss_mpi_vi_get_pipe_param获取当前参数,再进行设置操作。
【举例】
无。
【相关主题】
ss_mpi_vi_get_pipe_param
【描述】
获取PIPE参数。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
PIPE必须已创建。
【举例】
无。
【相关主题】
ss_mpi_vi_set_pipe_bnr_buf_num
【描述】
设置VI PIPE bayernr buffer个数。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- 必须在pipe创建前使用,pipe创建后不可更改。
- 本接口默认可不调用,buffer个数默认值为 2。
- AIDRC、AI3DNR场景需要根据缓存需要调大buffer个数,建议设置为3个以上;buffer个数不够logmpp会报错提示,影响BayerNR参考效果。
【举例】
无。
【相关主题】
ss_mpi_vi_get_pipe_bnr_buf_num
ss_mpi_vi_get_pipe_bnr_buf_num
【描述】
获取VI PIPE bayernr buffer个数。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
无。
【举例】
无。
【相关主题】
ss_mpi_vi_set_pipe_bnr_buf_num
ss_mpi_vi_send_pipe_yuv
【描述】
通过VI PIPE发送YUV数据。
【语法】
td_s32 ss_mpi_vi_send_pipe_yuv(ot_vi_pipe vi_pipe, const ot_video_frame_info *frame_info, td_s32 milli_sec);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须已创建且启动。
- 送YUV首先需要通过ss_mpi_vi_set_pipe_frame_source来设置PIPE的数据来源为OT_VI_PIPE_FRAME_SOURCE_USER。
- YUV数据的宽高必须与PIPE属性的size的宽高保持一致。
- 送下来的YUV帧信息必须为真实有效的VB。
- YUV数据像素格式必须与PIPE属性的像素格式保持一致
- YUV数据field必须为OT_VIDEO_FIELD_FRAME。
- YUV数据video_format必须为OT_VIDEO_FORMAT_LINEAR。
- YUV数据compress_mode必须为非压OT_COMPRESS_MODE_NONE。
- YUV数据动态范围dynamic_range必须为OT_DYNAMIC_RANGE_SDR8。YUV数据色域必须为合法值[OT_COLOR_GAMUT_BT601,OT_COLOR_GAMUT_BUTT)。
- WDR模式不支持本接口。
- 从BE送YUV时,来自SENSOR的数据不会送给BE处理,BE只会处理用户送下来的帧数据。
- VI在线VPSS在线模式、VI在线VPSS离线模式不支持本接口。
- 若frame_info中的帧信息标志位为OT_FRAME_FLAG_USER_SEND_DISCARD,调用此接口发送的该帧经VI处理后不写出到后端。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_send_pipe_raw
【描述】
通过VI PIPE发送RAW数据。
【语法】
td_s32 ss_mpi_vi_send_pipe_raw(ot_vi_pipe vi_pipe, const ot_video_frame_info *frame_info[], td_u32 frame_num, td_s32 milli_sec);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须已创建且启动。
- vi_pipe必须为wdr融合的主pipe号。
- 送RAW首先需要通过ss_mpi_vi_set_pipe_frame_source来设置PIPE的数据来源为OT_VI_PIPE_FRAME_SOURCE_USER。
- 送一帧处理一帧,不会循环处理。
- WDR的所有PIPE为离线模式,每个PIPE的RAW存放的顺序必须是短中长帧的顺序,目的是保证长短曝光帧的顺序正确,每个PIPE的RAW的属性(宽高,像素格式,压缩等等)要保持一致。
- PIPE属性的IspBypass必须为TD_FALSE。
- 送下来的RAW帧信息必须为真实有效的VB。
- RAW数据像素格式必须与PIPE属性的像素格式保持一致。
- RAW数据field必须为OT_VIDEO_FIELD_FRAME。
- RAW数据video_format必须为OT_VIDEO_FORMAT_LINEAR。
- RAW数据compress_mode必须为OT_COMPRESS_MODE_NONE、OT_COMPRESS_MODE_LINE、OT_COMPRESS_MODE_FRAME。
- RAW数据动态范围dynamic_range必须为OT_DYNAMIC_RANGE_SDR8。RAW数据色域必须为合法值[OT_COLOR_GAMUT_BT601,OT_COLOR_GAMUT_BUTT)。
- VI在线VPSS在线模式、VI在线VPSS离线模式不支持本接口。
- 若frame_info中的帧信息标志位为OT_FRAME_FLAG_USER_SEND_DISCARD,调用此接口发送的该帧经VI处理后不写出到后端。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_query_pipe_status
【描述】
查询VI PIPE状态。
【语法】
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- 当PIPE处于VI在线VPSS在线模式,VI在线VPSS离线模式时,接口只能获取使能开关、中断数量和宽高信息。
- PIPE必须已创建。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_enable_pipe_interrupt
【描述】
启动VI 物理PIPE中断。
【语法】
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须start。
- 当PIPE处于VI在线,VPSS在线模式,不支持该接口。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
ss_mpi_vi_disable_pipe_interrupt
ss_mpi_vi_disable_pipe_interrupt
【描述】
禁用VI 物理PIPE中断。
【语法】
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- PIPE必须start。
- 当PIPE处于VI在线,VPSS在线模式,不支持该接口。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
ss_mpi_vi_enable_pipe_interrupt
ss_mpi_vi_set_pipe_vc_number
【描述】
设置VI 物理PIPE对接前端sensor或者AD的VC号。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_VC_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ss_mpi_vi.h
【注意】
- 必须在PIPE创建后,使能之前调用。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_pipe_vc_number
【描述】
获取VI 物理PIPE对接前端sensor或者AD的VC号。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ss_mpi_vi.h
【注意】
- 必须在PIPE创建后调用。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_pipe_low_delay
【描述】
设置VI PIPE低延时属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3519DV500 PIPE低延时没有one_buf功能,one_buf_en配置不生效。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 只有VI离线模式下支持该功能。
- PIPE低延时与PIPE帧压缩冲突,不能同时使用。
- PIPE低延时与分块行压缩冲突,不能同时使用。
- WDR离线pipe不支持配置PIPE低延时,建议使用在线WDR模式。
- 离线多路时,开启多路PIPE低延时会影响系统性能,不建议开启多路PIPE低延时。
- 不支持与AIBNR同时开启。
- Hi3516CV610支持低延时one_buffer功能,使能one_buf_en后有以下使用约束:
- 仅支持分块非压缩。
- 配置one_buffer功能,只能在create pipe后,start pipe前配置。
- 仅支持单路低延时one_buffer,其余采集路或者用户送图路不可经过BE处理。
- 低延时行号设置过大会造成图像花屏,该值必须小于等于proc信息中one_buf_max_line,详见“Proc调试信息”章节。
- 低延时行号设置过小会造成BE的处理时间变长,如果处于VI离线VPSS在线工作模式,也会造成VPSS的处理时间变长。因此,在保证不花屏的前提下配置合理的低延时行号,可以提升系统的整体性能。
- 使能低延时one_buffer功能后使用私有VB,调用ss_mpi_vi_set_pipe_vb_src/ss_mpi_vi_get_pipe_vb_src、ss_mpi_vi_attach_pipe_vb_pool/ss_mpi_vi_detach_pipe_vb_pool接口可成功设置VB属性,但VB轮转时仍使用私有VB,即绑定VB池功能不生效。
- 不建议开启early、early_end模式,one_buffer模式下这些模式消耗中断资源且没有内存收益。
- 不支持其他PIPE送帧处理。
- 不支持从PIPE处获取帧及释放帧。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_pipe_low_delay
【描述】
获取VI PIPE低延时属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 只有VI离线模式下支持该功能。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_pipe_frame_interrupt_attr
【描述】
设置VI PIPE上报中断属性。
【语法】
td_s32 ss_mpi_vi_set_pipe_frame_interrupt_attr(ot_vi_pipe vi_pipe, const ot_frame_interrupt_attr *interrupt_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已经创建。
- 本接口必须在START PIPE前调用。
- 仅支持OT_FRAME_INTERRUPT_START、OT_FRAME_INTERRUPT_EARLY和OT_FRAME_INTERRUPT_EARLY_END三种类型。
- early_line用于设置VI硬件采集多少行后上报延时中断。
-
调用本接口用于节省内存占用:
- 使用START模式时,VI驱动正常采集,没有省内存效果;
- 使用EARLY模式时,可通过调大early_line节省buffer占用时长,达到省内存的效果;
- early_line设置越大,省一帧内存的概率越大,但early_line调至接近高度时,可能会出现配置跨帧导致的效果异常或者丢帧问题,建议early_line配置为采集高度-100;同时,early模式下VI采集中断响应数会增加一倍左右;
- 使用EARLY_END模式时,配置early_line的效果同early模式;同时VI驱动会在采集END中断提前将帧信息送出,相比early模式更省内存,且减少了时序后消隐区的延时;early_end模式下VI采集中断响应数会增加两倍左右。
- 单路采集时建议使用early模式+低延时模式,替代early_end模式,可起到即省内存,又更多的降低通路延时的作用。
-
在线WDR模式下,离线pipe不支持使用本接口。
- 离线WDR模式下配置early_end模式,由于改变了组帧时机,需保证多路pipe同时配置为early_end,否则可能会出现错帧融合的现象。
【举例】
无。
【相关主题】
ss_mpi_vi_get_pipe_frame_interrupt_attr
ss_mpi_vi_get_pipe_frame_interrupt_attr
【描述】
获取VI PIPE上报中断属性。
【语法】
td_s32 ss_mpi_vi_get_pipe_frame_interrupt_attr(ot_vi_pipe vi_pipe, ot_frame_interrupt_attr *interrupt_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 默认为OT_FRAME_INTERRUPT_START模式,延时行号为0;pipe销毁后会将中断属性重置为默认状态。
【举例】
无。
【相关主题】
ss_mpi_vi_set_pipe_frame_interrupt_attr
ss_mpi_vi_get_pipe_compress_param
【描述】
获取VI物理 PIPE的RAW压缩参数。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)。 |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 物理PIPE必须已创建。
- 若物理PIPE是非压,则返回失败。
- 虚拟PIPE不支持。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_pipe_user_pic
【描述】
设置用户图片,作为无视频信号时的插入图片。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 只支持离线PIPE。
- WDR模式下从pipe不支持设置用户图片。
- 此接口只支持YUV图像模式,纯色模式需要用户分配VB调用VGS打COVER实现。
- 设置VI用户图片,用于将VI通道输出的视频帧图像修改为用户配置的指定YUV图像数据,而不是codec的视频数据;此接口需要与ss_mpi_vi_enable_pipe_user_pic、ss_mpi_vi_disable_pipe_user_pic配合使用。
- 用户图片的帧率依赖于PIPE属性里面的目标帧率配置,如果PIPE属性的目标帧率设置成15帧,这个PIPE的用户图片的帧率则为15帧,通道帧率则根据通道属性的帧率来确定。如果PIPE属性的目标帧率设置成-1,用户图片的帧率则为30帧。当前端有时序时,用户图片的帧率由前端时序帧率和目标帧率配置共同决定。
- 设置完用户图片后,即可调用ss_mpi_vi_enable_pipe_user_pic接口对指定VI PIPE启用插入用户图片,此时VI PIPE的通道输出的数据即为所配置的图片YUV数据;一般用于视频信号丢失时,VI PIPE的通道输出NoVideo图片。
- 配置的用户图片的宽高必须与VI PIPE大小相一致。
- 用户图片的视频帧信息结构中,需要设置图片的宽度、高度、行间隔、YUV格式以及Y分量和C分量数据的物理地址;可以从MPP公共缓冲池中获取一块相应大小的视频缓存块,从缓存块信息中得到存放YUV数据的物理地址,然后将物理地址映射到用户空间,即可对这块内存进行YUV数据的填充操作;填充数据时需要遵循先存Y分量数据,再存UV分量间插数据的存储顺序(小端字节序先V后U)。
- VI模块在启用插入用户图片时,会直接使用设置的用户图片帧信息中的物理地址,因此设置完用户图片后,不应该释放或销毁其视频缓存块,除非确认不再使用。可以通过再次调用此接口设置另外一块 Video Buffer以修改图片信息。
- 此功能与PIPE 灌图功能互斥;若开启用户图片的同时,设置frame_source为user进行PIPE灌图,则实际输出的为pipe灌图数据。
- 图像模式送下来的YUV帧信息必须为真实有效的VB。
- 图像模式YUV数据像素格式支持OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420、OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422、OT_PIXEL_FORMAT_YUV_400。
- 图像模式YUV数据像素格式需与CHN输出格式保持一致,若设置YUV400图片,VI CHN输出格式为SP420,显示效果会异常。
- 图像模式YUV数据field必须为OT_VIDEO_FIELD_FRAME。
- 图像模式YUV数据video_format必须为OT_VIDEO_FORMAT_LINEAR。
- 图像模式YUV数据compress_mode必须为非压缩OT_COMPRESS_MODE_NONE。
- 图像模式YUV数据动态范围dynamic_range必须为OT_DYNAMIC_RANGE_SDR8。
- 图像模式YUV数据色域必须为合法值[OT_COLOR_GAMUT_BT601,OT_COLOR_GAMUT_BUTT)。
- 若user_pic_info中的帧信息标志位为OT_FRAME_FLAG_USER_SEND_DISCARD,调用此接口发送的该帧经VI处理后不写出到后端。
【相关主题】
ss_mpi_vi_enable_pipe_user_pic
【描述】
启用VI PIPE插入用户图片。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 只支持离线PIPE。
- 启用插入用户图片之前,需要先设置用户图片帧信息。
- 启用插入用户图片之后,当前VI PIPE的通道即输出配置的用户图片帧数据。
- PIPE必须已创建。
- 此接口可以重复调用。
- 当前端时序不稳定或者帧率较低时,需要通过ss_mpi_vi_set_pipe_attr接口设置帧率控制使得用户图片帧率和前端时序帧率保持一致(src_frame_rate=dst_frame_rate=前端时序帧率),否则开启/关闭用户图片时可能会出现PTS和Timeref回退一两帧的情况。
【举例】
无。
【相关主题】
ss_mpi_vi_disable_pipe_user_pic
【描述】
禁用VI PIPE插入用户图片。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
- 只支持离线PIPE。
- VI通道不再需要输出用户图片时,应该调用此接口以恢复输出ADC的原始视频数据。
- 此接口可以重复调用。
- PIPE必须已创建。
【举例】
无。
【相关主题】
ss_mpi_vi_set_pipe_vb_src
【描述】
设置VI PIPE的VB来源。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 本接口需要在创建PIPE之后调用。
- 支持动态配置vb来源。
- vb来源只能设置为OT_VB_SRC_COMMON,OT_VB_SRC_USER。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_pipe_vb_src
【描述】
获取VI PIPE的VB来源。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
PIPE必须已创建。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_attach_pipe_vb_pool
【描述】
将VI的PIPE绑定到某个视频缓存VB池中。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【需求】
- 头文件:ss_mpi_vi.h、ot_common_vi.h
- 库文件:libss_mpi.a
【解决方案差异】
无。
【注意】
- PIPE必须已创建。
- 用户通常调用接口ss_mpi_vb_create_pool(参见“系统控制”章节)创建一个视频缓存VB池,再通过调用本接口把当前PIPE绑定到固定PoolId的VB池中。支持多个PIPE绑定到同一个VB池中。
- 当要切换当前组绑定的VB池时,只需再调一次本接口正确配置需要绑定到的VB池即可。
- vb_pool必须保证是已创建VB池的有效PoolId。
- 在调用ss_mpi_vi_detach_pipe_vb_pool后,销毁创建的VB之前,需要保证VB没有被VI后端绑定的模块使用,可以通过sleep或清除后端模块通道缓存的方式先把VB都释放,再销毁缓存VB池。
-
需要配合ss_mpi_vi_set_pipe_vb_src接口使用,可以动态切换。
- 使用绑定用户VB池的方式,必须设置vb_src为OT_VB_SRC_USER。
- 使用公共VB池的方式,必须设置vb_src为OT_VB_SRC_COMMON。
-
UserVB大小根据PIPE输出图像计算,具体计算公式参考ot_buffer.h的ot_common_get_pic_buf_cfg函数。
【举例】
无。
【相关主题】
ss_mpi_vi_detach_pipe_vb_pool
【描述】
将VI的PIPE从某个视频缓存VB池中解绑定。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
【返回值】
失败,其值为错误码。 |
【需求】
- 头文件:ss_mpi_vi.h、ot_common_vi.h
- 库文件:libss_mpi.a
【解决方案差异】
无。
【注意】
PIPE必须已创建。
【举例】
无。
【相关主题】
ss_mpi_vi_attach_aiisp_vb_pool
【描述】
将VI的AIISP算法绑定到某个视频缓存VB池中。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【需求】
- 头文件:ss_mpi_vi.h、ot_common_vi.h
- 库文件:libss_mpi.a
【解决方案差异】
无。
【注意】
- PIPE必须已创建。
- 用户通常调用接口ss_mpi_vb_create_pool(参见“系统控制”章节)创建一个视频缓存VB池,再通过调用本接口把当前PIPE的AIISP算法绑定到固定PoolId的VB池中。支持PIPE的AIISP算法多个绑定到同一个VB池中。
- 当要切换当前组绑定的VB池时,只需再调一次本接口正确配置需要绑定到的VB池即可。
- vb_pool必须保证是已创建VB池的有效PoolId。
- 在调用ss_mpi_vi_detach_pipe_vb_pool后,销毁创建的VB之前,需要保证VB没有被VI后端绑定的模块使用,可以通过sleep或清除后端模块通道缓存的方式先把VB都释放,再销毁缓存VB池。
- 无需调用设置VB SRC接口。
- UserVB大小根据AIISP算法处理图像计算,具体计算公式参考ot_buffer.h。
- 不同AIISP算法会有不同参数属性,请参见《AIISP开发参考》ot_aiisp_pool 定义。
- AIISP模式为AIBNR时,此接口与ss_mpi_vi_attach_pipe_vb_pool互斥,AIISP模式为AI3DNR(UV_net)时,此接口与ss_mpi_vi_attach_chn_vb_pool互斥。
- 不支持attach虚拟VB。
- 如需切换VB池,请先停止aiisp数据流,再执行attach。
- 如需切换AIISP类型,请先detach当前VB池,再执行attach。
- 不支持映射模式为cached的VB。
【举例】
无。
【相关主题】
ss_mpi_vi_detach_aiisp_vb_pool
ss_mpi_vi_detach_aiisp_vb_pool
【描述】
将VI的AIISP算法从某个视频缓存VB池中解绑定。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【需求】
- 头文件:ss_mpi_vi.h、ot_common_vi.h
- 库文件:libss_mpi.a
【解决方案差异】
无。
【注意】
PIPE必须已创建。
【举例】
无。
【相关主题】
ss_mpi_vi_attach_aiisp_vb_pool
ss_mpi_vi_set_pipe_online_clock
【描述】
设置VI在线PIPE处理时钟。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
头文件:ss_mpi_vi.h
【注意】
- 必须在PIPE创建后,start之前调用。
- 仅支持VI在线PIPE调用,即仅支持PIPE0在线时调用,其他PIPE不支持。
- 调用本接口会自适应刷新ISP0时钟,设置为当前像素速率接入下最省功耗的时钟,可通过proc信息查看刷新后的时钟配置;
- 每次设置VI_VPSS模式后,系统会自适应重置为sys_cfg内配置的默认时钟。
- 仅Hi3516CV610支持该接口。
【举例】
VI在线模式下,假设前级sensor输入速率为每lane 630Mbps速率,共2lane 10bit线性模式接入,此时可算出像素速率为 630Mbps/lane * 2lane / 10bit = 126M,此时将126M配置到本接口,系统会自适应配置ISP0时钟为148.5M。具体像素时钟计算方式可参考sample_vie实现, ISP0时钟档位可参考SoC用户指南。
【相关主题】
无。
ss_mpi_vi_get_pipe_fd
【描述】
获取VI PIPE文件描述符。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
【返回值】
【解决方案差异】
无。
【需求】
头文件:ss_mpi_vi.h
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_chn_attr
【描述】
设置VI通道属性。
【语法】
td_s32 ss_mpi_vi_set_chn_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_vi_chn_attr *chn_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
通道属性的各项配置限制如下:
-
目标图像大小size:
- 必须配置,且大小需要在VI支持的范围。
- 通道不支持缩放,通道size必须和pipe属性配置的size一致。
-
像素格式pixel_format:
- 输出像素格式支持semi-planar YVU420/semi-planar YVU422/YUV400和raw8/raw10/raw12/raw14/raw16格式。
- PIPE格式为semi-planar YUV时,通道输出格式不能为raw格式。
- PIPE格式为semi-planar YUV时,建议CHN格式与前级YUV格式保持一致,否则输出效果可能异常。
- 通道输出格式为raw格式时,不支持mirror/flip。
- 通道输出格式为raw格式时,不支持所有的通道后处理功能(例如:DIS)。
- 通道输出格式为raw格式时,需要关闭radial crop功能,radial crop不支持raw流处理,通路会有异常。
- VPSS在线时不支持配置为raw格式。
- 3DNR开启时,不能动态修改像素格式。
-
动态范围dynamic_range:
- DYNAMIC_RANGE_SDR8表示的是8bit数据,其余为10bit数据。
- VI只支持DYNAMIC_RANGE_SDR8。
- 色域信息由ISP的CSC控制。
-
视频数据格式video_format:
Hi3519DV500所有通道都支持OT_VIDEO_FORMAT_LINEAR、OT_VIDEO_FORMAT_TILE_32x4格式。
Hi3516CV610所有通道仅支持OT_VIDEO_FORMAT_LINEAR格式。
-
压缩模式compress_mode:
Hi3519DV500的压缩格式配置约束如下所述:
video_format为OT_VIDEO_FORMAT_LINEAR时,支持段压缩OT_COMPRESS_MODE_SEG、支持紧凑段压缩OT_COMPRESS_MODE_SEG_COMPACT、支持非压缩OT_COMPRESS_MODE_NONE。
video_format为OT_VIDEO_FORMAT_TILE_32x4时,支持TILE压缩OT_COMPRESS_MODE_TILE、支持非压缩OT_COMPRESS_MODE_NONE。
通道图像宽度超过4096不支持紧凑段压缩。
输出格式为raw格式时不支持压缩。
OT_VIDEO_FORMAT_TILE_32x4 格式非压缩时,仅支持SP420;
OT_VIDEO_FORMAT_TILE_32x4 格式压缩时,仅支持SP420和YUV400。
Hi3516CV610仅支持非压缩OT_COMPRESS_MODE_NONE.
-
帧率控制frame_rate_ctrl:
- 原始帧率src_frame_rate:如果不进行帧率控制,则该值设置为-1。
- 目标帧率dst_frame_rate:如果不进行帧率控制,则该值设置为-1,否则必须设置原始帧率src_frame_rate的值,且目标帧率必须小于或等于原始帧率。
-
PIPE必须已创建,否则会返回失败。
- 物理通道开启紧凑段压缩后,不支持做后处理功能,以及相关GDC处理功能。
- 通道FLIP使能与通道低延时功能互斥,不支持同时使用。
- 通道MIRROR和FLIP功能处于VI离线VPSS在线、VI在线VPSS在线工作模式时功能不生效。
- 通道图像宽度超过行buffer不支持MIRROR使能。
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_attr
【描述】
获取VI通道属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 通道属性需先设置后,才可获取。
【举例】
无。
【相关主题】
ss_mpi_vi_set_ext_chn_attr
【描述】
设置VI扩展通道属性。
【语法】
td_s32 ss_mpi_vi_set_ext_chn_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_vi_ext_chn_attr *ext_chn_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3519DV500不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 扩展通道的输入绑定源必须为物理通道。
- 扩展通道以绑定的方式连接物理通道,每个扩展通道最多绑定一个物理通道。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
- 扩展通道仅支持非压缩。
- 扩展通道的图像来源属性设置为OT_EXT_CHN_SRC_TYPE_HEAD(请参考”系统控制”章节)时,被绑定的物理通道不支持做CoverEX与OverlayEX处理,即使设置CoverEX/OverlayEX也不会生效。
- 扩展通道绑定的物理通道输出必须是YUV,否则输出异常。
【举例】
无。
【相关主题】
ss_mpi_vi_get_ext_chn_attr
【描述】
获取VI扩展通道属性。
【语法】
td_s32 ss_mpi_vi_get_ext_chn_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vi_ext_chn_attr *ext_chn_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3519DV500不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 扩展通道属性需先设置后,才可获取。
- VI在线VPSS在线模式、VI离线VPSS在线模式下不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_enable_chn
【描述】
启用VI通道。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 必须先设置通道属性。
- 可重复启用VI通道,不返回失败。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,启动VI通道不生效,直接返回成功。
【举例】
无。
【相关主题】
ss_mpi_vi_disable_chn
【描述】
禁用VI通道。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 可重复禁用VI通道,不返回失败。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,禁用VI通道不生效,直接返回成功。
【举例】
无。
【相关主题】
ss_mpi_vi_set_chn_crop
【描述】
设置VI通道裁剪功能属性。
【语法】
td_s32 ss_mpi_vi_set_chn_crop(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_vi_crop_info *crop_info);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 物理通道开启GME DIS后不支持剪裁,开启GYRO DIS后仅支持单次裁剪,不支持动态裁剪。
- vpss组上开启lut/stitch后,为防止这些功能的输入图像大小发生变化,不支持vi通道动态裁剪。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
- 通道开启压缩且图像宽度大于4096时,不支持本接口。
- 通道开启低延时时,crop_info裁剪的高度不能小于低延时行号。
- 当对扩展通道进行裁剪时,允许裁剪宽高大于通道宽高,此时最终裁剪区域为通道宽高。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_chn_crop
【描述】
获取VI通道裁剪功能属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_chn_dis_cfg
【描述】
设置VI通道的DIS配置信息。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 在DIS使能且scale为TRUE时,使用crop_ratio裁剪时,crop_ratio参数可以动态修改;使用crop_separate裁剪时,crop_separate参数可以成固定比例动态修改。其他情况要修改dis_cfg中参数时,必须先关闭DIS再修改参数,不可动态修改。
- 1路pipe只支持1路通道防抖。
- 最多支持4路陀螺仪或GME防抖。
- gyro_advance模式不支持与ldc_v2组合,开启gyro_advance时候有dis_ldc选项可选,此ldc是与陀螺仪搭配使用的。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_dis_cfg
【描述】
获取VI通道的DIS配置信息。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_set_chn_dis_attr
【描述】
设置VI通道的DIS属性。
【语法】
td_s32 ss_mpi_vi_set_chn_dis_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_dis_attr *dis_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 必须先使能VI通道和设置DIS 配置后,才能设置DIS属性。
- 当启用陀螺仪防抖或混合防抖时,需要初始化陀螺仪芯片,等待陀螺仪芯片输出稳定数据须耗时50ms以上。
- 1个PIPE只能使能一个通道的DIS功能。
- 使用DIS时需要调用ss_mpi_vb_set_supplement_cfg(请参考“系统控制”章节)接口添加VB的图像运动附加信息,对应的MASK为OT_VB_SUPPLEMENT_MOTION_DATA_MASK。
- DIS的实现是在VPSS中,必须过VPSS再输出,DIS才能生效。
- 使能DIS时,VI_CHN需设置压缩格式为非压缩OT_COMPRESS_MODE_NONE、TILE压缩OT_COMPRESS_MODE_TILE。
- 最多支持4路陀螺仪或GME防抖。
- 陀螺仪防抖场景可以开启通道crop功能,但不支持动态调整crop区域。
- 使能GME DIS后,不支持开启对应物理通道的Mirror和Flip功能。
- 使能GME DIS,对应的通道不能使能裁剪功能,如果要裁剪后的图像做DIS,建议在前端MIPI或者ISP做裁剪。
- DIS参数中scale=FALSE,使用GME DIS与VPSS组上rotation free、zme功能进行组合,DIS使能状态或scale状态改变时,需重新调用VPSS组上rotation free、zme相关接口设置属性,不支持动态修改。
- Gyro DIS与VPSS组上PMF、fov、spread、rotation、ldc、stitch、fisheye、zme功能互斥。
- GYRO_ADVANCE DIS与VPSS组上PMF、fov、fisheye、stitch、pre_lut功能互斥。GYRO_ADVANCE DIS与post_lut都开启时不支持其他GDC功能。
- 修改DIS配置或修改通道的size和dynamic_range属性,必须先关闭DIS。
- GME DIS不支持低延时,VI开启通道低延时再打开GME DIS,会将VI输出低延时自适应关闭。
- VI开启通道低延时且未开启Gyro DIS或GYRO_ADVANCE DIS时,检查到开启coverex,会将VI输出低延时自适应关闭。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
- DIS功能与VI_PIPE 3DNR功能互斥,使能DIS时若需使用3DNR功能,需在VPSS上开启3DNR。
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_dis_attr
【描述】
获取VI通道的DIS属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 建议先设置DIS属性后,再使用该接口。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_set_chn_dis_alg_attr
【描述】
设置VI通道的DIS算法属性。
【语法】
td_s32 ss_mpi_vi_set_chn_dis_alg_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_dis_alg_attr *dis_alg_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 必须先使能DIS 开关后,才能设置DIS算法属性。
- 1个PIPE只能使能一个通道的DIS功能。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
- 目前该接口只支持陀螺仪防抖时调用。
- 调用该接口进行查找偏移点坐标功能时,仅支持GYRO_ADVANCE模式。
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_dis_alg_attr
【描述】
获取VI通道的DIS属性。
【语法】
td_s32 ss_mpi_vi_get_chn_dis_alg_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_dis_alg_attr *dis_alg_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_set_chn_dis_alg_attr
ss_mpi_vi_set_chn_dis_param
【描述】
设置VI通道的DIS可选参数。
【语法】
td_s32 ss_mpi_vi_set_chn_dis_param(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_dis_param *dis_param);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
- 该接口为可选调用,可以调整GME和HYBRID模式下的防抖效果,不调用使用默认值。
- 参数只在GME和HYBRID模式下有效果,GYRO模式下无效。
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_dis_param
【描述】
获取VI通道的DIS的可选参数。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
- 参数只在GME模式下有效果,GYRO模式下无效。
【举例】
无。
【相关主题】
ss_mpi_vi_set_chn_rotation
【描述】
设置VI图像旋转属性。
【语法】
td_s32 ss_mpi_vi_set_chn_rotation(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_rotation_attr *rotation_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3519DV500不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 必须在设置通道属性后才能设置此属性。
- 支持非场输出的semi-planar 420和YUV400图像的旋转。
- 仅支持90度、180度、270度的旋转,不支持任意角度旋转和高精度任意角度旋转。
- 设置旋转后,物理通道输出的宽高可能会发生变化,但获取的通道属性中的通道宽高仍为用户设置值。比如:720p输入的图像,在旋转90度、270度时,实际输出的图像大小为720x1280,但ss_mpi_vi_get_chn_attr获取的宽高仍为1280x720。
- 开启固定角度旋转时,物理通道属性的压缩模式必须配置为非压缩。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_chn_rotation
【描述】
获取VI图像旋转属性。
【语法】
td_s32 ss_mpi_vi_get_chn_rotation(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_rotation_attr *rotation_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3519DV500不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- VI在线VPSS在线模式、VI离线VPSS在线模式下不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_set_chn_ldc_attr
【描述】
设置VI镜头畸变校正(LDC)属性。
【语法】
td_s32 ss_mpi_vi_set_chn_ldc_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_ldc_attr *ldc_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3519DV500不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 该接口必须在设置通道属性后调用。
- 仅支持非场输出的图像。
- 仅支持物理通道的LDC设置。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_ldc_attr
【描述】
获取VI镜头畸变校正(LDC)属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_dis_out_size
【描述】
获取VI通道的DIS生效后的图像宽高。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
- 必须先使能VI通道、设置DIS配置和DIS属性后再使用本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_frame
【描述】
从VI通道获取采集的图像。
【语法】
td_s32 ss_mpi_vi_get_chn_frame(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_video_frame_info *frame_info, td_s32 milli_sec);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 此接口可以获取指定VI通道的视频图像信息。图像信息主要包括:图像的宽度、高度、像素格式、时间戳以及YUV各分量的物理地址等等。
- 此接口需在通道已启用,且通道队列深度不为0,才能获取到图像。
- 支持多次获取后再释放,但建议获取和释放接口配对使用。
- 获取的物理地址信息来自MPP内部使用的Video Buffer,因此使用完之后,必须要调用ss_mpi_vi_release_chn_frame 接口释放其内存。
- phys_addr[0]和phys_addr[1]分别指向图像的亮度分量和色度分量的物理地址。
- 调用该接口获取图像,不会对后端绑定的模块有影响。
- 当milli_sec设为-1时,表示阻塞模式,程序一直等待,直到获取到图像才返回。如果milli_sec大于0时,表示超时模式,参数的单位是毫秒,指超时时间,在此时间内如果没有获取到图像,则超时返回。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_release_chn_frame
【描述】
释放一帧从VI通道获取的图像。
【语法】
td_s32 ss_mpi_vi_release_chn_frame(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_video_frame_info *frame_info);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 此接口必须与ss_mpi_vi_get_chn_frame配对使用。
- 用户必须保证frame_info结构中的信息与获取时一致,否则可能造成释放不成功。
【举例】
无。
【相关主题】
ss_mpi_vi_set_chn_low_delay
【描述】
设置VI通道低延时属性。
【语法】
td_s32 ss_mpi_vi_set_chn_low_delay(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_low_delay_info *low_delay_info);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 只有VI在线VPSS离线、VI离线VPSS离线模式下支持该功能。
- 低延时按最小延时的策略来做自适应。
- 当通道设置chn_crop时,低延时行号应小于通道crop的高度。
- chn低延时没有one_buf功能,one_buf_en配置不生效。
- 不支持与AI3DNR(UVNet)同时开启。
- chn后端绑定VI虚拟pipe时,低延时收益小。
- Hi3516CV610扩展通道低延时内部自适应关闭,设置后没有低延时效果。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_chn_low_delay
【描述】
获取VI通道低延时属性。
【语法】
td_s32 ss_mpi_vi_get_chn_low_delay(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_low_delay_info *low_delay_info);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 只有VI在线VPSS离线、VI离线VPSS离线模式下支持该功能。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_chn_align
【描述】
设置VI通道输出数据的行stride对齐。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM)。 |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- align为0时stride对齐使用自动模式,对齐要求跟随系统。
- align为非0时使用指定的stride对齐。
- 当align小于芯片要求的stride对齐时,系统分配buffer和计算stride还是以芯片要求stride对齐为准。
-
当align不等于芯片要求的stride对齐倍数时,系统分配buffer和计算stride向上对齐到芯片要求stride对齐的倍数。
例:align设置为48,芯片要求32对齐时,系统分配buffer和计算stride时使用64对齐。
-
拍照后处理算法输入的YUV数据stride需要128Bytes对齐,因此需要调用本接口配置VI输出的YUV数据stride对齐。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_align
【描述】
获取VI通道输出数据的行stride对齐。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_set_chn_fmu_mode
【描述】
设置VI通道FMU模式。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 仅支持在VI在线VPSS离线、VI离线VPSS离线模式下配置本接口,不配置本接口默认为OT_FMU_MODE_OFF模式。
- VI在线模式下,不支持配置OT_FMU_MODE_DIRECT模式,使用VI_VPSS全在线模式替换。
- FMU开启时,VI必须通过SYS绑定VPSS或MCF,且只允许该路VI输出通道绑定一路VPSS/MCF组,否则在往后级送帧时会报错。
- 不支持OT_FMU_MODE_WRAP模式。
- VI_OFFLINE模式且FMU开启时,VPSS grp帧控不生效,VI实际帧率受VPSS通道输出帧率影响。
- FMU开启时,chn属性depth必须为0。
- FMU模式配置需在enable_chn前配置,不支持使能通道后动态切换。
- FMU Direct +通道图像宽度>4096时,不支持VPSS侧通道0水平缩放。
- FMU Direct +通道图像宽度>4096时,不支持VPSS侧通道0压缩并且mirror输出。
表 1 FMU模式与VI通道功能限制
表 2 FMU模式与VPSS功能限制
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_fmu_mode
【描述】
获取VI通道FMU模式。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
PIPE必须已创建。
【举例】
无
【相关主题】
ss_mpi_vi_set_chn_vb_src
【描述】
设置VI通道使用VB的来源。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- VI在线VPSS在线、VI离线VPSS在线时,不支持本接口。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_chn_vb_src
【描述】
获取VI通道使用VB的来源。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM)。 |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM)。 |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- VI在线VPSS在线、VI离线VPSS在线时,不支持本接口。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_attach_chn_vb_pool
【描述】
将VI PIPE的通道绑定到某个视频缓存VB池中。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【需求】
- 头文件:ss_mpi_vi.h、ot_common_vi.h
- 库文件:libss_mpi.a
【解决方案差异】
无。
【注意】
- PIPE必须已创建。
- 用户通常调用接口ss_mpi_vb_create_pool(参见“系统控制”章节)创建一个视频缓存VB池,再通过调用本接口把当前CHN绑定到固定PoolId的VB池中。支持多个CHN绑定到同一个VB池中。
- 当要切换当前组绑定的VB池时,只需再调一次本接口,将正确配置绑定到所需VB池即可。
- vb_pool必须保证是已创建VB池的有效PoolId。
- 在调用ss_mpi_vi_detach_chn_vb_pool后,销毁创建的VB之前,需要保证VB没有被VI后端绑定的模块使用,可以通过sleep或清除后端模块通道缓存的方式先把VB都释放,再销毁缓存VB池。
-
需要配合ss_mpi_vi_set_chn_vb_src接口使用,可以动态切换。
- 使用绑定用户VB池的方式,必须设置vb_src为OT_VB_SRC_USER。
- 使用公共VB池的方式,必须设置vb_src为OT_VB_SRC_COMMON。
-
UserVB大小根据CHN输出图像计算,具体计算公式参考ot_buffer.h。
- VI在线VPSS在线、VI离线VPSS在线时,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_detach_chn_vb_pool
【描述】
将VI PIPE的通道从某个视频缓存VB池中解绑定。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
【返回值】
失败,其值为错误码。 |
【需求】
- 头文件:ss_mpi_vi.h、ot_common_vi.h
- 库文件:libss_mpi.a
【解决方案差异】
无。
【注意】
- PIPE必须已创建。
- VI在线VPSS在线、VI离线VPSS在线时,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_query_chn_status
【描述】
查询VI通道的状态。
【语法】
td_s32 ss_mpi_vi_query_chn_status(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vi_chn_status *chn_status);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h、ot_common_video.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- VI在线VPSS在线、VI离线VPSS在线时,不支持本接口。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_chn_fd
【描述】
获取VI通道文件描述符。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_CHN_NUM) |
【返回值】
【解决方案差异】
无。
【需求】
头文件:ss_mpi_vi.h
【注意】
无。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_stitch_grp_attr
【描述】
设置VI 的拼接组属性。
【语法】
td_s32 ss_mpi_vi_set_stitch_grp_attr(ot_vi_grp stitch_grp, const ot_vi_stitch_grp_attr *stitch_grp_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_STITCH_GRP_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 必须在PIPE创建之前设置VI拼接组属性。
- 拼接组属性中的stitch_en表示拼接组的使能,不允许重复设置为TD_TRUE,如果已经为TD_TRUE,重新设置拼接组属性,必须先设置为TD_FALSE,再重新设置。
- 拼接组属性的PIPE必须不重复。
- 拼接组的PIPE必须是相同的工作模式,比如都是VI离线,VPSS离线模式。
- 拼接的sensor时序必须保持同步,如果相差大于max_pts_gap,则会出现同步不上的现象。
- 当设置为同步模式的时候,拼接的sensor时序必须一致(同时上报帧起始),否则效果可能不一致。
- 当设置为同步模式的时候,拼接组的PIPE必须是相同的工作模式且必须是VI离线,VPSS离线,或者VI离线,VPSS在线。
- 使用送帧+isp_runonce做多pipe拼接时,需要调用者自己保证多帧间的同步;使用pipe送帧的场景下不支持拼接sync模式,会导致通路异常。
- 拼接sync模式下不支持各路dev 配置不同的中断源亲和性,会导致通路异常。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_stitch_grp_attr
【描述】
获取VI 的拼接组属性。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_STITCH_GRP_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
头文件:ot_common_vi.h、ss_mpi_vi.h
【注意】
必须先设置拼接组的属性才能使用本接口。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_mod_param
【描述】
设置VI模块参数。
【语法】
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 必须在所有VI设备设置,PIPE创建之前设置VI模块参数。
- VI控制是否丢帧,PIPE丢帧取决于PIPE是否有数据写出,如果有数据写出则丢帧策略有效,否则丢帧策略无效。
- 当PIPE处于VI在线VPSS在线时,由于VI通道无帧数据输出,因此VI通道丢帧失效。
- 暂不支持此接口。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_get_mod_param
【描述】
获取VI模块参数。
【语法】
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
无。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
暂不支持此接口。
【举例】
无。
【相关主题】
无。
ss_mpi_vi_set_pipe_psfm_attr
【描述】
设置伪单帧模式的配置属性。请参考《AD多路接入用户指南》第2章。
【解决方案差异】
Hi3516CV610不支持该接口。
【相关主题】
ss_mpi_vi_get_pipe_psfm_attr
【描述】
获取伪单帧模式的配置属性。请参考《AD多路接入用户指南》第2章。
【解决方案差异】
Hi3516CV610不支持该接口。
【相关主题】
ss_mpi_vi_enable_chn_motion_denoise
【描述】
启用VI通道的运动降噪。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 必须先使能VI通道。
- 需要和vpss 3dnr搭配使用,夜视场景效果更优,纹理更清晰。
- 不支持开启对应物理通道的Mirror和Flip功能,不支持开启dis功能。
- motion_denoise功能与vpss组合时,不支持vpss在线,不支持压缩。
- 使用motion_denoise功能与vpss组合时需要调用ss_mpi_vb_set_supplement_cfg(请参考“系统控制”章节)接口添加VB的图像运动附加信息,对应的MASK为OT_VB_SUPPLEMENT_MOTION_DATA_MASK。
- 使能motion_denoise时,VI_CHN需设置压缩格式为非压缩OT_COMPRESS_MODE_NONE、TILE压缩OT_COMPRESS_MODE_TILE、段压缩OT_COMPRESS_MODE_SEG、紧凑段压缩OT_COMPRESS_MODE_SEG_COMPACT 。
- 使能motion_denoise时,若开启vpss 3dnr,nr_type需要设置OT_NR_TYPE_VIDEO_NORM。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
- 使用motion_denoise功能与vpss组合时,若想要性能更好可以设置vpss模块参数:insmod ot_vpss.ko g_vpss_high_profile=1。
- 只支持YUV420、YVU420像素格式。
-
运动降噪功能开启的情况下,VPSS存在性能问题,VPSS默认频点为475M,帧率为4K@27,支持提频至500M (insmod ot_vpss.ko g_vpss_high_profile=1),同时将vpss读写优先级由5改为6(指今如下)帧率为4K@29。
提高vpss读写优先级指令:
- bspmm 0x11019b4c 0x10
- bspmm 0x11024300 0x64666705
- bspmm 0x11024310 0x64766705
【举例】
无。
【相关主题】
ss_mpi_vi_disable_chn_motion_denoise
ss_mpi_vi_disable_chn_motion_denoise
【描述】
禁用VI通道的运动降噪。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- 必须先使能VI通道。
- 需要和vpss 3dnr搭配使用。
【举例】
无。
【相关主题】
ss_mpi_vi_enable_chn_motion_denoise
ss_mpi_vi_set_chn_dis_wdr_attr
【描述】
设置VI通道的DIS WDR属性。
【语法】
td_s32 ss_mpi_vi_set_chn_dis_wdr_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_dis_wdr_attr *dis_wdr_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
- 参数只在GYRO模式下有效果,GME模式下无效。参数只在wdr_mode为2to1 wdr模式下有效果。
- 在fswdr_mode为OT_ISP_FSWDR_LONG_FRAME_MODE模式时固定匹配长帧,参数设置无效;fswdr_mode为OT_ISP_FSWDR_AUTO_LONG_FRAME_MODE模式时,若切换到了长帧模式,也会固定匹配长帧,此时参数设置无效。
- 该接口为可选调用,不调用使用默认值,开启WDR和GYRO_DIS后默认 match_frame 为长帧。
- 使用dis_wdr_attr功能时需要调用ss_mpi_vb_set_supplement_cfg(请参考“系统控制”章节)接口添加VB的图像运动附加信息,对应的MASK为OT_VB_SUPPLEMENT_MOTION_DATA_MASK。
- match_frame 参数含义:WDR模式为2TO1时,0为匹配短帧,1为匹配长帧。
- WDR模式的陀螺仪防抖主要针对匹配帧图像作防抖矫正,非匹配帧部分的图像防抖效果差于预期的陀螺仪防抖效果。
【举例】
无。
【相关主题】
ss_mpi_vi_get_chn_dis_wdr_attr
ss_mpi_vi_get_chn_dis_wdr_attr
【描述】
获取VI通道的DIS WDR属性。
【语法】
td_s32 ss_mpi_vi_get_chn_dis_wdr_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_dis_wdr_attr *dis_wdr_attr);
【参数】
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM) |
||
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3516CV610不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ot_common_dis.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建,否则会返回失败。
- VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。
- 参数只在GYRO模式下有效果,GME模式下无效。
【举例】
无。
【相关主题】
ss_mpi_vi_set_chn_dis_wdr_attr
ss_mpi_vi_distribute_one_frame
【描述】
用户向指定分发组的pipe发一帧。
【语法】
【参数】
|
取值范围:[0, OT_VI_MAX_DISTRIBUTE_GRP_NUM) |
||
|
取值范围:[0, OT_VI_MAX_PIPE_NUM) |
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3519DV500不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 调用ss_mpi_vi_distribute_one_frame必须先通过ss_mpi_vi_set_distribute_grp_attr设置分发组属性。
- 分发组相关的注意事项,参考设置分发组属性的接口ss_mpi_vi_set_distribute_grp_attr。
- KOL单帧模式下使用。
【举例】
无。
【相关主题】
ss_mpi_vi_set_distribute_grp_attr
ss_mpi_vi_get_pipe_3dnr_motion_info
【描述】
获取VI PIPE的3DNR运动信息。
【语法】
【参数】
【返回值】
失败,其值为错误码。 |
【解决方案差异】
Hi3519DV500不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- 调用本接口前应先设置3DNR属性,3DNR必须开启时域功能且nr_motion_depth应设置为[3,8]范围内的整数。
- 3DNR开启时域功能后的第一帧无法获取运动信息。
- 本接口获取到的是最新的运动信息。
- 调用本接口会占用缓存,应尽快调用ss_mpi_vi_release_pipe_3dnr_motion_info接口释放该缓存。占用数量达到nr_motion_depth-2时将无法继续获取运动信息。
【举例】
无。
【相关主题】
ss_mpi_vi_release_pipe_3dnr_motion_info
ss_mpi_vi_release_pipe_3dnr_motion_info
【描述】
释放VI PIPE的3DNR运动信息。
【语法】
【参数】
【返回值】
【解决方案差异】
Hi3519DV500不支持此接口。
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- 本接口输入的motion_info结构体内的数据应该和ss_mpi_vi_get_pipe_3dnr_motion_info接口获取到的数据保持一致。
- 调用本接口前应先设置3DNR属性,3DNR必须开启时域功能且nr_motion_depth应设置为[3,8]范围内的整数。
- 对于ss_mpi_vi_get_pipe_3dnr_motion_info获取到的运动信息,应该有且仅有一次release。
【举例】
无。
【相关主题】
ss_mpi_vi_get_pipe_3dnr_motion_info
ss_mpi_vi_set_pipe_align
【描述】
设置VI PIPE的输出数据的行stride对齐。
【语法】
【参数】
【返回值】
【解决方案差异】
无
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
- align为0时stride对齐使用自动模式,对齐要求跟随系统。
- align为非0时使用指定的stride对齐。
- 当align小于芯片要求的stride对齐时,系统分配buffer和计算stride还是以芯片要求stride对齐为准。
-
当align不等于芯片要求的stride对齐倍数时,系统分配buffer和计算stride向上对齐到芯片要求stride对齐的倍数。
例:align设置为48,芯片要求32对齐时,系统分配buffer和计算stride时使用64对齐。
-
VI在线VPSS在线模式、VI在线VPSS离线模式下,不支持本接口。
【举例】
无。
【相关主题】
ss_mpi_vi_get_pipe_align
【描述】
获取VI PIPE的输出数据的行stride对齐。
【语法】
【参数】
【返回值】
【解决方案差异】
无
【需求】
- 头文件:ot_common_vi.h、ss_mpi_vi.h
- 库文件:libss_mpi.a
【注意】
- PIPE必须已创建。
【举例】
无。
【相关主题】
数据类型
视频输入相关数据类型定义如下:
- OT_VI_MAX_SNS_CFG_NUM:时序配置数据的最大个数。
- OT_VI_MAX_SD_MUX_NUM:SD管脚复用的最大个数。
- OT_VI_MAX_DEV_NUM:定义VI设备的最大个数。
- OT_VI_MAX_PHYS_PIPE_NUM:定义VI 物理PIPE的最大个数。
- OT_VI_MAX_VIRT_PIPE_NUM:定义VI 虚拟PIPE的最大个数。
- OT_VI_MAX_PIPE_NUM:定义VI PIPE的最大个数。
- OT_VI_MAX_STITCH_GRP_NUM:定义VI拼接组的最大个数。
- OT_VI_MAX_WDR_FUSION_GRP_NUM:定义VI WDR融合组的最大个数。
- OT_VI_MAX_WDR_NUM:定义VI WDR融合组合成帧的最大个数。
- OT_VI_MAX_WDR_FRAME_NUM:定义VI WDR融合组合成帧的最大个数。
- OT_VI_MAX_VC_NUM:定义VI VC号的最大个数。
- OT_VI_MAX_PHYS_CHN_NUM:定义VI物理通道的最大个数。
- OT_VI_MAX_EXT_CHN_NUM:定义VI扩展通道的最大个数。
- OT_VI_EXT_CHN_START:定义VI扩展通道的起始通道号。
- OT_VI_MAX_SPLIT_NODE_NUM:定义VI最大任务分块个数。
- OT_VI_MAX_EXTCHN_BIND_PER_CHN:定义VI单个通道可绑定的扩展通道最大个数。
- OT_VI_MAX_CHN_NUM:定义VI物理通道和扩展通道的总个数。
- OT_VI_DEV_MIN_WIDTH:VI设备捕获图像的最小宽度。
- OT_VI_DEV_MIN_HEIGHT:VI设备捕获图像的最小高度。
- OT_VI_DEV_MAX_WIDTH:VI设备捕获图像的最大宽度。
- OT_VI_DEV_MAX_HEIGHT:VI设备捕获图像的最大高度。
- OT_VI_PIPE_OFFLINE_MIN_WIDTH:VI PIPE离线处理图像的最小宽度。
- OT_VI_PIPE_OFFLINE_MIN_HEIGHT:VI PIPE离线处理图像的最小高度。
- OT_VI_PIPE_OFFLINE_MAX_WIDTH:离线模式下VI PIPE处理图像的最大宽度。
- OT_VI_PIPE_OFFLINE_MAX_HEIGHT:VI PIPE离线处理图像的最大高度。
- OT_VI_PIPE_ONLINE_MIN_WIDTH:在线模式下VI PIPE处理图像的最小宽度。
- OT_VI_PIPE_ONLINE_MIN_HEIGHT:在线模式下VI PIPE处理图像的最小高度。
- OT_VI_PIPE_ONLINE_MAX_WIDTH:在线模式下VI PIPE处理图像的最大宽度。
- OT_VI_PIPE_ONLINE_MAX_HEIGHT:在线模式下VI PIPE处理图像的最大高度。
- OT_VI_PHYS_CHN_OFFLINE_MIN_WIDTH:VI物理通道离线支持的最小宽度。
- OT_VI_PHYS_CHN_OFFLINE_MIN_HEIGHT:VI物理通道离线支持的最小高度。
- OT_VI_PHYS_CHN_OFFLINE_MAX_WIDTH:VI物理通道离线支持的最大宽度。
- OT_VI_PHYS_CHN_OFFLINE_MAX_HEIGHT:VI物理通道离线支持的最大高度。
- OT_VI_PHYS_CHN_ONLINE_MIN_WIDTH:VI物理通道在线支持的最小宽度。
- OT_VI_PHYS_CHN_ONLINE_MIN_HEIGHT:VI物理通道在线支持的最小高度。
- OT_VI_PHYS_CHN_ONLINE_MAX_WIDTH:VI物理通道在线支持的最大宽度。
- OT_VI_PHYS_CHN_ONLINE_MAX_HEIGHT:VI物理通道在线支持的最大高度。
- OT_VI_EXT_CHN_MIN_WIDTH:VI扩展通道支持的最小宽度。
- OT_VI_EXT_CHN_MIN_HEIGHT:VI扩展通道支持的最小高度。
- OT_VI_EXT_CHN_MAX_WIDTH:VI扩展通道支持的最大宽度。
- OT_VI_EXT_CHN_MAX_HEIGHT:VI扩展通道支持的最大高度。
- OT_VI_EXT_CHN_MAX_ZOOMIN:VI扩展通道支持的最大放大倍数。
- OT_VI_EXT_CHN_MAX_ZOOMOUT:VI扩展通道支持的最大缩小倍数。
- OT_VI_COMPRESS_PARAM_SIZE:VI RAW数据压缩参数的大小。
- OT_VI_MIN_BNR_BUF_NUM:VI bayernr buffer个数的最小值。
- OT_VI_MAX_BNR_BUF_NUM:VI bayernr buffer个数的最大值。
- OT_VI_MAX_AD_CHN_NUM:VI设备属性中ad_chn_id的个数。
- OT_VI_COMPONENT_MASK_NUM:VI设备属性中Component mask 的个数。
- OT_VI_INVALID_FRAME_RATE:VI帧率控制的宏,当原始帧率和目标帧率都为该宏时,不做帧率控制。
- ot_vi_intf_mode:定义视频设备的接口模式。
- ot_vi_work_mode:定义视频设备的复合工作模式。
- ot_vi_scan_mode:定义视频设备接收的是隔行或逐行输入图像。
- ot_vi_data_seq:定义视频设备接收的YUV数据的数据排列顺序。
- ot_vi_vsync:定义视频设备输入数据的垂直同步信号类型。
- ot_vi_vsync_neg:定义视频设备输入数据垂直同步信号的极性。
- ot_vi_hsync:定义视频设备输入数据的水平同步信号类型。
- ot_vi_hsync_neg:定义视频设备输入数据水平同步信号的极性。
- ot_vi_vsync_valid:定义视频设备输入数据的垂直有效同步信号类型。
- ot_vi_vsync_valid_neg:定义视频设备输入数据垂直有效同步信号的极性。
- ot_vi_timing_blank:定义视频设备输入时序的消隐信息。
- ot_vi_sync_cfg:定义视频设备接收BT.601、DC、BT.656和BT.1120时序的同步信息。
- ot_vi_data_type:VI输入数据类型枚举。
- ot_vi_dev_attr:定义视频输入设备的属性。
- ot_vi_thermo_work_mode:定义热成像探测器的工作类型。
- ot_vi_sd_mux:定义热成像输出的管脚乱序。
- ot_vi_thermo_sns_attr:定义热成像探测器的配置属性。
- ot_vi_dev_timing_attr:定义VI DEV自产生时序属性。
- ot_vi_dev_data_attr:定义VI DEV自产生数据属性。
- ot_vi_bind_pipe:定义VI DEV与PIPE的绑定关系。
- ot_vi_wdr_fusion_grp_attr:定义wdr 融合组的属性。
- ot_vi_distribute_grp_attr:定义VI 分发组属性
- ot_vi_pipe_bypass_mode:定义VI PIPE的Bypass模式。
- ot_vi_pipe_attr:定义VI PIPE属性。
- ot_vi_pipe_buf_wrap_attr:定义VI PIPE 卷绕属性。
- ot_vi_frame_dump_attr:定义VI PIPE dump frame属性。
- ot_vi_private_data_mode:定义VI PIPE dump 私有数据的类型。
- ot_vi_private_data_dump_attr:定义VI PIPE dump私有数据的属性。
- ot_vi_private_data_info:定义VI PIPE 私有数据相关的信息。
- ot_vi_out_mode:定义VI Stagger 模式。
- ot_nr_effect_mode:定义3DNR降噪效果模式。
- ot_vi_pipe_param:定义VI PIPE参数。
- ot_vi_pipe_frame_source:定义VI PIPE输入帧的来源。
- ot_vi_pipe_status:定义VI PIPE的运行状态。
- ot_vi_compress_param:定义压缩参数的大小。
- ot_vi_chn_attr:定义VI通道的属性。
- ot_vi_ext_chn_attr:定义VI扩展通道的属性。
- ot_vi_crop_info:定义VI通道的crop信息。
- ot_vi_chn_status:定义VI通道的运行状态。
- ot_vi_stitch_cfg_mode:定义VI拼接的配置模式。
- ot_vi_stitch_grp_attr:定义VI拼接组的属性。
- ot_vi_mod_param:定义VI的模块参数。
- OT_DIS_MAX_IMAGE_WIDTH:定义DIS的最大图像宽度。
- OT_DIS_MAX_IMAGE_HEIGHT:定义DIS的最大图像高度。
- OT_DIS_MIN_IMAGE_WIDTH:定义DIS的最小图像宽度。
- OT_DIS_MIN_IMAGE_HEIGHT:定义DIS的最小图像高度。
- ot_dis_mode:定义DIS防抖算法模式。
- ot_dis_motion_level:定义镜头的运动级别。
- ot_dis_pdt_type:定义使用DIS的产品形态。
- ot_dis_cfg:定义DIS的配置信息。
- ot_dis_attr:定义DIS属性。
- ot_dis_ref_mode:定义DIS参考帧模式。
- ot_dis_param:定义DIS可选参数。
- ot_atten_coef:定义陀螺仪防抖的漂移衰减系数。
- ot_gyrodis_alg_attr:定义陀螺仪防抖算法属性。
- ot_src_point_info:定义DIS输入查找坐标点信息。
- ot_dis_alg_attr:定义DIS算法属性。
- ot_dis_rotation_compensation:定义DIS算法属性。
- ot_dis_wdr_attr:定义DIS WDR属性。
OT_VI_MAX_SNS_CFG_NUM
【说明】
时序配置数据的最大个数。请参考《Thermo开发参考》第4章。
OT_VI_MAX_SD_MUX_NUM
【说明】
SD管脚复用的最大个数。请参考《Thermo开发参考》第4章。
OT_VI_MAX_DEV_NUM
【说明】
定义VI设备的最大个数。
【定义】
不同项目对应具体信息请参见表1。
OT_VI_MAX_PHYS_PIPE_NUM
【说明】
定义VI 物理PIPE的最大个数。
【定义】
不同项目对应具体信息请参见表1。
OT_VI_MAX_VIRT_PIPE_NUM
【说明】
定义VI虚拟 PIPE的最大个数。
【定义】
不同项目对应具体信息请参见表1。
OT_VI_MAX_PIPE_NUM
【说明】
定义VI PIPE的最大个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_STITCH_GRP_NUM
【说明】
定义VI 拼接组的最大个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_WDR_FUSION_GRP_NUM
【说明】
定义VI WDR融合组的最大个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_DISTRIBUTE_GRP_NUM
【说明】
定义VI 分发组的最大个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_WDR_NUM
【说明】
定义VI WDR融合组合成帧的最大个数
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_WDR_FRAME_NUM
【说明】
定义VI WDR融合组合成帧的最大个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_DISTRIBUTE_PIPE_NUM
【说明】
定义VI分发组pipe个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无
OT_VI_MAX_VC_NUM
【说明】
定义VI VC号的最大个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_PHYS_CHN_NUM
【说明】
定义VI物理通道的最大个数。
【定义】
不同项目对应具体信息请参见表1。
OT_VI_MAX_EXT_CHN_NUM
【说明】
定义VI扩展通道的最大个数。
【定义】
不同项目对应具体信息请参见表1。
OT_VI_EXT_CHN_START
【说明】
定义VI扩展通道的起始通道号。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_SPLIT_NODE_NUM
【说明】
定义VI最大任务分块个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_EXTCHN_BIND_PER_CHN
【说明】
定义VI单个通道可绑定的扩展通道最大个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_CHN_NUM
【说明】
定义VI物理通道和扩展通道的总个数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_DEV_MIN_WIDTH
【说明】
VI设备捕获图像的最小宽度。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_DEV_MIN_HEIGHT
【说明】
VI设备捕获图像的最小高度。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_DEV_MAX_WIDTH
【说明】
VI设备捕获图像的最大宽度。
【定义】
不同项目对应具体信息请参见表1
【注意事项】
无。
【相关数据类型及接口】
OT_VI_DEV_MAX_HEIGHT
【说明】
VI设备捕获图像的最大高度。
【定义】
不同项目对应具体信息请参见表1
【注意事项】
无
【相关数据类型及接口】
OT_VI_PIPE_OFFLINE_MIN_WIDTH
【说明】
VI PIPE离线处理图像的最小宽度。
【定义】
【注意事项】
无
【相关数据类型及接口】
无。
OT_VI_PIPE_OFFLINE_MIN_HEIGHT
【说明】
VI PIPE离线处理图像的最小高度。
【定义】
不同项目对应具体信息请参见表3
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_PIPE_OFFLINE_MAX_WIDTH
【说明】
离线模式下VI PIPE处理图像的最大宽度。
【定义】
不同项目对应具体信息请参见表3
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_PIPE_OFFLINE_MAX_HEIGHT
【说明】
VI PIPE离线处理图像的最大高度。
【定义】
不同项目对应具体信息请参见表3
【注意事项】
无。
【相关数据类型及接口】
无
OT_VI_PIPE_ONLINE_MIN_WIDTH
【说明】
在线模式下,VI PIPE处理图像的最小宽度。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_PIPE_ONLINE_MIN_HEIGHT
【说明】
在线模式下,VI PIPE处理图像的最小高度。
【定义】
不同项目对应具体信息请参见表3
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_PIPE_ONLINE_MAX_WIDTH
【说明】
在线模式下,VI PIPE处理图像的最大宽度。
【定义】
不同项目对应具体信息请参见表3
【注意事项】
无。
【相关数据类型及接口】
无
OT_VI_PIPE_ONLINE_MAX_HEIGHT
【说明】
在线模式下,VI PIPE处理图像的最大高度。
【定义】
不同项目对应具体信息请参见表3
【注意事项】
无。
【相关数据类型及接口】
无
OT_VI_PHYS_CHN_OFFLINE_MIN_WIDTH
【说明】
VI物理通道离线支持的最小宽度。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_PHYS_CHN_OFFLINE_MIN_HEIGHT
【说明】
VI物理通道离线支持的最小高度。
【定义】
不同项目对应具体信息请参见表1
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_PHYS_CHN_OFFLINE_MAX_WIDTH
【说明】
VI物理通道离线支持的最大宽度。
【定义】
不同项目对应具体信息请参见表1
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_PHYS_CHN_OFFLINE_MAX_HEIGHT
【说明】
VI物理通道离线支持的最大高度。
【定义】
不同项目对应具体信息请参见表1
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_PHYS_CHN_ONLINE_MIN_WIDTH
【说明】
VI物理通道在线支持的最小宽度。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_PHYS_CHN_ONLINE_MIN_HEIGHT
【说明】
VI物理通道在线支持的最小高度。
【定义】
不同项目对应具体信息请参见表1
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_PHYS_CHN_ONLINE_MAX_WIDTH
【说明】
VI物理通道在线支持的最大宽度。
【定义】
不同项目对应具体信息请参见表1
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_PHYS_CHN_ONLINE_MAX_HEIGHT
【说明】
VI物理通道在线支持的最大高度。
【定义】
不同项目对应具体信息请参见表1
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_EXT_CHN_MIN_WIDTH
【说明】
VI扩展通道支持的最小宽度。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_EXT_CHN_MIN_HEIGHT
【说明】
VI扩展通道支持的最小高度。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_EXT_CHN_MAX_WIDTH
【说明】
VI扩展通道支持的最大宽度。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_EXT_CHN_MAX_HEIGHT
【说明】
VI扩展通道支持的最大高度。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_EXT_CHN_MAX_ZOOMIN
【说明】
VI扩展通道支持的最大放大倍数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
OT_VI_EXT_CHN_MAX_ZOOMOUT
【说明】
VI扩展通道支持的最大缩小倍数。
【定义】
【注意事项】
无。
【相关数据类型及接口】
OT_VI_COMPRESS_PARAM_SIZE
【说明】
VI RAW数据压缩参数的大小。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MIN_BNR_BUF_NUM
【说明】
VI bayernr buffer个数的最小值。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_BNR_BUF_NUM
【说明】
VI bayernr buffer个数的最大值。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VI_MAX_AD_CHN_NUM
【说明】
VI设备属性中ad_chn_id的个数。
【定义】
【注意事项】
无
【相关数据类型及接口】
无
OT_VI_COMPONENT_MASK_NUM
【说明】
VI设备属性中Component mask 的个数。
【定义】
【注意事项】
无
【相关数据类型及接口】
无。
OT_VI_INVALID_FRAME_RATE
【说明】
VI帧率控制的宏,当原始帧率和目标帧率都为该宏时,不做帧率控制。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vi_intf_mode
【说明】
定义视频设备的接口模式。
【定义】
typedef enum {
OT_VI_INTF_MODE_BT656 = 0,
OT_VI_INTF_MODE_BT601,
OT_VI_INTF_MODE_DC,
OT_VI_INTF_MODE_BT1120,
OT_VI_INTF_MODE_MIPI,
OT_VI_INTF_MODE_MIPI_YUV420_NORM,
OT_VI_INTF_MODE_MIPI_YUV420_LEGACY,
OT_VI_INTF_MODE_MIPI_YUV422,
OT_VI_INTF_MODE_THERMO,
OT_VI_INTF_MODE_BUTT
} ot_vi_intf_mode;
【成员】
热成像工作模式为OT_VI_THERMO_WORK_MODE_T0或者OT_VI_THERMO_WORK_MODE_T2时,用于传输热成像探测器的数据。 |
【解决方案差异】
无
【注意事项】
-
Hi3519DV500/Hi3516CV610不支持OT_VI_INTF_MODE_MIPI_YUV420_LEGACY。
-
Hi3516CV610不支持OT_VI_INTF_MODE_THERMO。
- Hi3516CV610不支持在线OT_VI_INTF_MODE_MIPI_YUV420_NORM。
【相关数据类型及接口】
ot_vi_work_mode
【说明】
定义视频设备的复合工作模式。
【定义】
typedef enum {
OT_VI_WORK_MODE_MULTIPLEX_1 = 0,
OT_VI_WORK_MODE_MULTIPLEX_2,
OT_VI_WORK_MODE_MULTIPLEX_4,
OT_VI_WORK_MODE_BUTT
} ot_vi_work_mode;
【成员】
【注意事项】
当该项设为2路或4路复合工作模式时,设备输入的协议必须是BT.656协议。1路复合工作模式没有限制。
【相关数据类型及接口】
ot_vi_scan_mode
【说明】
定义视频设备接收的是隔行或逐行输入图像。
【定义】
typedef enum {
OT_VI_SCAN_PROGRESSIVE = 0,
OT_VI_SCAN_INTERLACED,
OT_VI_SCAN_BUTT
} ot_vi_scan_mode;
【成员】
【注意事项】
仅支持OT_VI_SCAN_PROGRESSIVE。
【相关数据类型及接口】
ot_vi_data_seq
【说明】
定义视频设备接收的YUV数据的数据排列顺序。
【定义】
typedef enum {
OT_VI_DATA_SEQ_VUVU = 0,
OT_VI_DATA_SEQ_UVUV,
OT_VI_DATA_SEQ_UYVY,
OT_VI_DATA_SEQ_VYUY,
OT_VI_DATA_SEQ_YUYV,
OT_VI_DATA_SEQ_YVYU,
OT_VI_DATA_SEQ_BUTT
} ot_vi_data_seq;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_vi_vsync
【说明】
定义视频设备输入数据的垂直同步信号类型。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_vi_vsync_neg
【说明】
定义视频设备输入数据垂直同步信号的极性。
【定义】
typedef enum {
OT_VI_VSYNC_NEG_HIGH = 0,
OT_VI_VSYNC_NEG_LOW,
OT_VI_VSYNC_NEG_BUTT
} ot_vi_vsync_neg;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_vi_hsync
【说明】
定义视频设备输入数据的水平同步信号类型。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_vi_hsync_neg
【说明】
定义视频设备输入数据水平同步信号的极性。
【定义】
typedef enum {
OT_VI_HSYNC_NEG_HIGH = 0,
OT_VI_HSYNC_NEG_LOW,
OT_VI_HSYNC_NEG_BUTT
} ot_vi_hsync_neg;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_vi_vsync_valid
【说明】
定义视频设备输入数据的垂直有效同步信号类型。
【定义】
typedef enum {
OT_VI_VSYNC_NORM_PULSE = 0,
OT_VI_VSYNC_VALID_SIG,
OT_VI_VSYNC_VALID_BUTT
} ot_vi_vsync_valid;
【成员】
【注意事项】
DC/BT.656/BT.1120模式下需要配置该项。
【相关数据类型及接口】
ot_vi_vsync_valid_neg
【说明】
定义视频设备输入数据垂直有效同步信号的极性。
【定义】
typedef enum {
OT_VI_VSYNC_VALID_NEG_HIGH = 0,
OT_VI_VSYNC_VALID_NEG_LOW,
OT_VI_VSYNC_VALID_NEG_BUTT
} ot_vi_vsync_valid_neg;
【成员】
【注意事项】
只有在ot_vi_vsync_valid = OT_VI_VSYNC_VALID_SIG时,该项才有效。
【相关数据类型及接口】
ot_vi_timing_blank
【说明】
定义视频设备输入时序的消隐信息。
【定义】
typedef struct {
td_u32 hsync_hfb;
td_u32 hsync_act;
td_u32 hsync_hbb;
td_u32 vsync_vfb;
td_u32 vsync_vact;
td_u32 vsync_vbb;
td_u32 vsync_vbfb;
td_u32 vsync_vbact;
td_u32 vsync_vbbb;
} ot_vi_timing_blank;
【成员】
【注意事项】
该结构体只有在BT.601时生效,其他时序无效。
【相关数据类型及接口】
ot_vi_sync_cfg
【说明】
定义视频设备接收BT.601、DC、BT.656和BT.1120时序的同步信息。
【定义】
typedef struct {
ot_vi_vsync vsync;
ot_vi_vsync_neg vsync_neg;
ot_vi_hsync hsync;
ot_vi_hsync_neg hsync_neg;
ot_vi_vsync_valid vsync_valid;
ot_vi_vsync_valid_neg vsync_valid_neg;
ot_vi_timing_blank timing_blank;
} ot_vi_sync_cfg;
【成员】
【注意事项】
- 此部分同步信息详细配置可参考《MPP 媒体处理软件V6.0 FAQ》2.2小节“VI YUV时序配置”。
-
BT.601模式下,垂直同步信号只需配置vsync和vsync_neg即可,它们分别表示管脚OT_VI_P_VSYNC_FIELD的垂直同步信号类型和垂直同步信号的极性,两者决定了采用何种垂直同步时序。
- vsync配置为OT_VI_VSYNC_FIELD,BT.601模式下表示场号。此时,如果vsync_neg配置为OT_VI_VSYNC_NEG_HIGH,则高电平表示偶场,低电平表示奇场;如果vsync_neg配置为OT_VI_VSYNC_NEG_LOW,则低电平表示偶场,高电平表示奇场。
- vsync配置为OT_VI_VSYNC_PULSE,表示垂直同步脉冲,即一个脉冲到来表示新的一场或一帧。此时,如果vsync_neg配置为OT_VI_VSYNC_NEG_HIGH,则正脉冲表示垂直同步脉冲;如果vsync_neg配置为OT_VI_VSYNC_NEG_LOW,则负脉冲表示垂直同步脉冲。
-
DC/BT.656/BT.1120模式下,垂直同步信号需要配置vsync、vsync_valid和 vsync_valid_neg三项,它们分别表示管脚OT_VI_P_VSYNC_FIELD的垂直同步信号类型、垂直同步信号标识和垂直有效信号极性。vsync_valid_neg只有在vsync_valid配为OT_VI_VSYNC_VALID_SIG时有效。
- vsync配置为OT_VI_VSYNC_PULSE,表示垂直时序脉冲方式。如果在垂直消隐区内hsync信号仍有效,则vsync_valid需配置为OT_VI_VSYNC_VALID_SIG选择垂直有效标识,同时vsync_valid_neg需要配置为OT_VI_VSYNC_VALID_NEG_HIGH(或OT_VI_VSYNC_VALID_NEG_LOW),以表示高(低)电平有效,其他情况不需关注此属性。
- 如果输入时序为垂直时序行有效方式,只需将vsync配置为OT_VI_VSYNC_FIELD即可。
- 标准BT.656、BT.1120同步信息配置可参考《MPP 媒体处理软件V6.0 FAQ》2.2小节“VI YUV时序配置”。
-
hsync和 hsync_neg分别表示管脚VI_P_HSYNC_VD的水平同步信号类型和水平同步信号的极性,两者决定了采用何种水平同步时序。
- hsync配置为OT_VI_HSYNC_VALID_SIG,表示数据有效信号。此时,如果hsync_neg配置为OT_VI_HSYNC_NEG_HIGH,则高电平表示数据有效;如果hsync_neg配置为OT_VI_HSYNC_NEG_LOW,则低电平表示数据有效。
- hsync配置为OT_VI_HSYNC_PULSE,表示水平同步脉冲信号,即一个脉冲到来表示新一行的开始。此时,如果hsync_neg配置为OT_VI_HSYNC_NEG_HIGH,则正脉冲表示水平同步脉冲;如果hsync_neg配置为OT_VI_HSYNC_NEG_LOW,则负脉冲表示水平同步脉冲。
-
对于消隐信息,水平或垂直的有效数据方式不需要配消隐区。
- 支持的具体时序介绍请参见芯片手册。
【相关数据类型及接口】
ot_vi_data_type
【说明】
VI输入数据类型枚举。
【定义】
typedef enum {
OT_VI_DATA_TYPE_RAW = 0,
OT_VI_DATA_TYPE_YUV,
OT_VI_DATA_TYPE_BUTT
} ot_vi_data_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_vi_dev_attr
【说明】
定义视频输入设备的属性。
【定义】
typedef struct {
ot_vi_intf_mode intf_mode;
ot_vi_work_mode work_mode;
td_u32 component_mask[OT_VI_COMPONENT_MASK_NUM];
ot_vi_scan_mode scan_mode;
td_s32 ad_chn_id[OT_VI_MAX_AD_CHN_NUM];
ot_vi_data_seq data_seq;
ot_vi_sync_cfg sync_cfg;
ot_vi_data_type data_type;
td_bool data_reverse;
ot_size in_size;
ot_data_rate data_rate;
} ot_vi_dev_attr;
【成员】
【解决方案差异】
无
【注意事项】
- in_size中width必须等于实际输入图像的宽度,height必须等于实际输入图像的高度,否则会导致没有图像输出。
- 只有DEV1、DEV3支持CMOS/BT.1120/BT.656等并口输入。
- 2路、4路复合模式只有在接口模式为OT_VI_INTF_MODE_BT656时可配置,其他输入只支持设置为OT_VI_WORK_MODE_MULTIPLEX_1。
- Hi3519DV500只有DEV3支持Bt656复合,Hi3516DV500只有DEV1支持BT656复合。
- BT656多路复合通路配置:Dev配置复合模式,绑定多路YUV pipe即可。
- data_rate只支持配置为OT_DATA_RATE_X1。
- 当接口模式为OT_VI_INTF_MODE_MIPI_YUV420_NORM,OT_VI_INTF_MODE_MIPI_YUV420_LEGACY,OT_VI_INTF_MODE_MIPI_YUV422时data_reverse必须为TD_FALSE,且掩码的设置必须为component_mask[0] = 0xFF000000,component_mask[1] = 0x00FF0000,即高8bit输入Y数据,低8bit输入C数据,否则会导致图像异常或无图像等现象。
- 输入只支持逐行模式。
【相关数据类型及接口】
无
ot_vi_thermo_work_mode
【说明】
定义热成像探测器的工作类型。请参考《Thermo开发参考》文档中VI相关章节。
ot_vi_sd_mux
【说明】
定义热成像输出的管脚乱序。请参考《Thermo开发参考》文档中VI相关章节。
ot_vi_thermo_sns_attr
【说明】
定义热成像探测器的配置属性。请参考《Thermo开发参考》文档中VI相关章节。
ot_vi_dev_timing_attr
【说明】
定义VI DEV自生成时序属性。
【定义】
【成员】
【注意事项】
- 使用此功能时,需配置Sensor类型与RAW数据文件的宽高相等,如均为4000px*3000px或者3840px*2160px。
- 当使能自产生时序后,若用户设置的帧率超过设备最大帧率时,系统自动以设备最大帧率为有效值;同时用户设置的帧率必须大于0,否则返回错误。
- 设备最大帧率由设备对应的时钟clk、设备宽高共同决定。
【相关数据类型及接口】
ot_vi_dev_data_attr
【说明】
定义VI DEV自生成数据属性。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_vi_bind_pipe
【说明】
定义VI DEV与PIPE的绑定关系。
【定义】
【成员】
该VI Dev所绑定的PIPE数目,取值范围[1, OT_VI_MAX_PHYS_PIPE_NUM]。 |
|
【注意事项】
无。
【相关数据类型及接口】
ot_vi_wdr_fusion_grp_attr
【说明】
定义VI WDR融合组的属性。
【定义】
typedef struct {
ot_wdr_mode wdr_mode;
td_u32 cache_line;
ot_vi_pipe pipe_id[OT_VI_MAX_WDR_FRAME_NUM];
td_bool pipe_reverse;
} ot_vi_wdr_fusion_grp_attr;
【成员】
|
取值范围:[1,PIPE的图像高度size.height]。根据带宽的使用情况和sensor的曝光行差等因素来调节到合适值。 |
|
WDR融合组主pipe反转标记,设置为TRUE时最大的pipe_id为融合主pipe,FALSE时最小的pipe_id为融合主pipe。 |
【解决方案差异】
【注意事项】
- 芯片跑在线WDR时,cache_line需被PIPE图像高度整除;需大于长短帧曝光的第一行的行数差距,需大于100。
- WDR模式下曝光时间会影响行差,短帧曝光时间越长,行差越大,所需的cache_line越大。
- 若配置后出现图像效果异常时,则需调节配置的卷绕行数。推荐配置为PIPE图像高度的一半。
- 在线WDR时,会创建一个私有VB;离线WDR时,使用公共VB轮转。
- WDR卷绕的配置可减小在线WDR私有VB的大小,仅在线WDR行模式才支持。
- 线性模式可不配置WDR组,若配置,则cache_line不能配置为0,否则会配置失败。
- pipe_reverse须配合ss_mpi_vi_set_pipe_vc_number接口使用,在需要将长短帧交换FE处理的场景下使用:如2To1模式下FE0处理长帧,FE1处理短帧,需设置pipe_reverse为TRUE,同时交换两路pipe的vc_number。
- pipe_reverse不支持虚拟pipe。
- 配置WDR组属性后,获取对应isp统计信息需要从对应的WDR主pipe获取;如pipe0, 1做wdr融合,若配置了pipe_reverse,则需要从pipe1(isp1)上获取统计信息,此时isp通路也只需要起isp1,不需要配置isp0。
【相关数据类型及接口】
ss_mpi_vi_set_wdr_fusion_grp_attr
ot_vi_distribute_grp_attr
【说明】
定义VI 分发组属性。
【定义】
typedef struct {
td_bool distribute_en;
ot_vi_pipe pipe_id[OT_VI_MAX_DISTRIBUTE_PIPE_NUM];
} ot_vi_distribute_grp_attr;
【成员】
|
pipe_id[0]取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM); pipe_id[1]取值范围:[OT_VI_MAX_PHYS_PIPE_NUM,OT_VI_MAX_PIPE_NUM); |
【解决方案差异】
仅Hi3516CV610支持。
【注意事项】
无
【相关数据类型及接口】
ot_vi_pipe_bypass_mode
【说明】
定义VI PIPE的Bypass模式。
【定义】
typedef enum {
OT_VI_PIPE_BYPASS_NONE = 0,
OT_VI_PIPE_BYPASS_FE,
OT_VI_PIPE_BYPASS_BE,
OT_VI_PIPE_BYPASS_BUTT
} ot_vi_pipe_bypass_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_vi_pipe_attr
【说明】
定义VI PIPE属性。
【定义】
typedef struct {
ot_vi_pipe_bypass_mode pipe_bypass_mode;
td_bool isp_bypass;
ot_size size;
ot_pixel_format pixel_format;
ot_compress_mode compress_mode;
ot_frame_rate_ctrl frame_rate_ctrl
} ot_vi_pipe_attr;
【成员】
【解决方案差异】
【注意事项】
- pixel_format定义当前PIPE接收的图像像素格式,当为Raw数据时,可以动态修改为不同位宽的像素格式(位宽低于实际输入Raw位宽时有精度损失),当为YUV格式数据时,可以动态修改为SP420,SP422,但是建议与输入保持一致,否则可能导致图像异常。
-
isp_bypass表示是否bypass ISP的算法。
- 当输入为Raw数据时,须设置为TD_FALSE才能正常输出通道YUV数据。
- Hi3516CV610离线输入YUV时,isp_bypass参数必须设置为TD_TRUE。
- 当YUV需要获取AF统计信息和YUV图像处理时,isp_bypass参数设置成TD_FALSE;
- 当YUV不需要经过ISP处理时,isp_bypass参数设置成TD_TRUE,同时强烈建议不起ISP业务,避免内存等资源的浪费。
- 当需要打开AIDRC/AI3DNR时,isp_bypass参数需设置成TD_FALSE。
-
当参数pipe_bypass_mode设置成OT_VI_PIPE_BYPASS_BE时,不支持从该PIPE灌YUV、RAW。
- 当参数pipe_bypass_mode设置成OT_VI_PIPE_BYPASS_BE时,PIPE只能处于OT_VI_OFFLINE_VPSS_OFFLINE模式。
- compress_mode表示压缩类型,所有支持的数据类型都支持非压缩。当输入数据像素格式为OT_PIXEL_FORMAT_RGB_BAYER_10BPP,OT_PIXEL_FORMAT_RGB_BAYER_12BPP,OT_PIXEL_FORMAT_RGB_BAYER_14BPP时,压缩类型支持OT_COMPRESS_MODE_LINE和OT_COMPRESS_MODE_FRAME,当输入数据为YUV数据时不支持压缩。
- 像素格式为OT_PIXEL_FORMAT_RGB_BAYER_16BPP和OT_PIXEL_FORMAT_RGB_BAYER_8BPP时,不支持压缩。
- 参数size需与ot_isp_pub_attr的wnd_rect宽高保持一致,宽高必须保持4对齐。
- PIPE的帧率控制只有离线或者使能了dump属性才有效。
- PIPE的帧率控制在PIPE灌YUV、RAW时不生效。
- 离线场景下若需要采集低对齐数据,可根据具体数据位宽将pixel_format设置为OT_PIXEL_FORMAT_RGB_BAYER_16BPP_L10、OT_PIXEL_FORMAT_RGB_BAYER_16BPP_L12、OT_PIXEL_FORMAT_RGB_BAYER_16BPP_L14。其他高对齐16Bit场景使用OT_PIXEL_FORMAT_RGB_BAYER_16BPP,默认为高对齐。BE通过配置上述低对齐pixel_format,也可以处理低对齐数据。
- 当isp_bypass参数设置成TD_TRUE,pipe_bypass_mode设置成OT_VI_PIPE_BYPASS_BE时,像素宽高需要满足2字节对齐,其他场景像素宽高需要满足4字节对齐。
- Hi3519DV500的WDR场景不支持两路都设置为低对齐数据。
【相关数据类型及接口】
ot_vi_pipe_buf_wrap_attr
【说明】
定义VI PIPE 卷绕属性。
【定义】
【成员】
【解决方案差异】
Hi3519DV500不支持此结构体。
【注意事项】
卷绕行不能大于pipe属性高度的2倍。
【相关数据类型及接口】
ot_vi_frame_dump_attr
【说明】
定义VI PIPE dump frame属性。
【定义】
【成员】
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
ot_vi_private_data_mode
【说明】
定义VI PIPE dump 私有数据的类型。
【定义】
typedef enum {
OT_VI_PRIVATE_DATA_MODE_BACK = 0,
OT_VI_PRIVATE_DATA_MODE_FRONT,
OT_VI_PRIVATE_DATA_MODE_BUTT
} ot_vi_private_data_mode;
【成员】
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
ot_vi_private_data_dump_attr
【说明】
定义VI PIPE dump 私有数据属性。
【定义】
typedef struct {
td_bool enable;
ot_vi_private_data_mode data_mode;
td_u32 depth;
td_u32 data_size;
} ot_vi_private_data_dump_attr;
【成员】
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
ot_vi_private_data_info
【说明】
定义VI PIPE 私有数据相关的信息。
【定义】
【成员】
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
ot_vi_out_mode
【说明】
定义VI Stagger 模式。
【定义】
typedef enum {
OT_VI_OUT_MODE_NORM = 0,
OT_VI_OUT_MODE_2F1_STAGGER,
OT_VI_OUT_MODE_3F1_STAGGER,
OT_VI_OUT_MODE_4F1_STAGGER,
OT_VI_OUT_MODE_BUTT
} ot_vi_out_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_nr_effect_mode
【说明】
定义3DNR降噪效果模式。
【定义】
typedef enum {
OT_VI_NR_EFFECT_MODE_NORM = 0,
OT_VI_NR_EFFECT_MODE_ADVANCE,
OT_VI_NR_EFFECT_MODE_SWITCH,
OT_VI_NR_EFFECT_MODE_BUTT
} ot_nr_effect_mode;
【成员】
【注意事项】
OT_VI_NR_EFFECT_MODE_NORM模式和OT_VI_NR_EFFECT_MODE_ADVANCE可以互相动态切换,但是不能和OT_VI_NR_EFFECT_MODE_SWITCH动态切换,OT_VI_NR_EFFECT_MODE_SWITCH模式静态配置。
【相关数据类型及接口】
ot_vi_pipe_param
【说明】
定义VI PIPE参数。
【定义】
typedef struct {
td_bool discard_pro_pic_en;
ot_vi_out_mode out_mode;
ot_data_rate data_rate;
td_bool yuv_skip_en;
td_bool signed_bit_extend_en;
td_bool bnr_info_en;
ot_nr_effect_mode nr_effect_mode;
td_bool nr_advance_correct_en;
td_bool discard_cc_err_pic_en;
} ot_vi_pipe_param;
【成员】
pipe stagger模式,Hi3519DV500/Hi3516CV610仅支持OT_VI_OUT_MODE_NORM模式。 |
|
【注意事项】
- data_rate参数用于将wdr时序线性、dev配置DATA_RATE_X2接入的场景,可将该场景下pipe默认的DATA_RATE_X2调成DATA_RATE_X1。
- out_mode 仅支持在start pipe之前修改,pipe 启动后再修改out_mode将返回报错。
- out_mode 配置为stagger模式,与pipe pre_crop功能、设备bas功能互斥。
- VI在线模式不支持修改out_mode为stagger模式。
- signed_bit_extend_en 仅支持采集数据低对齐模式,可根据具体数据位宽将pixel_format设置为OT_PIXEL_FORMAT_RGB_BAYER_16BPP_L10、OT_PIXEL_FORMAT_RGB_BAYER_16BPP_L12、OT_PIXEL_FORMAT_RGB_BAYER_16BPP_L14,默认数据高对齐。
- signed_bit_extend_en 仅支持在start pipe之前修改,pipe 启动后再修改signed_bit_extend_en将返回报错。
- bnr_info_en 仅支持在start pipe之前修改,pipe 启动后再修改bnr_info_en将返回报错。使能bnr_info_en后,设置vi_chn_attr的depth属性或进行chn捞帧,需要调用ss_mpi_vi_set_pipe_bnr_buf_num接口更改bnr的默认buffer数量,否则将返回报错。
- yuv_skip_en为FALSE时使用VCDS,仅支持sp420格式,此场景YUV输入最大分辨率为1080p。Hi3516CV610不支持VCDS丢点, yuv_skip_en必须设置为TRUE。
- nr_effect_mode参数用于选择3DNR的降噪效果模式,OT_VI_NR_EFFECT_MODE_NORM和OT_VI_NR_EFFECT_MODE_ADVANCE可动态配置,OT_VI_NR_EFFECT_MODE_ADVANCE模式降噪效果好,图像内容输出延时一帧,该模式为3DNR默认模式;OT_VI_NR_EFFECT_MODE_SWITCH模式不支持动态配置。
- nr_advance_correct_en参数用于3DNR降噪效果为OT_VI_NR_EFFECT_MODE_ADVANCE模式下的帧信息校正,校正内容包括pts、timeref以及userdata。未使能校正模式时,相同的pts/timeref/userdara下YUV图像内容比RAW滞后一帧。使能校正模式后相同pts/timeref/userdata对应的RAW和YUV图像内容一致。
- nr_advance_correct_en仅Hi3516CV610支持;
- nr_advance_correct_en仅支持VI离线VPSS离线工作模式;
- nr_advance_correct_en不支持动态切换,仅在创建PIPE滞后,开起PIPE之前配置;
- nr_advance_correct_en仅支持OT_VI_NR_EFFECT_MODE_ADVANCE模式;
- nr_advance_correct_en使能后,图像出处滞后一帧,不建议快启时使用。
【相关数据类型及接口】
ot_vi_pipe_frame_source
【说明】
定义VI PIPE数据的来源类型。
【定义】
typedef enum {
OT_VI_PIPE_FRAME_SOURCE_FE = 0,
OT_VI_PIPE_FRAME_SOURCE_USER,
OT_VI_PIPE_FRAME_SOURCE_BUTT
} ot_vi_pipe_frame_source;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_vi_pipe_status
【说明】
定义VI PIPE的状态信息。
【定义】
typedef struct {
td_bool enable;
td_u32 frame_rate;
td_u32 interrupt_cnt;
td_u32 lost_frame_cnt;
td_u32 vb_fail_cnt;
ot_size size;
} ot_vi_pipe_status;
【成员】
【注意事项】
- 当PIPE处于VI离线,VPSS离线模式,所有字段都有效。
- 当PIPE处于VI离线,VPSS在线模式,所有字段都有效。
- 当使能了用户图片,frame_rate无效。
- 用户从BE送RAW,送YUV不会统计到frame_rate中。
- 用户从FE送RAW,当PIPE处于VI在线,VPSS离线或者VI在线,VPSS在线,如果未使能dump功能,由于无帧数据输出,则frame_rate无效。
【相关数据类型及接口】
ot_vi_compress_param
【说明】
定义VI PIPE的RAW数据压缩参数。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_vi_get_pipe_compress_param
ot_vi_chn_attr
【说明】
定义VI通道属性。
【定义】
typedef struct {
ot_size size;
ot_pixel_format pixel_format;
ot_dynamic_range dynamic_range;
ot_video_format video_format;
ot_compress_mode compress_mode;
td_bool mirror_en;
td_bool flip_en;
td_u32 depth;
ot_frame_rate_ctrl frame_rate_ctrl;
} ot_vi_chn_attr;
【成员】
【解决方案差异】
无
【注意事项】
- 若DIS使能,不能使能MIRROR,FLIP,缩放,CROP。
- 宽高必须4对齐。
- 设置depth深度会占用VB,此时要保证有足够的VB供内部轮转,否则会造成后端无数据流。
【相关数据类型及接口】
ot_vi_ext_chn_attr
【说明】
定义VI扩展通道属性。
【定义】
typedef struct {
ot_vi_chn bind_chn;
ot_ext_chn_src_type src_type;
ot_size size;
ot_pixel_format pixel_format;
ot_video_format video_format;
ot_dynamic_range dynamic_range;
ot_compress_mode compress_mode;
td_u32 depth;
ot_frame_rate_ctrl frame_rate_ctrl;
td_bool buf_share_en;
} ot_vi_ext_chn_attr;
【成员】
【解决方案差异】
无
【注意事项】
- 扩展通道宽高必须2对齐。
- 使能buf_share_en后,扩展通道在实现电子变倍功能时与物理通道共用buffer,达到省内存的目的。使能后的使用约束如下:
- 仅Hi3516CV610支持;
- 电子变倍的实现在vi的物理通道裁剪,在扩展通道实现放大;
- 使能buf_share_en后物理通道不能绑定后端模块,只能绑定扩展通道,扩展通道再绑定其他模块;
- buf_share_en为扩展通道的静态属性,需关闭扩展通道后才能去使能;
- 仅支持扩展通道放大, 不支持缩小;
- 仅支持输出YUV420像素格式;
- 使能buf_share_en后不支持设置物理通道深度;
- 使能buf_share_en后不支持设置物理通道低延时属性;
- 使能buf_share_en后通道后处理功能不生效;
- 使能buf_share_en后扩展通道size、pixel_format、dynamic_range、video_format、compress_mode不能动态变化;
- 使能buf_share_en后扩展通道的pixel_format、dynamic_range、video_format、compress_mode需要与物理通道保持一致;
- 使能buf_share_en通道后扩展通道裁剪功能不生效;
- 使能buf_share_en后,vi物理通道所需的写出VB大小会增大,按照宽度为扩展通道宽度+256行计算并分配。
【相关数据类型及接口】
ot_vi_crop_info
【说明】
定义VI CROP信息结构体。
【定义】
【成员】
|
【解决方案差异】
无
【注意事项】
-
若crop_mode为OT_COORD_RATIO(相对坐标模式),使用rect的成员时应做转换,计算公式为:
- X = 起始点坐标 x 原始图像宽度/1000,合法取值范围:[0, 999],计算完成后会进行取整操作和对齐操作。公式同样适用于纵坐标计算,X/Y坐标都是2对齐。
- width =区域宽度 x 实际图像宽度/1000,区域宽度取值范围:[1, 1000]。计算完成后会进行取整操作和2字节对齐操作。公式同样适用于区域高度计算。
- 计算后的宽高不能小于通道支持的最小宽高。
-
若crop_mode为OT_COORD_ABS(绝对坐标模式),X/Y坐标都是要求2对齐,宽高要求2对齐。
【相关数据类型及接口】
ot_vi_chn_status
【说明】
定义VI 通道的状态信息。
【定义】
typedef struct {
td_bool enable;
td_u32 frame_rate;
td_u32 lost_frame_cnt;
td_u32 vb_fail_cnt;
ot_size size;
} ot_vi_chn_status;
【成员】
【注意事项】
- 当PIPE处于VI离线,VPSS离线模式,所有字段都有效。
- 当PIPE处于VI离线,VPSS在线模式,该接口不支持。
- 当PIPE处于VI在线,VPSS离线模式,所有字段都有效。
- 当PIPE处于VI在线,VPSS在线模式,该接口不支持。
【相关数据类型及接口】
ot_vi_stitch_cfg_mode
【说明】
定义拼接组ISP配置的同步方式。
【定义】
typedef enum {
OT_VI_STITCH_CFG_MODE_NORM = 0,
OT_VI_STITCH_CFG_MODE_SYNC,
OT_VI_STITCH_CFG_MODE_BUTT
} ot_vi_stitch_cfg_mode;
【成员】
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
ot_vi_stitch_grp_attr
【说明】
定义VI 拼接组的属性。
【定义】
typedef struct {
td_bool stitch_en;
ot_vi_stitch_cfg_mode cfg_mode;
td_u32 max_pts_gap;
td_u32 pipe_num;
ot_vi_pipe pipe_id[OT_VI_MAX_PHYS_PIPE_NUM];
} ot_vi_stitch_grp_attr;
【成员】
【解决方案差异】
无。
【注意事项】
- 一个PIPE最多只能属于一个拼接组。
- 虚拟pipe不支持sync拼接模式。
- sync拼接模式时组内两个pipe的分辨率必须一致。
- 虚拟pipe不支持配置sensor, 拼接效果可能受影响, 不建议使用虚拟pipe做拼接场景。详细限制和影响见《ISP开发参考》中“系统控制”章节。
【相关数据类型及接口】
ot_vi_mod_param
【说明】
定义VI模块参数。
【定义】
typedef struct {
td_u32 max_out_width;
td_u32 max_out_height;
td_s32 detect_err_frame;
td_u32 drop_err_frame;
} ot_vi_mod_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
OT_DIS_MAX_IMAGE_WIDTH
【说明】
定义DIS的最大图像宽度。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_DIS_MAX_IMAGE_HEIGHT
【说明】
定义DIS的最大图像高度。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_DIS_MIN_IMAGE_WIDTH
【说明】
定义DIS的最小图像宽度。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_DIS_MIN_IMAGE_HEIGHT
【说明】
定义DIS的最小图像高度。
【定义】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_dis_mode
【说明】
定义DIS防抖算法模式。
【定义】
typedef enum {
OT_DIS_MODE_4_DOF_GME = 0, /* Only use with GME in 4 dof. */
OT_DIS_MODE_6_DOF_GME, /* Only use with GME in 6 dof. */
OT_DIS_MODE_GYRO, /* Only use with gyro in 6 dof. */
OT_DIS_MODE_GYRO_ADVANCE, /* Only use with gyro advance. */
OT_DIS_MODE_HYBRID, /* Use with gyro and gme in 6 dof. */
OT_DIS_MODE_4_DOF_HYBRID, /* Use with gyro and gme in 4 dof. */
OT_DIS_MODE_BUTT,
} ot_dis_mode;
【成员】
【注意事项】
- 通常情况下,OT_DIS_MODE_GYRO_ADVANCE模式的防抖效果都是大于等于普通GYRO模式,并且频率或振幅越大,收益越明显。
- 初步测试发现,当振动台频率不小于7hz或振幅不小于0.5deg,ADVANCE模式与普通模式的防抖效果就有可能基本相当。
- OT_DIS_MODE_HYBRID模式和OT_DIS_MODE_4_DOF_HYBRID模式支持的最大图像分辨率为4096x4096。
【相关数据类型及接口】
ot_dis_motion_level
【说明】
定义镜头的运动级别。
【定义】
typedef enum {
OT_DIS_MOTION_LEVEL_LOW = 0, /* Low motion level. */
OT_DIS_MOTION_LEVEL_NORM, /* Normal motion level. */
OT_DIS_MOTION_LEVEL_HIGH, /* High motion level. */
OT_DIS_MOTION_LEVEL_BUTT
} ot_dis_motion_level;
【成员】
【注意事项】
Hi3519DV500不支持OT_DIS_MOTION_LEVEL_LOW模式。
【相关数据类型及接口】
ot_dis_pdt_type
【说明】
定义使用DIS的产品形态。
【定义】
typedef enum {
OT_DIS_PDT_TYPE_RECORDER = 0, /* RECORDER product type. */
OT_DIS_PDT_TYPE_DV, /* DV product type. */
OT_DIS_PDT_TYPE_DRONE, /* DRONE product type. */
OT_DIS_PDT_TYPE_BUTT
} ot_dis_pdt_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_dis_crop_separate
【说明】
定义裁剪比例水平、垂直分开配置的属性。
【定义】
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_dis_cfg
【说明】
定义DIS的配置信息。
【定义】
typedef struct {
ot_dis_mode mode;
ot_dis_motion_level motion_level;
ot_dis_pdt_type pdt_type;
td_u32 buf_num;
td_u32 crop_ratio;
ot_dis_crop_separate crop_separate;
td_u32 frame_rate;
td_bool camera_steady;
td_bool scale;
td_u32 ref_num;
} ot_dis_cfg;
【成员】
【注意事项】
- ot_dis_mode为OT_DIS_MODE_GYRO或OT_DIS_MODE_GYRO_ADVANCE时需要调用ss_mpi_vpss_get_grp_cfg(请参考“视频处理子系统”章节)设置vpss_grp_cfg中的is_dis_gyro_support属性为TRUE。
- camera_steady只在_录像机_产品形态下有效,在DV和无人机产品形态下会默认设置为TD_FALSE。
- ot_dis_cfg中的参数除crop_ratio和crop_separate外,其他参数都不可动态修改,如果需要修改,必须先关闭DIS,再动态修改ot_dis_cfg中的参数。
- crop_ratio和crop_separate裁剪比例的精度不同,crop_ratio以百分位进行裁剪,crop_separate以千分位进行裁剪。
- crop_ratio裁剪模式和crop_separate裁剪模式不能动态切换,必须先关闭DIS,重新设置裁剪参数以及对应VPSS通道属性中的width、height。
-
scale参数的含义
- 采用crop_ratio配置裁剪比例时,scale为TRUE将图像放大回输入分辨率。
- 采用crop_separate配置裁剪比例时,scale为TRUE将图像裁剪比例较大的一边与输入分辨率保持一致,裁剪比例较小的一边成比例放大。
-
对于crop_ratio参数:
- scale为TRUE时,可以调用接口ss_mpi_vi_set_chn_dis_cfg动态修改crop_ratio。
- scale为FALSE时,不可以动态修改crop_ratio,必须先关闭DIS,再修改crop_ratio值。
-
对于crop_separate参数:
- scale为TRUE时,可以调用接口ss_mpi_vi_set_chn_dis_cfg动态成固定比例修改crop_separate。若配置新裁剪比后,由于精度损失导致输出图像分辨率发生改变,防抖模块会以原裁剪比做防抖输出,同时logmpp会试探性给出正确的推荐值。
- scale为FALSE时,不可以动态修改crop_separate,必须先关闭DIS,再修改crop_separate值。
-
crop_separate裁剪模式下,scale为TRUE时的分辨率计算公式
- crop_separate.horizontal较大时:
,对计算结果进行四舍五入,再向下偶数取整(保证分辨率为偶数)。 - crop_separate.vertical较大时:
,对计算结果进行四舍五入,再向下偶数取整(保证分辨率为偶数)。
- crop_separate.horizontal较大时:
-
对于参数未有任何修改,但调用ss_mpi_vi_set_chn_dis_cfg重复设置时,接口返回成功。
- 在使用crop_separate、scale参数的过程中,如果输出图像分辨率相比输入发生改变,需要修改对应VPSS通道属性中的width、height时,可调用ss_mpi_vi_get_chn_dis_out_size获取dis处理后的图像size,再调用ss_mpi_vpss_get_chn_attr、ss_mpi_vpss_set_chn_attr,获取、重设VPSS通道属性。
- 使用防抖参考帧数ref_num功能,需要调用ss_mpi_vpss_get_grp_cfg(请参考“视频处理子系统”章节)设置vpss_grp_cfg中的is_dis_ref_support属性为TRUE,设置成功后才会开始缓存ref_num帧图像。
- 防抖参考帧数ref_num大于0的情况,只有在OT_DIS_MODE_GYRO_ADVANCE模式下生效。需增加ref_num个帧存VB,图像输出延时增加ref_num帧。刚开启有参考帧防抖时,需要缓存参考帧,预览图像会出现卡顿现象。
【相关数据类型及接口】
- ss_mpi_vi_set_chn_dis_cfg
- ss_mpi_vi_get_chn_dis_cfg
- ss_mpi_vi_set_chn_dis_attr
- ss_mpi_vi_get_chn_dis_attr
ot_dis_attr
【说明】
定义DIS属性。
【定义】
typedef struct {
td_bool enable;
td_bool gdc_bypass;
td_u32 moving_subject_level;
td_s32 rolling_shutter_coef;
td_s32 timelag;
td_u32 hor_limit;
td_u32 ver_limit;
td_bool still_crop;
td_u32 strength;
td_bool dis_ldc_en;
ot_dis_ldc_attr dis_ldc_attr;
td_u32 ref_slope;
td_bool rotation_compensation_en;
ot_dis_rotation_compensation compensation;
} ot_dis_attr;
【成员】
【注意事项】
- hor_limit和ver_limit只在camera_steady为TD_TRUE时生效,当camera_steady为TD_FALSE时,会默认设置为最大值。
- 不建议使用gdc_bypass参数作为DIS功能开关,默认设置其值为TD_FALSE,当设置为TD_TRUE时,DIS的PMF矫正功能不生效。使用中,如果不想使能DIS,请设置DIS开关enable为TD_FALSE;如果想使能DIS,请把DIS开关enable设置为TD_TRUE,同时把gdc_bypass设置为TD_FALSE。
- scale为TD_FALSE时,gdc_bypass参数状态改变,使能dis后,需要重设对应VPSS通道属性中的width、height。
- GME DIS 不能与DIS LDC同时使用,可与 LDC 功能同时使用。
-
使用 Gyro DIS 时,必须设置 DIS LDC 参数,请参考《图像质量调试工具使用指南》“DIS 标定工具使用说明”章节。
- 场景一:DIS LDC+Gyro DIS 效果,DIS 设置为 TRUE,dis_ldc_en 设置为 TRUE。
- 场景二:单独 Gyro DIS 效果,DIS 设置为 TRUE,dis_ldc_en 设置为 FALSE。
-
dis_ldc_en 开关效果受 DIS LDC 参数的影响:
- DIS 镜头标定工具中 DisRatio 有影响。DisRatio 为0时,标定导出参数强制进行畸变矫正,dis_ldc_en 开关无效果。DisRatio 为1时可以控制在是否开关畸变校正功能。DisRatio 为其它值时,由 DisRatio 影响校正强度,dis_ldc_en 控制其开关。
- 当使用 FOV 直接转换出来的 DIS LDC 参数时,开关无效果。
-
ref_slope只有在OT_DIS_MODE_GYRO_ADVANCE模式并且防抖参考帧数ref_num大于0的情况下生效。
- GME DIS 不能与旋转稳像功能同时使用,只有DIS开关enable和旋转稳像开关rotation_compensation_en都设置为TD_TRUE的时候,旋转稳像功能才会生效。
- 旋转稳像功能开启前需要将 dis_ldc_en 开关置为TRUE,否则地平线增稳效果异常。
- 开启旋转稳像功能,需提供正确的加速度数据给DIS模块,如使能motion sensor采集ACC数据,设置motion fusion正确的ACC六面标定等。
【相关数据类型及接口】
ot_dis_ref_mode
【说明】
定义DIS参考帧模式。
【定义】
typedef enum {
OT_DIS_REF_MODE_REFRESH = 0,
OT_DIS_REF_MODE_FIXED,
OT_DIS_REF_MODE_BUTT
} ot_dis_ref_mode;
【成员】
【注意事项】
- OT_DIS_REF_MODE_FIXED模式仅OT_DIS_MODE_4_DOF_GME和OT_DIS_MODE_6_DOF_GME防抖模式支持。
- OT_DIS_REF_MODE_FIXED模式,目前暂不支持。
【相关数据类型及接口】
ot_dis_param
【说明】
定义DIS可选参数。
【定义】
typedef struct {
td_u32 large_motion_stable_coef;
td_u32 low_freq_motion_preserve;
td_u32 low_freq_motion_freq;
td_bool fpd_adaptive_en;
ot_dis_ref_mode ref_mode;
} ot_dis_param;
【成员】
【注意事项】
- 参数只在GME和HYBRID模式下有效,不配置使用默认参数。
- 算法特征点对数的阈值默认是30对,fpd_adaptive_en使能后会自适应降低阈值,最低降低到10对,fpd_adaptive_en关闭、enable开关关闭或still_crop开关打开后,特征点阈值都会恢复成默认的30。
- fpd_adaptive_en仅支持IPC模式使用。
【相关数据类型及接口】
ot_atten_coef
【说明】
定义陀螺仪防抖的漂移衰减系数。
【定义】
【成员】
【注意事项】
- 当steady_atten_coef特别小时,漂移回零较快,但会出现不平滑现象。
- 陀螺仪防抖业务重启后,漂移衰减系数会继续使用上次业务配置的参数,不会使用默认值,如果需要修改必须调用ss_mpi_vi_set_chn_dis_alg_attr重新配置。
- 使能旋转稳像开关rotation_compensation_en后,漂移衰减系数将不再生效。
【相关数据类型及接口】
ot_gyrodis_alg_attr
【说明】
定义陀螺仪防抖算法属性。
【定义】
【成员】
【注意事项】
无
【相关数据类型及接口】
ot_src_point_info
【说明】
定义DIS输入查找坐标点信息。
【定义】
typedef struct {
td_bool enable;
td_u32 point_num;
ot_point point[OT_DIS_POINT_NUM];
} ot_src_point_info;
【成员】
|
取值范围:[0, OT_DIS_POINT_NUM],数据类型见《MPP媒体处理软件V6.0开发接口》"系统控制"章节。 |
|
【注意事项】
只有在GYRO_ADVANCE模式下才会生效。输出坐标点的信息存储在《MPP 媒体处理软件 V6.0 开发参考》"系统控制"章节的ot_dst_point_info中。
【相关数据类型及接口】
ss_mpi_vi_set_chn_dis_alg_attr
ot_dis_alg_attr
【说明】
定义DIS算法属性。
【定义】
typedef struct {
ot_gyrodis_alg_attr gyrodis_alg_attr;
ot_src_point_info point_info;
} ot_dis_alg_attr;
【成员】
【注意事项】
无
【相关数据类型及接口】
ot_dis_rotation_compensation
【说明】
定义DIS旋转稳像功能参数。
【定义】
【成员】
【注意事项】
对于幅型比16:9的镜头,为了避免画面出现黑边现象,max_roll_delta的推荐配置如下:
对于幅型比4:3的镜头,为了避免画面出现黑边现象,max_roll_delta的推荐配置如下:
开启旋转稳像功能,DIS输出图像的裁剪比例的配置建议不高于70,裁剪比越小水平线纠偏效果越好,但画质会有损失。原始画面剧烈抖动或者镜头LDC参数不准确都导致需要调小max_roll_delta。
目前,在后向参考开启的条件下,旋转稳像功能是默认支持随机身旋转,即画面转动超过45度往上,画面稳住的不再是0度地平线,而是90度方向的垂直线,以此类推。如需关闭这个默认的随机身旋转稳像,可将final_roll配成一个非0的小整数,如正负1。
使用旋转稳像时建议开启后向参考功能。
【相关数据类型及接口】
ot_dis_wdr_attr
【说明】
定义DIS WDR属性。
【定义】
【成员】
【注意事项】
参数只在GYRO模式下有效,不配置使用默认参数
【相关数据类型及接口】
错误码
视频输入API错误码如表1所示。
表 1 视频输入API错误码

