跳转至

视频输入

须知:

本章节不适用于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

    图像处理的数据单位。图像的行超过图像处理的单位长度时,驱动会做分块处理。

功能描述

功能框图

图 1 VI在软件层次划分的4个部分

VI从软件上划分了输入设备(DEV),输入PIPE(图示为物理PIPE,虚拟PIPE只包含ISP_BE)、物理通道(PHY_CHN)、扩展通道(EXT_CHN)四个层级。扩展通道不开启时,VI模块数据流由物理通道直接输出到后级模块。各芯片的设备、PIPE、通道个数差异如表1所示。

表 1 设备/PIPE/通道的个数

解决方案

DEV

PHY_PIPE

VIR_PIPE

PHY_CHN

EXT_CHN

OT_VI_MAX_DEV_NUM

OT_VI_MAX_PHYS_PIPE_NUM

OT_VI_MAX_VIRT_PIPE_NUM

OT_VI_MAX_PHYS_CHN_NUM

OT_VI_MAX_EXT_CHN_NUM

Hi3519DV500

4

7

8

1

0

Hi3516DV500

2

Hi3516CV610

2

2

2

1

1

  • Hi3519DV500视频输入通道功能如图2所示。

    图 2 Hi3519DV500 VI通道功能框图

  • Hi3516CV610视频输入通道功能如图3所示。

    图 3 Hi3516CV610 VI通道功能框图

视频输入设备

所有VI设备都是相互独立的,支持时序解析。

表 1 VI DEV输入分辨率

解决方案名称

宽度

高度

Hi3519DV500

[120, 8192]

[88, 8192]

Hi3516CV610

[120, 4096]

[80, 4096]

视频输入PIPE

VI的PIPE包含了ISP的相关处理功能,主要是对图像数据进行流水线处理,输出YUV图像格式给通道。PIPE的工作模式请参考“系统控制”章节的“VI和VPSS”的工作模式描述。

表 1 Hi3519DV500 VI PIPE支持输入格式

VI PIPE号

RAW格式

YUV格式

0~2

Y

N

3

Y

Y

4~6

N

Y

7~14

Y

Y

表 2 Hi3516CV610 VI PIPE支持输入格式

VI PIPE号

RAW格式

YUV格式

0

Y

Y

1

Y

Y

2~3

Y

Y

表 3 VI PIPE输入分辨率

解决方案名称

VI在线模式

VI离线模式

Hi3519DV500

宽度[120, 4096]

高度[88, 8192]

宽度[120, 8192]

高度[88, 8192]

Hi3516CV610

RAW

宽度[120, 3200]

高度[120, 4096]

YUV

宽度[120, 3200]

高度[80, 4096]

RAW

宽度[120, 4096]

高度[120, 4096]

YUV

宽度[120, 4096]

高度[80, 4096]

  • 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输出分辨率

解决方案名称

VI在线模式

VI离线模式

Hi3519DV500

宽度[120, 4096]

高度[88, 8192]

宽度[120, 8192]

高度[88, 8192]

Hi3516CV610

宽度[120, 3200]

高度[80, 4096]

宽度[120, 4096]

高度[80, 4096]

视频扩展通道

扩展通道是物理通道的扩展,扩展通道具备缩放、裁剪功能,它通过绑定物理通道,将物理通道输出作为自己的输入,然后输出用户设置的目标图像。Hi3519DV500 不支持扩展通道功能,Hi3516CV610支持1个扩展通道。

表 1 VI EXT_CHN输出分辨率

解决方案名称

VI在线模式

VI离线模式

Hi3516CV610

宽度[32, 4096]

高度[32, 4096]

宽度[32, 4096]

高度[32, 4096]

绑定关系

  • 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接口的绑定关系

解决方案

VI DEV

MIPI/MIPI_YUV420/MIPI_YUV422

YUV420_LEGACY

BT.1120/BT.656/BT.601

DC

THERMO

Hi3519DV500

0

0

x

x

x

x

1

1

x

0

0

0

2

2

x

x

x

x

3

3

x

1

1

x

Hi3516CV610

0

0

x

0

0

x

1

1

x

1

1

x

“x”表示无效设备号,数字表示有效的设备ID。

从模式

从模式SENSOR,需要使用VI的从模式模块。从模式与VI的物理PIPE对应关系是固定的。用户需要根据SENSOR管脚的连线和表1确定使用哪个从模式模块,然后选择对应的物理PIPE号创建物理PIPE,否则会没有数据,详细步骤如下:

  1. 根据硬件原理图确认SENSOR管脚连接到了SENSOR_HSx/ SENSOR_VSx。
  2. 根据表1确定该SENSOR连接到从模式模块x。
  3. 软件根据表1确定在采集这个SENSOR的数据时可以使用编号为x的PIPE。

    表 1 从模式与PIPE的对应关系表

    解决方案

    从模式编号

    可连接SENSOR数目

    管脚名称

    默认使用PIPE的编号

    Hi3519DV500

    0

    2

    SENSOR_VS0

    SENSOR_HS0

    PIPE:0

    1

    2

    SENSOR_VS1

    SENSOR_HS1

    PIPE:1

    2

    2

    SENSOR_VS2

    SENSOR_HS2

    PIPE:2

    3

    2

    SENSOR_VS3

    SENSOR_HS3

    PIPE:3

    Hi3516CV610

    0

    2

    SENSOR_VS0

    SENSOR_HS0

    PIPE:0

    1

    2

    SENSOR_VS1

    SENSOR_HS1

    PIPE:1

    说明:

    从模式和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)

设备号

掩码0

掩码1

0

0xFFF00000

0x0

1

0xFFF00000

0x0

  • 1路/2路BT.1120高清输入场景(16bit输入)

    1路/2路BT.1120高清图像输入场景下,设置VI设备属性时,可根据表2配置掩码。

表 2 1路/2路BT.1120图像输入场景下的掩码配置(16bit)

设备号

掩码0

掩码1

0

0xFF000000

0x00FF0000

1

0xFF000000

0x00FF0000

  • 1路/2路D1图像输入场景(8bit输入)

    1路/2路 图像输入场景下,设置VI设备属性时,可根据表3配置掩码。

表 3 1路D1图像输入场景下的掩码配置(8bit)

设备号

掩码0

掩码1

0

0xFF000000

0x0

1

0xFF000000

0x0

API参考

VI模块实现Dev配置和使能、Dev和Pipe绑定、Grp配置、Pipe创建和使能、Chn配置和使能等功能。

该功能模块提供以下MPI:

ss_mpi_vi_set_dev_attr

【描述】

设置VI设备属性。基本设备属性默认了部分芯片配置,满足绝大部分的sensor对接要求。

【语法】

td_s32 ss_mpi_vi_set_dev_attr(ot_vi_dev vi_dev, const ot_vi_dev_attr *dev_attr);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)

输入

dev_attr

VI设备属性指针。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

ss_mpi_vi_get_dev_attr

【描述】

获取VI设备属性。

【语法】

td_s32 ss_mpi_vi_get_dev_attr(ot_vi_dev vi_dev, ot_vi_dev_attr *dev_attr);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)

输入

dev_attr

VI设备属性指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

如果未设置VI设备属性,该接口将返回失败。

【举例】

无。

【相关主题】

ss_mpi_vi_set_dev_attr

ss_mpi_vi_set_dev_irq_affinity

【描述】

设置VI 设备的中断源亲和性,即不同设备优先响应对应的中断源。

【语法】

td_s32 ss_mpi_vi_set_dev_irq_affinity(ot_vi_dev vi_dev, td_u32 irq_index);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值:[0, OT_VI_MAX_DEV_NUM)

输入

irq_index

VI 设备中断源,VICAP有两个中断源。

取值:[0, 1]

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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 设备的中断源亲和性。

【语法】

td_s32 ss_mpi_vi_get_dev_irq_affinity(ot_vi_dev vi_dev, td_u32 *irq_index);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值:[0, OT_VI_MAX_DEV_NUM)。

输入

irq_index

VI 设备中断源。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_vi_set_dev_irq_affinity

ss_mpi_vi_enable_dev

【描述】

启用VI设备。

【语法】

td_s32 ss_mpi_vi_enable_dev(ot_vi_dev vi_dev);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • 启用前必须已经设置设备属性,否则返回失败。
  • 可重复启用,不返回失败。

【举例】

无。

【相关主题】

ss_mpi_vi_disable_dev

ss_mpi_vi_disable_dev

【描述】

禁用VI设备。

【语法】

td_s32 ss_mpi_vi_disable_dev(ot_vi_dev vi_dev);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • 需先销毁所有与该VI设备绑定的物理PIPE后,再禁用VI设备。
  • 可重复禁用,不返回失败。
  • 支持低功耗处理,禁用VI设备后将完全关闭该设备,需要重新设置属性,才能使能VI设备。

【举例】

无。

【相关主题】

ss_mpi_vi_enable_dev

ss_mpi_vi_set_thermo_sns_attr

【描述】

设置热成像探测器的配置属性。请参考《Thermo开发参考》第3章。

【解决方案差异】

Hi3516CV610不支持该接口。

【相关主题】

ss_mpi_vi_get_thermo_sns_attr

ss_mpi_vi_get_thermo_sns_attr

【描述】

获取热成像探测器的配置属性。请参考《Thermo开发参考》第3章。

【解决方案差异】

Hi3516CV610不支持该接口。

【相关主题】

ss_mpi_vi_set_thermo_sns_attr

ss_mpi_vi_enable_dev_send_frame

【描述】

启用设备送帧功能。

【语法】

td_s32 ss_mpi_vi_enable_dev_send_frame(ot_vi_dev vi_dev);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值:0。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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

【描述】

禁用设备送帧功能。

【语法】

td_s32 ss_mpi_vi_disable_dev_send_frame(ot_vi_dev vi_dev);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值:0。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值:0。

输入

frame_info

设备送帧的帧信息结构体。

ot_video_frame_info具体请参考“系统控制”章节。

输入

milli_sec

超时参数milli_sec:

-1表示阻塞模式;

0表示非阻塞模式;

大于0表示超时模式,超时时间的单位为毫秒(ms)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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

【描述】

设置自产生时序属性。

【语法】

td_s32 ss_mpi_vi_set_dev_timing_attr(ot_vi_dev vi_dev, const ot_vi_dev_timing_attr *timing_attr);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)

输入

timing_attr

详见ot_vi_dev_timing_attr说明

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无

【需求】

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

【描述】

获取自产生时序属性。

【语法】

td_s32 ss_mpi_vi_get_dev_timing_attr(ot_vi_dev vi_dev, ot_vi_dev_timing_attr *timing_attr);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)

输入

timing_attr

详见ot_vi_dev_timing_attr说明

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h 、ss_mpi_vi.h

【注意】

无。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_set_dev_data_attr

【描述】

设置设备自产生数据属性。

【语法】

td_s32 ss_mpi_vi_set_dev_data_attr(ot_vi_dev vi_dev, const ot_vi_dev_data_attr *data_attr);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)

输入

data_attr

VI设备自产生数据属性指针。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

使用本接口前,需先配置DEV属性,并使能设备,否则返回失败。

【举例】

无。

【相关主题】

ss_mpi_vi_get_dev_data_attr

ss_mpi_vi_get_dev_data_attr

【描述】

获取设备自产生数据属性。

【语法】

td_s32 ss_mpi_vi_get_dev_data_attr(ot_vi_dev vi_dev, ot_vi_dev_data_attr *data_attr);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)

输入

data_attr

VI设备自产生数据属性指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_vi_set_dev_data_attr

ss_mpi_vi_bind

【描述】

一对一绑定Dev和Pipe。

【语法】

td_s32 ss_mpi_vi_bind(ot_vi_dev vi_dev, ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)

输入

vi_pipe

VI 物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无

【需求】

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

ss_mpi_vi_unbind

【描述】

一对一解绑定Dev和Pipe。

【语法】

td_s32 ss_mpi_vi_unbind(ot_vi_dev vi_dev, ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)

输入

vi_pipe

VI 物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

必须先销毁物理PIPE再解绑定,否则返回失败。

【举例】

无。

【相关主题】

ss_mpi_vi_enable_dev

ss_mpi_vi_get_bind_by_dev

【描述】

获取与Dev绑定的Pipe。

【语法】

td_s32 ss_mpi_vi_get_bind_by_dev(ot_vi_dev vi_dev, ot_vi_bind_pipe *bind_pipe);

【参数】

参数名称

描述

输入/输出

vi_dev

VI设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)

输入

bind_pipe

绑定Dev的物理PIPE序号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_vi_bind

ss_mpi_vi_get_bind_by_pipe

【描述】

获取与Pipe绑定的Dev。

【语法】

td_s32 ss_mpi_vi_get_bind_by_pipe(ot_vi_pipe vi_pipe, ot_vi_dev *vi_dev);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI 物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)。

输入

vi_dev

绑定PIPE的设备号。

取值范围:[0, OT_VI_MAX_DEV_NUM)。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_vi_bind

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);

【参数】

参数名称

描述

输入/输出

fusion_grp

wdr合成组的组号。

取值范围:[0, OT_VI_MAX_WDR_FUSION_GRP_NUM)

输入

grp_attr

wdr合成组的属性指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

fusion_grp

wdr合成组的组号。

取值范围:[0, OT_VI_MAX_WDR_FUSION_GRP_NUM)

输入

grp_attr

wdr合成组的属性指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【参数】

参数名称

描述

输入/输出

distribute_grp

分发组的组号。

取值范围:[0, OT_VI_MAX_DISTRIBUTE_GRP_NUM)

输入

distribute_grp_attr

分发组的属性指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

仅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 部分功能限制差异表

功能

主pipe作用,从pipe同时生效

主pipe作用,从pipe不生效

不支持

pipe低延时

√

     

pipe中断类型

√

     

pipe采集配置、分配VB等

√

     

pipe dump帧

  

√

  

pipe送帧

     

√

pipe帧率控制

     

√

用户图片

     

√

卷绕

     

√

pipe BYPASS BE

     

√

【举例】

无。

【相关主题】

无。

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);

【参数】

参数名称

描述

输入/输出

distribute_grp

分发组的组号。

取值范围:[0, OT_VI_MAX_DISTRIBUTE_GRP_NUM)

输入

distribute_grp_attr

分发组的属性指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

仅Hi3516CV610支持。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

本接口需要在设置分发组属性后调用。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_create_pipe

【描述】

创建一个VI PIPE。

【语法】

td_s32 ss_mpi_vi_create_pipe(ot_vi_pipe vi_pipe, const ot_vi_pipe_attr *pipe_attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

pipe_attr

PIPE的属性结构体指针。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

ss_mpi_vi_destroy_pipe

【描述】

销毁一个VI PIPE。

【语法】

td_s32 ss_mpi_vi_destroy_pipe(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

  • 使用本接口前,需先调用ss_mpi_vi_stop_pipe(vi_pipe)停止PIPE,否则提示失败。
  • 在未创建PIPE或重复销毁PIPE时,调用本接口,不会失败。

【举例】

无。

【相关主题】

ss_mpi_vi_create_pipe

ss_mpi_vi_set_pipe_attr

【描述】

设置VI PIPE的属性。

【语法】

td_s32 ss_mpi_vi_set_pipe_attr(ot_vi_pipe vi_pipe, const ot_vi_pipe_attr *pipe_attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

pipe_attr

PIPE的属性结构体指针。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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的属性。

【语法】

td_s32 ss_mpi_vi_get_pipe_attr(ot_vi_pipe vi_pipe, ot_vi_pipe_attr *pipe_attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

pipe_attr

PIPE的属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

PIPE必须已创建。

【举例】

无

【相关主题】

无

ss_mpi_vi_start_pipe

【描述】

启用VI PIPE。

【语法】

td_s32 ss_mpi_vi_start_pipe(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建
  • 重复调用该函数设置同一个PIPE返回成功。

【举例】

无。

【相关主题】

ss_mpi_vi_set_dev_attr

ss_mpi_vi_stop_pipe

【描述】

禁用VI PIPE。

【语法】

td_s32 ss_mpi_vi_stop_pipe(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

  • PIPE必须已创建。
  • 重复调用该函数设置同一个PIPE返回成功。
  • 在线WDR模式下,退出pipe需先退出主pipe,再退出其他pipe,否则主pipe在从pipe stop后缺少数据输入,可能会有异常报错。

【举例】

无。

【相关主题】

ss_mpi_vi_set_dev_attr

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)

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

wrap_attr

PIPE的卷绕属性结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

Hi3519DV500不支持此接口。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • 必须在PIPE创建之前调用。
  • PIPE处于离线模式。
  • 开启卷绕后不能动态修改PIPE压缩属性、像素格式、帧率控制。
  • 双路接入或者一路dev绑定两个pipe时,不支持一路开启卷绕、一路关闭卷绕。
  • 其他卷绕使用限制如表1所示。
  • 双路sensor从模式的配置步骤详见《性能╱带宽╱延时╱内存调优指南》“双路离线卷绕编码场景”章节。

表 1 卷绕功能与其他VI子功能限制

VI子功能

卷绕开启

卷绕关闭

WDR

N

Y

PIPE帧压缩

N

Y

PIPE获取帧/释放帧

N

Y

PIPE灌图

N

Y

分块

N

Y

AIBNR

N

Y

设置/获取PIPE低延时属性

N

Y

设置/获取PIPE中断类型属性

N

Y

使能/关闭PIPE中断

N

Y

设置/获取PIPE后裁剪

N

Y

设置/获取VB源

N

Y

绑定/解绑VB池

N

Y

【举例】

无

【相关主题】

无

ss_mpi_vi_get_pipe_buf_wrap_attr

【描述】

获取VI PIPE的离线卷绕属性。

【语法】

td_s32 ss_mpi_vi_get_pipe_buf_wrap_attr(ot_vi_pipe vi_pipe, ot_vi_pipe_buf_wrap_attr *wrap_attr)

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

wrap_attr

PIPE的卷绕属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

Hi3519DV500不支持此接口。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

PIPE处于线性离线模式。

【举例】

无

【相关主题】

无

ss_mpi_vi_set_pipe_3dnr_attr

【描述】

设置VI PIPE的3DNR属性。

【语法】

td_s32 ss_mpi_vi_set_pipe_3dnr_attr(ot_vi_pipe vi_pipe, const ot_3dnr_attr *attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)。

输入

attr

PIPE 3DNR的属性结构体指针,具体请参考“系统控制”章节。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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的属性。

【语法】

td_s32 ss_mpi_vi_get_pipe_3dnr_attr(ot_vi_pipe vi_pipe, ot_3dnr_attr *attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

attr

PIPE 3DNR的属性结构体指针。

具体请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

ss_mpi_vi_set_pipe_3dnr_param

【描述】

设置VI PIPE的3DNR参数。

【语法】

td_s32 ss_mpi_vi_set_pipe_3dnr_param(ot_vi_pipe vi_pipe, const ot_3dnr_param *param);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

param

PIPE 3DNR的参数结构体指针,ot_3dnr_param详情请查看“系统控制”章节。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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的参数。

【语法】

td_s32 ss_mpi_vi_get_pipe_3dnr_param(ot_vi_pipe vi_pipe, ot_3dnr_param *param);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

param

PIPE 3DNR的参数结构体指针,ot_3dnr_param详情请查看“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

ss_mpi_vi_set_pipe_pre_crop

【描述】

设置VI 物理PIPE输入端的裁剪功能属性。

【语法】

td_s32 ss_mpi_vi_set_pipe_pre_crop(ot_vi_pipe vi_pipe, const ot_crop_info *crop_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

crop_info

裁剪功能参数结构体。

静态属性。

ot_crop_info请查看“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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输入端的裁剪功能属性。

【语法】

td_s32 ss_mpi_vi_get_pipe_pre_crop(ot_vi_pipe vi_pipe, ot_crop_info *crop_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI 物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

crop_info

裁剪功能参数结构体

ot_crop_info请查看“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

Hi3516CV610不支持此接口。

【需求】

  • 头文件:ot_common_video.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建,否则会返回失败。
  • 虚拟PIPE不支持。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_set_pipe_post_crop

【描述】

设置VI 物理PIPE输出端的裁剪功能属性。

【语法】

td_s32 ss_mpi_vi_set_pipe_post_crop(ot_vi_pipe vi_pipe, const ot_crop_info *crop_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI 物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

crop_info

裁剪功能参数结构体。

静态属性。

ot_crop_info请查看“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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输出端的裁剪功能属性。

【语法】

td_s32 ss_mpi_vi_get_pipe_post_crop(ot_vi_pipe vi_pipe, ot_crop_info *crop_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI 物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

crop_info

裁剪功能参数结构体

ot_crop_info请查看“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)。

输入

dump_attr

VI 物理PIPE dump的属性指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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图像帧属性。

【语法】

td_s32 ss_mpi_vi_get_pipe_frame_dump_attr(ot_vi_pipe vi_pipe, ot_vi_frame_dump_attr *dump_attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)。

输入

dump_attr

VI 物理PIPE dump的属性指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

frame_info

VI PIPE帧信息结构体。

ot_video_frame_info具体请参考“系统控制”章节。

输出

milli_sec

超时参数milli_sec:

-1表示阻塞模式;

0表示非阻塞模式;

大于0表示超时模式,超时时间的单位为毫秒(ms)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

ss_mpi_vi_release_pipe_frame

【描述】

释放VI 物理PIPE的图像帧。

【语法】

td_s32 ss_mpi_vi_release_pipe_frame(ot_vi_pipe vi_pipe, const ot_video_frame_info *frame_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

frame_info

VI PIPE帧信息结构体。

ot_video_frame_info具体请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

  • 本接口调用次数需与ss_mpi_vi_get_pipe_frame匹配使用,释放次数过多则返回报错。
  • 用户必须保证frame_info结构中的信息与获取时一致,否则可能造成释放不成功。

【举例】

无。

【相关主题】

ss_mpi_vi_get_pipe_frame

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

取值范围:[0, 1]。

输入

dump_attr

VI 物理PIPE 私有数据dump的属性指针。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

取值范围:[0, 1]。

输入

dump_attr

VI 物理PIPE 私有数据dump的属性指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

取值范围:[0, 1]

输入

data_info

VI PIPE私有数据信息结构体。

输出

milli_sec

超时参数milli_sec:

-1表示阻塞模式;

0表示非阻塞模式;

大于0表示超时模式,超时时间的单位为毫秒(ms)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

取值范围:[0, 1]

输入

data_info

VI PIPE数据信息结构体。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

frame_source

PIPE的数据来源。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

  • PIPE必须已创建。
  • 只支持VI离线模式。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_get_pipe_frame_source

【描述】

获取VI PIPE数据的来源。

【语法】

td_s32 ss_mpi_vi_get_pipe_frame_source(ot_vi_pipe vi_pipe, ot_vi_pipe_frame_source *frame_source);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

frame_source

PIPE的数据来源。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

  • PIPE必须已创建。
  • 只支持VI离线模式。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_set_pipe_param

【描述】

设置PIPE参数。

【语法】

td_s32 ss_mpi_vi_set_pipe_param(ot_vi_pipe vi_pipe, const ot_vi_pipe_param *pipe_param);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

pipe_param

VI PIPE参数,详见结构体定义。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

【举例】

无。

【相关主题】

ss_mpi_vi_get_pipe_param

ss_mpi_vi_get_pipe_param

【描述】

获取PIPE参数。

【语法】

td_s32 ss_mpi_vi_get_pipe_param(ot_vi_pipe vi_pipe, ot_vi_pipe_param *pipe_param);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

pipe_param

VI PIPE参数,详见结构体定义。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

PIPE必须已创建。

【举例】

无。

【相关主题】

ss_mpi_vi_set_pipe_param

ss_mpi_vi_set_pipe_bnr_buf_num

【描述】

设置VI PIPE bayernr buffer个数。

【语法】

td_s32 ss_mpi_vi_set_pipe_bnr_buf_num(ot_vi_pipe vi_pipe, td_u32 buf_num);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

buf_num

Buffer 个数。

取值范围:[OT_VI_MIN_BNR_BUF_NUM, OT_VI_MAX_BNR_BUF_NUM]

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件: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个数。

【语法】

td_s32 ss_mpi_vi_get_pipe_bnr_buf_num(ot_vi_pipe vi_pipe, td_u32 *buf_num);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

buf_num

Buffer 个数。

取值范围:[OT_VI_MIN_BNR_BUF_NUM, OT_VI_MAX_BNR_BUF_NUM]

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

frame_info

VI帧信息结构体。具体描述请参见“系统控制”章节。

输入

milli_sec

超时参数milli_sec:

-1表示阻塞模式;

0表示非阻塞模式;

大于0表示超时模式,超时时间的单位为毫秒(ms)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

frame_info

RAW数据信息结构体指针数组。

ot_video_frame_info具体请参考“系统控制”章节。

输入

frame_num

RAW数据的帧信息个数

输入

milli_sec

超时参数milli_sec:

-1表示阻塞模式;

0表示非阻塞模式;

大于0表示超时模式,超时时间的单位为毫秒(ms)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件: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状态。

【语法】

td_s32 ss_mpi_vi_query_pipe_status(ot_vi_pipe vi_pipe, ot_vi_pipe_status *pipe_status);

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

输入

pipe_status

PIPE状态信息。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

  • 当PIPE处于VI在线VPSS在线模式,VI在线VPSS离线模式时,接口只能获取使能开关、中断数量和宽高信息。
  • PIPE必须已创建。
  • 虚拟PIPE不支持。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_enable_pipe_interrupt

【描述】

启动VI 物理PIPE中断。

【语法】

td_s32 ss_mpi_vi_enable_pipe_interrupt(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件: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中断。

【语法】

td_s32 ss_mpi_vi_disable_pipe_interrupt(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【语法】

td_s32 ss_mpi_vi_set_pipe_vc_number(ot_vi_pipe vi_pipe, td_u32 vc_number);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI 物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

vc_number

VC号。

取值范围:[0, OT_VI_MAX_VC_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ss_mpi_vi.h

【注意】

  • 必须在PIPE创建后,使能之前调用。
  • 虚拟PIPE不支持。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_get_pipe_vc_number

【描述】

获取VI 物理PIPE对接前端sensor或者AD的VC号。

【语法】

td_s32 ss_mpi_vi_get_pipe_vc_number(ot_vi_pipe vi_pipe, td_u32 *vc_number);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI 物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

vc_number

VC号。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ss_mpi_vi.h

【注意】

  • 必须在PIPE创建后调用。
  • 虚拟PIPE不支持。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_set_pipe_low_delay

【描述】

设置VI PIPE低延时属性。

【语法】

td_s32 ss_mpi_vi_set_pipe_low_delay(ot_vi_pipe vi_pipe, const ot_low_delay_info *low_delay_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

ot_low_delay_info具体请参考“系统控制”章节。

输入

low_delay_info

低延时功能参数结构体。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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低延时属性。

【语法】

td_s32 ss_mpi_vi_get_pipe_low_delay(ot_vi_pipe vi_pipe, ot_low_delay_info *low_delay_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

low_delay_info

低延时功能参数结构体。

ot_low_delay_info具体请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

interrupt_attr

中断属性结构体指针。ot_frame_interrupt_attr详情请查看“系统控制”章节。

静态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

interrupt_attr

中断属性结构体指针。ot_frame_interrupt_attr详情请查看“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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压缩参数。

【语法】

td_s32 ss_mpi_vi_get_pipe_compress_param(ot_vi_pipe vi_pipe, ot_vi_compress_param *compress_param);

【参数】

参数名称

描述

输入/输出

vi_pipe

物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)。

输入

compress_param

压缩参数的结构体。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • 物理PIPE必须已创建。
  • 若物理PIPE是非压,则返回失败。
  • 虚拟PIPE不支持。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_set_pipe_user_pic

【描述】

设置用户图片,作为无视频信号时的插入图片。

【语法】

td_s32 ss_mpi_vi_set_pipe_user_pic(ot_vi_pipe vi_pipe, const ot_video_frame_info *user_pic_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

user_pic_info

用户图片信息结构体。

ot_video_frame_info具体请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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插入用户图片。

【语法】

td_s32 ss_mpi_vi_enable_pipe_user_pic(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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插入用户图片。

【语法】

td_s32 ss_mpi_vi_disable_pipe_user_pic(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

  • 只支持离线PIPE。
  • VI通道不再需要输出用户图片时,应该调用此接口以恢复输出ADC的原始视频数据。
  • 此接口可以重复调用。
  • PIPE必须已创建。

【举例】

无。

【相关主题】

ss_mpi_vi_set_pipe_vb_src

【描述】

设置VI PIPE的VB来源。

【语法】

td_s32 ss_mpi_vi_set_pipe_vb_src(ot_vi_pipe vi_pipe, ot_vb_src vb_src);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vb_src

VB来源,默认值为OT_VB_SRC_COMMON。

ot_vb_src具体请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【语法】

td_s32 ss_mpi_vi_get_pipe_vb_src(ot_vi_pipe vi_pipe, ot_vb_src *vb_src);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vb_src

VB来源结构体指针。

ot_vb_src具体请参考 “系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

PIPE必须已创建。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_attach_pipe_vb_pool

【描述】

将VI的PIPE绑定到某个视频缓存VB池中。

【语法】

td_s32 ss_mpi_vi_attach_pipe_vb_pool(ot_vi_pipe vi_pipe, ot_vb_pool vb_pool);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vb_pool

视频缓存VB池ID。具体请参见“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件: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池中解绑定。

【语法】

td_s32 ss_mpi_vi_detach_pipe_vb_pool(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_vi.h、ot_common_vi.h
  • 库文件:libss_mpi.a

【解决方案差异】

无。

【注意】

PIPE必须已创建。

【举例】

无。

【相关主题】

ss_mpi_vi_attach_pipe_vb_pool

ss_mpi_vi_attach_aiisp_vb_pool

【描述】

将VI的AIISP算法绑定到某个视频缓存VB池中。

【语法】

td_s32 ss_mpi_vi_attach_aiisp_vb_pool(ot_vi_pipe vi_pipe, ot_aiisp_pool *pool_attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

pool_attr

视频缓存VB池属性指针。

ot_aiisp_pool 请参见《AIISP开发参考》文档中的ot_aiisp_pool结构体。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件: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池中解绑定。

【语法】

td_s32 ss_mpi_vi_detach_aiisp_vb_pool(ot_vi_pipe vi_pipe, ot_aiisp_type aiisp_type);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

aiisp_type

AIISP 类型。取值范围见《AIISP开发参考》文档。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件: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处理时钟。

【语法】

td_s32 ss_mpi_vi_set_pipe_online_clock(ot_vi_pipe vi_pipe, td_u32 pixel_rate);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI 物理PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

pixel_rate

PIPE输入的sensor时序像素速率。

取值范围:(0, ISP最大处理时钟]

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

头文件: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文件描述符。

【语法】

td_s32 ss_mpi_vi_get_pipe_fd(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

chn_attr

VI通道属性结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无

【需求】

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

ss_mpi_vi_get_chn_attr

【描述】

获取VI通道属性。

【语法】

td_s32 ss_mpi_vi_get_chn_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vi_chn_attr *chn_attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

chn_attr

VI通道属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建,否则会返回失败。
  • 通道属性需先设置后,才可获取。

【举例】

无。

【相关主题】

ss_mpi_vi_set_chn_attr

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[OT_VI_MAX_PHYS_CHN_NUM, OT_VI_MAX_CHN_NUM)

输入

ext_chn_attr

扩展通道属性结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[OT_VI_MAX_PHYS_CHN_NUM, OT_VI_MAX_CHN_NUM)

输入

ext_chn_attr

扩展通道属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

Hi3519DV500不支持此接口。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建,否则会返回失败。
  • 扩展通道属性需先设置后,才可获取。
  • VI在线VPSS在线模式、VI离线VPSS在线模式下不支持本接口。

【举例】

无。

【相关主题】

ss_mpi_vi_set_ext_chn_attr

ss_mpi_vi_enable_chn

【描述】

启用VI通道。

【语法】

td_s32 ss_mpi_vi_enable_chn(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建,否则会返回失败。
  • 必须先设置通道属性。
  • 可重复启用VI通道,不返回失败。
  • VI在线VPSS在线模式、VI离线VPSS在线模式下,启动VI通道不生效,直接返回成功。

【举例】

无。

【相关主题】

ss_mpi_vi_disable_chn

ss_mpi_vi_disable_chn

【描述】

禁用VI通道。

【语法】

td_s32 ss_mpi_vi_disable_chn(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建,否则会返回失败。
  • 可重复禁用VI通道,不返回失败。
  • VI在线VPSS在线模式、VI离线VPSS在线模式下,禁用VI通道不生效,直接返回成功。

【举例】

无。

【相关主题】

ss_mpi_vi_enable_chn

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

crop_info

裁剪功能参数结构体。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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通道裁剪功能属性。

【语法】

td_s32 ss_mpi_vi_get_chn_crop(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vi_crop_info *crop_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

crop_info

裁剪功能参数结构体。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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配置信息。

【语法】

td_s32 ss_mpi_vi_set_chn_dis_cfg(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, const ot_dis_cfg *dis_cfg);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

dis_cfg

DIS配置信息结构体。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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

ss_mpi_vi_get_chn_dis_cfg

【描述】

获取VI通道的DIS配置信息。

【语法】

td_s32 ss_mpi_vi_get_chn_dis_cfg(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_dis_cfg *dis_cfg);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

dis_cfg

DIS配置信息结构体。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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_cfg

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

dis_attr

DIS属性结构体指针。

动态属性

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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属性。

【语法】

td_s32 ss_mpi_vi_get_chn_dis_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_dis_attr *dis_attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

dis_attr

DIS属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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_cfg

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

dis_alg_attr

DIS算法属性结构体指针。

动态属性

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

dis_alg_attr

DIS算法属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

dis_param

DIS可选参数结构体。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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的可选参数。

【语法】

td_s32 ss_mpi_vi_get_chn_dis_param(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_dis_param *dis_param);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

dis_param

DIS可选参数结构体。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI物理通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

rotation_attr

旋转属性,具体描述请参见“系统控制”章节。

动态属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI物理通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

rotation_attr

旋转属性,具体描述请参见“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

Hi3519DV500不支持此接口。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建。
  • VI在线VPSS在线模式、VI离线VPSS在线模式下不支持本接口。

【举例】

无。

【相关主题】

ss_mpi_vi_set_chn_rotation

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI物理通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

ldc_attr

LDC属性结构体指针。

动态属性

ot_ldc_attr具体请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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

ss_mpi_vi_get_chn_ldc_attr

【描述】

获取VI镜头畸变校正(LDC)属性。

【语法】

td_s32 ss_mpi_vi_get_chn_ldc_attr(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_ldc_attr *ldc_attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI物理通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

ldc_attr

LDC属性结构体指针。

具体请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建。
  • VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。

【举例】

无。

【相关主题】

ss_mpi_vi_set_chn_ldc_attr

ss_mpi_vi_get_chn_dis_out_size

【描述】

获取VI通道的DIS生效后的图像宽高。

【语法】

td_s32 ss_mpi_vi_get_chn_dis_out_size(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_size *out_size);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

out_size

DIS生效后输出分辨率结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

frame_info

VI帧信息结构体。具体描述请参见“系统控制”章节。

输出

milli_sec

超时参数milli_sec:

-1表示阻塞模式;

0表示非阻塞模式;

大于0表示超时模式,超时时间的单位为毫秒(ms)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

具体描述请参见“系统控制”章节。

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

具体描述请参见“系统控制”章节。

输入

frame_info

VI帧信息结构体。

具体描述请参见“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • 此接口必须与ss_mpi_vi_get_chn_frame配对使用。
  • 用户必须保证frame_info结构中的信息与获取时一致,否则可能造成释放不成功。

【举例】

无。

【相关主题】

ss_mpi_vi_get_chn_frame

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

low_delay_info

低延时功能参数结构体。

ot_low_delay_info具体请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

low_delay_info

低延时功能参数结构体。

ot_low_delay_info具体请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建。
  • 只有VI在线VPSS离线、VI离线VPSS离线模式下支持该功能。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_set_chn_align

【描述】

设置VI通道输出数据的行stride对齐。

【语法】

td_s32 ss_mpi_vi_set_chn_align(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, td_u32 align);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)。

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

align

VI通道输出数据的行stride对齐,单位为Byte,默认值为 0。

取值范围:[0, 1024]

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

ss_mpi_vi_get_chn_align

【描述】

获取VI通道输出数据的行stride对齐。

【语法】

td_s32 ss_mpi_vi_get_chn_align(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, td_u32 *align);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

align

VI通道输出数据的行stride对齐,单位为Byte。

取值范围:[0, 1024]

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建。
  • VI在线VPSS在线模式、VI离线VPSS在线模式下,不支持本接口。

【举例】

无。

【相关主题】

ss_mpi_vi_set_chn_align

ss_mpi_vi_set_chn_fmu_mode

【描述】

设置VI通道FMU模式。

【语法】

td_s32 ss_mpi_vi_set_chn_fmu_mode(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_fmu_mode fmu_mode);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。详情请查看“系统控制”章节。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。详情请查看“系统控制”章节。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

fmu_mode

VI通道 FMU模式,ot_fmu_mode详情请查看“系统控制”章节。

取值范围:[0,OT_FMU_MODE_BUTT)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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通道功能限制

VI通道功能

OT_FMU_MODE_DIRECT

OT_FMU_MODE_WRAP

OT_FMU_MODE_OFF

通道低延时

N

N

Y

Flip

N

N

Y

Mirror

N

N

Y

非紧凑/紧凑段压缩

N

N

Y

tile32x4

N

N

Y

通道输出RAW格式

N

N

Y

通道输出SP422

N

N

Y

通道crop+通道图像宽度>4096

N

N

Y

获取、释放通道输出帧数据

N

N

Y

通道后处理功能(CoverEx)

N

N

Y

表 2 FMU模式与VPSS功能限制

VPSS 功能

OT_FMU_MODE_DIRECT

OT_FMU_MODE_WRAP

OT_FMU_MODE_OFF

fov

N

N

Y

dis

N

N

Y

spread

N

N

Y

ldc

N

N

Y

pmf

N

N

Y

lut

N

N

Y

rotation

N

N

Y

fisheye

N

N

Y

stitch

N

N

Y

VPSS组裁剪

N

N

Y

VPSS FMU DIRECT模式

N

N

Y

【举例】

无。

【相关主题】

ss_mpi_vi_get_chn_fmu_mode

ss_mpi_vi_get_chn_fmu_mode

【描述】

获取VI通道FMU模式。

【语法】

td_s32 ss_mpi_vi_get_chn_fmu_mode(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_fmu_mode *fmu_mode);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

fmu_mode

VI通道 FMU模式,ot_fmu_mode详情请查看“系统控制”章节。

取值范围:[0,OT_FMU_MODE_BUTT)

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

Hi3516CV610不支持此接口。

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

PIPE必须已创建。

【举例】

无

【相关主题】

ss_mpi_vi_set_chn_fmu_mode

ss_mpi_vi_set_chn_vb_src

【描述】

设置VI通道使用VB的来源。

【语法】

td_s32 ss_mpi_vi_set_chn_vb_src(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vb_src vb_src);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

vb_src

VB来源,默认值为OT_VB_SRC_COMMON。

ot_vb_src具体请参考 “系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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的来源。

【语法】

td_s32 ss_mpi_vi_get_chn_vb_src(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vb_src *vb_src);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)。

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)。

输入

vb_src

VB来源结构体指针。

ot_vb_src具体请参考 “系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

【语法】

td_s32 ss_mpi_vi_attach_chn_vb_pool(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vb_pool vb_pool);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

vb_pool

视频缓存VB池信息。

ot_vb_pool具体请参考 “系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件: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池中解绑定。

【语法】

td_s32 ss_mpi_vi_detach_chn_vb_pool(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_CHN_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

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

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

chn_status

VI通道状态。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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通道文件描述符。

【语法】

td_s32 ss_mpi_vi_get_chn_fd(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[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);

【参数】

参数名称

描述

输入/输出

stitch_grp

拼接组号。

取值范围:[0, OT_VI_MAX_STITCH_GRP_NUM)

输入

stitch_grp_attr

拼接组的属性结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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 的拼接组属性。

【语法】

td_s32 ss_mpi_vi_get_stitch_grp_attr(ot_vi_grp stitch_grp, ot_vi_stitch_grp_attr *stitch_grp_attr);

【参数】

参数名称

描述

输入/输出

stitch_grp

拼接组号。

取值范围:[0, OT_VI_MAX_STITCH_GRP_NUM)

输入

stitch_grp_attr

拼接组的属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

Hi3516CV610不支持此接口。

【需求】

头文件:ot_common_vi.h、ss_mpi_vi.h

【注意】

必须先设置拼接组的属性才能使用本接口。

【举例】

无。

【相关主题】

无。

ss_mpi_vi_set_mod_param

【描述】

设置VI模块参数。

【语法】

td_s32 ss_mpi_vi_set_mod_param(const ot_vi_mod_param *mod_param);

【参数】

参数名称

描述

输入/输出

mod_param

VI模块参数结构体。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

  • 头文件: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模块参数。

【语法】

td_s32 ss_mpi_vi_get_mod_param(ot_vi_mod_param *mod_param);

【参数】

参数名称

描述

输入/输出

mod_param

VI模块参数结构体。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

无。

【需求】

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

ss_mpi_vi_get_pipe_psfm_attr

【描述】

获取伪单帧模式的配置属性。请参考《AD多路接入用户指南》第2章。

【解决方案差异】

Hi3516CV610不支持该接口。

【相关主题】

ss_mpi_vi_set_pipe_psfm_attr

ss_mpi_vi_enable_chn_motion_denoise

【描述】

启用VI通道的运动降噪。

【语法】

td_s32 ss_mpi_vi_enable_chn_motion_denoise(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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通道的运动降噪。

【语法】

td_s32 ss_mpi_vi_disable_chn_motion_denoise(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

dis_wdr_attr

DIS WDR属性结构体指针。

动态属性

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

vi_chn

VI通道号。

取值范围:[0, OT_VI_MAX_PHYS_CHN_NUM)

输入

dis_wdr_attr

DIS WDR属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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发一帧。

【语法】

td_s32 ss_mpi_vi_distribute_one_frame(ot_vi_grp distribute_grp, ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

distribute_grp

分发组的组号。

取值范围:[0, OT_VI_MAX_DISTRIBUTE_GRP_NUM)

输入

vi_pipe

分发组发到对应的VI PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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运动信息。

【语法】

td_s32 ss_mpi_vi_get_pipe_3dnr_motion_info(ot_vi_pipe vi_pipe, ot_nr_motion_info *motion_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)。

输入

motion_info

3DNR运动信息的结构体指针,具体请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【解决方案差异】

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运动信息。

【语法】

td_s32 ss_mpi_vi_release_pipe_3dnr_motion_info(ot_vi_pipe vi_pipe, ot_nr_motion_info *motion_info);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)

输入

motion_info

3DNR运动信息的结构体指针,具体请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败。

【解决方案差异】

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对齐。

【语法】

td_s32 ss_mpi_vi_set_pipe_align(ot_vi_pipe vi_pipe, td_u32 align);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

align

VI PIPE的输出数据的行stride对齐,单位为Byte,默认值为 0。取值范围:0或者16。

输入

【返回值】

返回值

描述

0

成功。

非0

失败。

【解决方案差异】

无

【需求】

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

ss_mpi_vi_get_pipe_align

【描述】

获取VI PIPE的输出数据的行stride对齐。

【语法】

td_s32 ss_mpi_vi_get_pipe_align(ot_vi_pipe vi_pipe, td_u32 *align);

【参数】

参数名称

描述

输入/输出

vi_pipe

PIPE号。

取值范围:[0, OT_VI_MAX_PHYS_PIPE_NUM)

输入

align

VI PIPE的输出数据的行stride对齐的指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败。

【解决方案差异】

无

【需求】

  • 头文件:ot_common_vi.h、ss_mpi_vi.h
  • 库文件:libss_mpi.a

【注意】

  • PIPE必须已创建。

【举例】

无。

【相关主题】

ss_mpi_vi_set_pipe_align

数据类型

视频输入相关数据类型定义如下:

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的最大个数。

【定义】

#define OT_VI_MAX_PIPE_NUM  (OT_VI_MAX_PHYS_PIPE_NUM + OT_VI_MAX_VIRT_PIPE_NUM)

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_STITCH_GRP_NUM

【说明】

定义VI 拼接组的最大个数。

【定义】

#define OT_VI_MAX_STITCH_GRP_NUM   4

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_WDR_FUSION_GRP_NUM

【说明】

定义VI WDR融合组的最大个数。

【定义】

#define OT_VI_MAX_WDR_FUSION_GRP_NUM   OT_VI_MAX_PIPE_NUM

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_DISTRIBUTE_GRP_NUM

【说明】

定义VI 分发组的最大个数。

【定义】

#define OT_VI_MAX_DISTRIBUTE_GRP_NUM      2

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_WDR_NUM

【说明】

定义VI WDR融合组合成帧的最大个数

【定义】

#define OT_VI_MAX_WDR_NUM           2

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_WDR_FRAME_NUM

【说明】

定义VI WDR融合组合成帧的最大个数。

【定义】

#define OT_VI_MAX_WDR_FRAME_NUM           2

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_DISTRIBUTE_PIPE_NUM

【说明】

定义VI分发组pipe个数。

【定义】

#define OT_VI_MAX_DISTRIBUTE_PIPE_NUM           2

【注意事项】

无。

【相关数据类型及接口】

无

OT_VI_MAX_VC_NUM

【说明】

定义VI VC号的最大个数。

【定义】

#define OT_VI_MAX_VC_NUM           4

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_PHYS_CHN_NUM

【说明】

定义VI物理通道的最大个数。

【定义】

不同项目对应具体信息请参见表1。

OT_VI_MAX_EXT_CHN_NUM

【说明】

定义VI扩展通道的最大个数。

【定义】

不同项目对应具体信息请参见表1。

OT_VI_EXT_CHN_START

【说明】

定义VI扩展通道的起始通道号。

【定义】

#define OT_VI_EXT_CHN_START       OT_VI_MAX_PHYS_CHN_NUM

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_SPLIT_NODE_NUM

【说明】

定义VI最大任务分块个数。

【定义】

#define OT_VI_MAX_SPLIT_NODE_NUM    3

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_EXTCHN_BIND_PER_CHN

【说明】

定义VI单个通道可绑定的扩展通道最大个数。

【定义】

#define OT_VI_MAX_EXTCHN_BIND_PER_CHN    8

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_CHN_NUM

【说明】

定义VI物理通道和扩展通道的总个数。

【定义】

#define OT_VI_MAX_CHN_NUM  (OT_VI_MAX_PHYS_CHN_NUM + OT_VI_MAX_EXT_CHN_NUM)

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_DEV_MIN_WIDTH

【说明】

VI设备捕获图像的最小宽度。

【定义】

#define OT_VI_DEV_MIN_WIDTH       120

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_DEV_MIN_HEIGHT

【说明】

VI设备捕获图像的最小高度。

【定义】

#define OT_VI_DEV_MIN_HEIGHT      88

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_DEV_MAX_WIDTH

【说明】

VI设备捕获图像的最大宽度。

【定义】

不同项目对应具体信息请参见表1

【注意事项】

无。

【相关数据类型及接口】

ss_mpi_vi_set_dev_attr

OT_VI_DEV_MAX_HEIGHT

【说明】

VI设备捕获图像的最大高度。

【定义】

不同项目对应具体信息请参见表1

【注意事项】

无

【相关数据类型及接口】

ss_mpi_vi_set_dev_attr

OT_VI_PIPE_OFFLINE_MIN_WIDTH

【说明】

VI PIPE离线处理图像的最小宽度。

【定义】

#define OT_VI_PIPE_OFFLINE_MIN_WIDTH       120

【注意事项】

无

【相关数据类型及接口】

无。

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处理图像的最小宽度。

【定义】

#define OT_VI_PIPE_ONLINE_MIN_WIDTH       120

【注意事项】

无

【相关数据类型及接口】

无

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物理通道离线支持的最小宽度。

【定义】

#define OT_VI_PHYS_CHN_OFFLINE_MIN_WIDTH       120

【注意事项】

无

【相关数据类型及接口】

无

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物理通道在线支持的最小宽度。

【定义】

#define OT_VI_PHYS_CHN_ONLINE_MIN_WIDTH       120

【注意事项】

无

【相关数据类型及接口】

无

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扩展通道支持的最小宽度。

【定义】

#define OT_VI_EXT_CHN_MIN_WIDTH    32

【注意事项】

无

【相关数据类型及接口】

无

OT_VI_EXT_CHN_MIN_HEIGHT

【说明】

VI扩展通道支持的最小高度。

【定义】

#define OT_VI_EXT_CHN_MIN_HEIGHT     32

【注意事项】

无

【相关数据类型及接口】

无

OT_VI_EXT_CHN_MAX_WIDTH

【说明】

VI扩展通道支持的最大宽度。

【定义】

#define OT_VI_EXT_CHN_MAX_WIDTH    4096

【注意事项】

无

【相关数据类型及接口】

无

OT_VI_EXT_CHN_MAX_HEIGHT

【说明】

VI扩展通道支持的最大高度。

【定义】

#define OT_VI_EXT_CHN_MAX_HEIGHT     4096

【注意事项】

无

【相关数据类型及接口】

无

OT_VI_EXT_CHN_MAX_ZOOMIN

【说明】

VI扩展通道支持的最大放大倍数。

【定义】

#define OT_VI_EXT_CHN_MAX_ZOOMIN         16

【注意事项】

无。

【相关数据类型及接口】

OT_VI_EXT_CHN_MAX_ZOOMOUT

OT_VI_EXT_CHN_MAX_ZOOMOUT

【说明】

VI扩展通道支持的最大缩小倍数。

【定义】

#define OT_VI_EXT_CHN_MAX_ZOOMOUT        30

【注意事项】

无。

【相关数据类型及接口】

OT_VI_EXT_CHN_MAX_ZOOMIN

OT_VI_COMPRESS_PARAM_SIZE

【说明】

VI RAW数据压缩参数的大小。

【定义】

#define OT_VI_COMPRESS_PARAM_SIZE          152

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MIN_BNR_BUF_NUM

【说明】

VI bayernr buffer个数的最小值。

【定义】

#define OT_VI_MIN_BNR_BUF_NUM             2

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_BNR_BUF_NUM

【说明】

VI bayernr buffer个数的最大值。

【定义】

#define OT_VI_MAX_BNR_BUF_NUM             128

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VI_MAX_AD_CHN_NUM

【说明】

VI设备属性中ad_chn_id的个数。

【定义】

#define OT_VI_MAX_AD_CHN_NUM            (4UL)

【注意事项】

无

【相关数据类型及接口】

无

OT_VI_COMPONENT_MASK_NUM

【说明】

VI设备属性中Component mask 的个数。

【定义】

#define OT_VI_COMPONENT_MASK_NUM             (2UL)

【注意事项】

无

【相关数据类型及接口】

无。

OT_VI_INVALID_FRAME_RATE

【说明】

VI帧率控制的宏,当原始帧率和目标帧率都为该宏时,不做帧率控制。

【定义】

#define OT_VI_INVALID_FRAME_RATE  (-1)

【注意事项】

无。

【相关数据类型及接口】

无。

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_INTF_MODE_BT656

输入数据的协议符合标准BT.656协议,端口数据输入模式为亮度色度分离模式,分量模式为单分量。

OT_VI_INTF_MODE_BT601

输入数据的协议符合标准BT.601协议,端口数据输入模式为亮度色度复合模式,分量模式为单分量。

OT_VI_INTF_MODE_DC

输入数据的协议为Digital camera协议,端口数据输入模式为亮度色度复合模式,分量模式为单分量。

OT_VI_INTF_MODE_BT1120

输入数据的协议符合标准BT.1120协议(BT656+双分量),端口数据输入模式为亮度色度分离模式,分量模式为双分量。

OT_VI_INTF_MODE_MIPI

输入数据符合MIPI/LVDS/SUBLVDS/HISPI协议,用于传输RAW数据。

OT_VI_INTF_MODE_MIPI_YUV420_NORM

输入数据符合MIPI协议,用于传输YUV420 normal模式的数据。

OT_VI_INTF_MODE_MIPI_YUV420_LEGACY

输入数据符合MIPI协议,用于传输YUV420 legacy模式的数据。

OT_VI_INTF_MODE_MIPI_YUV422

输入数据符合MIPI协议,用于传输YUV422数据。

OT_VI_INTF_MODE_THERMO

热成像工作模式为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;

【成员】

成员名称

描述

OT_VI_WORK_MODE_MULTIPLEX_1

1路复合工作模式。

OT_VI_WORK_MODE_MULTIPLEX_2

2路复合工作模式,输入数据的协议必须为标准BT.656协议。

OT_VI_WORK_MODE_MULTIPLEX_4

4路复合工作模式,输入数据的协议必须为标准BT.656协议。

【注意事项】

当该项设为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

VI输入为逐行图像。

OT_VI_SCAN_INTERLACED

VI输入为隔行图像。

【注意事项】

仅支持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_DATA_SEQ_VUVU

YUV数据通过分离模式输入时,C分量的输入排列顺序为VUVU。

OT_VI_DATA_SEQ_UVUV

YUV数据通过分离模式输入时,C分量的输入排列顺序为UVUV。

OT_VI_DATA_SEQ_UYVY

YUV数据通过复合模式输入时,顺序为UYVY。

OT_VI_DATA_SEQ_VYUY

YUV数据通过复合模式输入时,顺序为VYUY。

OT_VI_DATA_SEQ_YUYV

YUV数据通过复合模式输入时,顺序为YUYV。

OT_VI_DATA_SEQ_YVYU

YUV数据通过复合模式输入时,顺序为YVYU。

【注意事项】

无。

【相关数据类型及接口】

ot_vi_vsync

【说明】

定义视频设备输入数据的垂直同步信号类型。

【定义】

typedef enum {
    OT_VI_VSYNC_FIELD = 0,
    OT_VI_VSYNC_PULSE,
    OT_VI_VSYNC_BUTT
} ot_vi_vsync;

【成员】

成员名称

描述

OT_VI_VSYNC_FIELD

垂直同步翻转模式,即翻转一次表示一场。BT.601模式下表示场号,DC模式下表示行有效信号。

OT_VI_VSYNC_PULSE

垂直同步脉冲模式,即一个脉冲到来表示新的一帧或一场。

【注意事项】

无。

【相关数据类型及接口】

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_VSYNC_NEG_HIGH

若ot_vi_vsync = OT_VI_VSYNC_FIELD,则表示偶数场的vsync信号为高电平;

若ot_vi_vsync = OT_VI_VSYNC_PULSE,则表示vsync同步脉冲为正脉冲。

OT_VI_VSYNC_NEG_LOW

若ot_vi_vsync = OT_VI_VSYNC_FIELD,则表示偶数场的vsync信号为低电平;

若ot_vi_vsync = OT_VI_VSYNC_PULSE,则表示vsync同步脉冲为负脉冲。

【注意事项】

无。

【相关数据类型及接口】

ot_vi_hsync

【说明】

定义视频设备输入数据的水平同步信号类型。

【定义】

typedef enum {
    OT_VI_HSYNC_VALID_SIG = 0,
    OT_VI_HSYNC_PULSE,
    OT_VI_HSYNC_BUTT
} ot_vi_hsync;

【成员】

成员名称

描述

OT_VI_HSYNC_VALID_SIG

水平同步数据有效信号。

OT_VI_HSYNC_PULSE

水平同步脉冲信号。

【注意事项】

无。

【相关数据类型及接口】

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_HSYNC_NEG_HIGH

若ot_vi_hsync = OT_VI_SYNC_VALID_SIG则高电平表示有效数据;

若ot_vi_hsync = OT_VI_SYNC_PULSE,则正脉冲表示同步脉冲。

OT_VI_HSYNC_NEG_LOW

若ot_vi_hsync = OT_VI_SYNC_VALID_SIG,则低电平表示有效数据;

若ot_vi_hsync = OT_VI_SYNC_PULSE,则负脉冲表示同步脉冲。

【注意事项】

无。

【相关数据类型及接口】

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;

【成员】

成员名称

描述

OT_VI_VSYNC_NORM_PULSE

表示垂直同步时序脉冲有效信号。

OT_VI_VSYNC_VALID_SIG

表示垂直同步时序行有效信号。

【注意事项】

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_NEG_HIGH

若ot_vi_vsync_valid = OT_VI_VSYNC_VALID_SIG,则表示高电平为有效信号。

OT_VI_VSYNC_VALID_NEG_LOW

若ot_vi_vsync_valid = OT_VI_VSYNC_VALID_SIG,则表示低电平为有效信号。

【注意事项】

只有在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;

【成员】

成员名称

描述

hsync_hfb

水平前消隐区宽度。

hsync_act

水平有效宽度。

hsync_hbb

水平后消隐区宽度

vsync_vfb

帧图像或隔行输入时奇场图像的垂直前消隐区高度。

vsync_vact

帧图像或隔行输入时奇场垂直有效高度。

vsync_vbb

帧图像或隔行输入时奇场垂直后消隐区高度。

vsync_vbfb

隔行输入时偶场垂直前消隐区高度(帧输入时无效)。

vsync_vbact

隔行输入时偶场垂直有效高度(帧输入时无效)。

vsync_vbbb

隔行输入时偶场垂直后消隐区高度(帧输入时无效)。

【注意事项】

该结构体只有在BT.601时生效,其他时序无效。

【相关数据类型及接口】

ot_vi_sync_cfg

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;

【成员】

成员名称

描述

vsync

垂直同步信号类型。

vsync_neg

垂直同步信号的极性。

hsync

水平同步信号类型。

hsync_neg

水平同步信号的极性。

vsync_valid

垂直有效同步信号类型。

vsync_valid_neg

垂直有效同步信号的极性。

timing_blank

输入时序的消隐信息。

【注意事项】

  • 此部分同步信息详细配置可参考《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_DATA_TYPE_RAW

输入数据类型为RAW,VI前端一般接的是sensor。

OT_VI_DATA_TYPE_YUV

输入数据类型为YUV,VI前端一般接的是ADC。

【注意事项】

无。

【相关数据类型及接口】

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;

【成员】

成员名称

描述

intf_mode

接口模式。

work_mode

1、2、4路复合工作模式。

component_mask

分量掩码配置。当intf_mode = OT_VI_INTF_MODE_BT1120时,需要配置Y(对应该变量数组的0下标)和C(对应该变量数组的1下标)的分量掩码,其他模式时配置单分量掩码(对应该变量数组的0下标),另一个分量(对应该变量数组的1下标)配成0x0。

scan_mode

输入扫描模式 (逐行、隔行)。

ad_chn_id

取值范围:[-1, 3],推荐统一设置为默认值-1,无效参数,不做参数检查。

data_seq

输入数据顺序 (仅支持yuv格式)

sync_cfg

同步时序配置。

data_type

输入数据类型,Sensor输入一般为Raw,ADC输入一般为YUV。

data_reverse

因为走线约束等硬件原因,有可能出现AD/Sensor的数据线与VI数据线连接数据高低位反接,比如,AD_DATA0与VIU_DATA7连接,AD_DATA7与VIU_DATA0连接,以此类推。当AD/Sensor管脚与VI管脚正向连接时,取data_reverse = TD_FALSE;当反向连接时,取data_reverse = TD_TRUE。

in_size

VI设备可设置要捕获图像的高宽。

捕获图像的最小宽高与最大宽高:

宽度:[OT_VI_DEV_MIN_WIDTH, OT_VI_DEV_MAX_WIDTH]

高度:[OT_VI_DEV_MIN_HEIGHT, OT_VI_DEV_MAX_HEIGHT]

data_rate

设备的速率。

参数详情请参考“系统控制”章节。

【解决方案差异】

无

【注意事项】

  • 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自生成时序属性。

【定义】

typedef struct {
    td_bool enable;
    td_u32  frame_rate;
} ot_vi_dev_timing_attr;

【成员】

成员名称

描述

enable

自产生时序使能开关。

frame_rate

自产生时序的帧率。

【注意事项】

  • 使用此功能时,需配置Sensor类型与RAW数据文件的宽高相等,如均为4000px*3000px或者3840px*2160px。
  • 当使能自产生时序后,若用户设置的帧率超过设备最大帧率时,系统自动以设备最大帧率为有效值;同时用户设置的帧率必须大于0,否则返回错误。
  • 设备最大帧率由设备对应的时钟clk、设备宽高共同决定。

【相关数据类型及接口】

ss_mpi_vi_set_dev_timing_attr

ot_vi_dev_data_attr

【说明】

定义VI DEV自生成数据属性。

【定义】

typedef struct {
    td_bool enable;
} ot_vi_dev_data_attr;

【成员】

成员名称

描述

enable

自产生数据使能开关。

【注意事项】

无。

【相关数据类型及接口】

ss_mpi_vi_set_dev_data_attr

ot_vi_bind_pipe

【说明】

定义VI DEV与PIPE的绑定关系。

【定义】

typedef struct {
    td_u32     pipe_num;
    ot_vi_pipe  pipe_id[OT_VI_MAX_PHYS_PIPE_NUM];
} ot_vi_bind_pipe;

【成员】

成员名称

描述

pipe_num

该VI Dev所绑定的PIPE数目,取值范围[1, OT_VI_MAX_PHYS_PIPE_NUM]。

pipe_id

该VI Dev绑定的PIPE号。

【注意事项】

无。

【相关数据类型及接口】

ss_mpi_vi_get_bind_by_dev

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;

【成员】

成员名称

描述

wdr_mode

WDR工作模式,分为帧模式、行模式、非WDR等三大类。

cache_line

在线行模式WDR,离线PIPE数据缓存的行数。

取值范围:[1,PIPE的图像高度size.height]。根据带宽的使用情况和sensor的曝光行差等因素来调节到合适值。

pipe_id

确定哪几个pipe的数据要做WDR融合。

pipe_reverse

WDR融合组主pipe反转标记,设置为TRUE时最大的pipe_id为融合主pipe,FALSE时最小的pipe_id为融合主pipe。

【解决方案差异】

解决方案

支持的WDR模式

支持缓存行数

Hi3519DV500/Hi3516CV610

OT_WDR_MODE_NONE

OT_WDR_MODE_BUILT_IN

OT_WDR_MODE_2To1_LINE

OT_WDR_MODE_2To1_FRAME

支持。

Hi3516CV608

OT_WDR_MODE_NONE

-

【注意事项】

  • 芯片跑在线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;

【成员】

成员名称

描述

distribute_en

使能。

pipe_id

确定分发到哪几个pipe。

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_BYPASS_NONE

VI的数据经过FE与BE处理。

OT_VI_PIPE_BYPASS_FE

VI的数据不经过FE处理,只经过BE处理。

OT_VI_PIPE_BYPASS_BE

VI的数据经过FE处理,不经过BE处理。

【注意事项】

无。

【相关数据类型及接口】

ot_vi_pipe_attr

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;

【成员】

成员名称

描述

pipe_bypass_mode

VI PIPE的Bypass模式。

静态属性,创建PIPE时设定,不可更改。

isp_bypass

ISP是否bypass。

TD_FALSE:ISP正常运行。

TD_TRUE:ISP bypass,不运行ISP。

静态属性,创建PIPE时设定,不可更改。

size

输入图像宽高。

静态属性,创建PIPE时设定,不可更改。

在线模式下宽高取值范围:

[OT_VI_PIPE_ONLINE_MIN_WIDTH, OT_VI_PIPE_ONLINE_MAX_WIDTH] [OT_VI_PIPE_ONLINE_MIN_HEIGHT, OT_VI_PIPE_ONLINE_MAX_HEIGHT]

离线模式下取值范围:

[OT_VI_PIPE_OFFLINE_MIN_WIDTH, OT_VI_PIPE_OFFLINE_MAX_WIDTH]

[OT_VI_PIPE_OFFLINE_MIN_HEIGHT, OT_VI_PIPE_OFFLINE_MAX_HEIGHT]

pixel_format

像素格式。具体描述请参见“系统控制”章节。

compress_mode

数据压缩格式。具体信息请参考“系统控制”章节。

frame_rate_ctrl

帧率控制。

取值范围请参考“系统控制”章节。

【解决方案差异】

解决方案

pixel_format的取值范围差异

compress_mode的取值范围差异

pipe_bypass_mode的取值范围差异

Hi3519DV500/Hi3516CV610

支持RAW格式和YUV数据格式。

线性模式时,支持非压、行压缩和帧压缩模式。

WDR模式时,支持非压和行压缩模式;帧压缩模式只有WDR离线支持,WDR在线不支持。

虚拟PIPE只支持OT_VI_PIPE_BYPASS_FE。

【注意事项】

  • 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 卷绕属性。

【定义】

typedef struct {
    td_bool enable;
    td_u32 buf_line;
} ot_vi_pipe_buf_wrap_attr;

【成员】

成员名称

描述

enable

使能pipe卷绕。

buf_line

卷绕行数。

范围:[128, height*2]

【解决方案差异】

Hi3519DV500不支持此结构体。

【注意事项】

卷绕行不能大于pipe属性高度的2倍。

【相关数据类型及接口】

ot_vi_frame_dump_attr

【说明】

定义VI PIPE dump frame属性。

【定义】

typedef struct {
  td_bool enable;
  td_u32  depth;
} ot_vi_frame_dump_attr;

【成员】

成员名称

描述

enable

是否使能dump图像帧。

depth

Dump图像帧的队列深度。取值范围:[0, 8]

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

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_MODE_BACK

私有数据在帧信息的后消隐区。

OT_VI_PRIVATE_DATA_MODE_FRONT

私有数据在帧信息的前消隐区。

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

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;

【成员】

成员名称

描述

enable

是否使能dump私有数据。

data_mode

VI PIPE dump 私有数据的类型。

depth

Dump私有数据的队列深度。取值范围:[0, 8]。

data_size

私有数据的大小,单位:Byte

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_vi_private_data_info

【说明】

定义VI PIPE 私有数据相关的信息。

【定义】

typedef struct {
    td_u32 pool_id;
    td_u64 phys_addr;
    td_u64 pts;
} ot_vi_private_data_info;

【成员】

成员名称

描述

pool_id

私有数据使用pool id。

phys_addr

私有数据的物理地址。

pts

私有数据的时间戳,用于与图像帧同步。

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

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_VI_OUT_MODE_NORM

正常采集模式。

OT_VI_OUT_MODE_2F1_STAGGER

两帧采集stagger模式。

OT_VI_OUT_MODE_3F1_STAGGER

三帧采集stagger模式。

OT_VI_OUT_MODE_4F1_STAGGER

四帧采集stagger模式。

【注意事项】

无。

【相关数据类型及接口】

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

自适应模式,前5帧为NORM模式,5帧后自动切换为ADVANCE模式。

【注意事项】

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;

【成员】

成员名称

描述

discard_pro_pic_en

双pipe pro模式抓拍下,视频路是否丢掉长曝光帧,默认值为TD_FALSE。

out_mode

pipe stagger模式,Hi3519DV500/Hi3516CV610仅支持OT_VI_OUT_MODE_NORM模式。

data_rate

pipe 写出速率,Hi3519DV500/Hi3516CV610仅支持OT_DATA_RATE_X1模式。

参数详情请参考“系统控制”章节。

yuv_skip_en

yuv_skip 使能,默认值为TD_TRUE。

signed_bit_extend_en

signed_bit_extend,符号位扩展使能,默认值TD_FALSE。

bnr_info_en

BayerNR debug信息支持dump使能,默认值为TD_FALSE。

nr_effect_mode

3DNR降噪效果模式,默认值为OT_VI_NR_EFFECT_MODE_ADVANCE。

nr_advance_correct_en

3DNR OT_VI_NR_EFFECT_MODE_ADVANCE模式校正使能,默认值TD_FALSE。

discard_cc_err_pic_en

物理pipe的丢弃采集异常的图像使能,默认值TD_TRUE。

【注意事项】

  • 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_FRAME_SOURCE_FE

数据来自于前端FE,默认模式。

OT_VI_PIPE_FRAME_SOURCE_USER

数据来自用户送进来的数据。

【注意事项】

无。

【相关数据类型及接口】

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;

【成员】

成员名称

描述

enable

当前PIPE是否使能。

frame_rate

VI PIPE的实时帧率。

interrupt_cnt

中断计数。

lost_frame_cnt

丢帧计数。

vb_fail_cnt

VB申请失败计数。

size

PIPE当前图像大小。

【注意事项】

  • 当PIPE处于VI离线,VPSS离线模式,所有字段都有效。
  • 当PIPE处于VI离线,VPSS在线模式,所有字段都有效。
  • 当使能了用户图片,frame_rate无效。
  • 用户从BE送RAW,送YUV不会统计到frame_rate中。
  • 用户从FE送RAW,当PIPE处于VI在线,VPSS离线或者VI在线,VPSS在线,如果未使能dump功能,由于无帧数据输出,则frame_rate无效。

【相关数据类型及接口】

ss_mpi_vi_query_pipe_status

ot_vi_compress_param

【说明】

定义VI PIPE的RAW数据压缩参数。

【定义】

typedef struct {
    td_u8 compress_param[OT_VI_COMPRESS_PARAM_SIZE];
} ot_vi_compress_param;

【成员】

成员名称

描述

compress_param

压缩参数。

【注意事项】

无。

【相关数据类型及接口】

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;

【成员】

成员名称

描述

size

目标图像大小。

目标图像的最小宽高与最大宽高:

在线模式下宽度:

[OT_VI_PHYS_CHN_ONLINE_MIN_WIDTH,OT_VI_PHYS_CHN_ONLINE_MAX_WIDTH]

在线模式下高度:

[OT_VI_PHYS_CHN_ONLINE_MIN_HEIGHT,OT_VI_PHYS_CHN_ONLINE_MAX_HEIGHT]

离线模式下宽度:

[OT_VI_PHYS_CHN_OFFLINE_MIN_WIDTH,OT_VI_PHYS_CHN_OFFLINE_MAX_WIDTH]

离线模式下高度:

[OT_VI_PHYS_CHN_OFFLINE_MIN_HEIGHT,OT_VI_PHYS_CHN_OFFLINE_MAX_HEIGHT]

pixel_format

目标图像像素格式。具体描述请参见“系统控制”章节。

设置CHN时设定,可动态更改。

dynamic_range

目标图像动态范围。

静态属性,设置CHN时设定,不可更改。

具体描述请参见“系统控制”章节。

video_format

目标图像视频数据格式。

具体描述请参见“系统控制”章节。

compress_mode

目标图像压缩格式。

具体描述请参见“系统控制”章节。

mirror_en

Mirror使能开关。

TD_FALSE:不使能;

TD_TRUE:使能。

flip_en

Flip使能开关。

TD_FALSE:不使能;

TD_TRUE:使能。

depth

用户获取图像的队列深度,取值范围:[0, 8]。

frame_rate_ctrl

帧率控制。

源帧率取值范围:(0, 240],以及-1。

目标帧率取值范围:[-1, 240]。

当源帧率为-1时,目标帧率必须为-1(不进行帧率控制),其他情况下,目标帧率不能大于源帧率。

具体描述请参见“系统控制”章节。

【解决方案差异】

无

【注意事项】

  • 若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;

【成员】

成员名称

描述

bind_chn

绑定的源物理通道。

src_type

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

具体描述请参见“系统控制”章节。

size

目标图像大小。

目标图像的最小宽高与最大宽高:

宽度:

[OT_VI_EXT_CHN_MIN_WIDTH,OT_VI_EXT_CHN_MAX_WIDTH]

高度:

[OT_VI_EXT_CHN_MIN_HEIGHT,OT_VI_EXT_CHN_MAX_HEIGHT]

pixel_format

目标图像像素格式。具体描述请参见“系统控制”章节。

video_format

目标图像视频数据格式。具体描述请参见“系统控制”章节。

dynamic_range

目标图像动态范围。具体描述请参见“系统控制”章节。

compress_mode

目标图像压缩格式。具体描述请参见“系统控制”章节。

depth

用户获取图像的队列深度,取值范围:[0, 8]

frame_rate_ctrl

帧率控制。

源帧率取值范围:(0, 240],以及-1。

目标帧率取值范围:[-1, 240]

当源帧率为-1时,目标帧率必须为-1(不进行帧率控制),其他情况下,目标帧率不能大于源帧率。

具体描述请参见“系统控制”章节。

buf_share_en

扩展通道buf复用。

【解决方案差异】

无

【注意事项】

  • 扩展通道宽高必须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信息结构体。

【定义】

typedef struct {
    td_bool  enable;
    ot_coord crop_mode;
    ot_rect  rect;
} ot_vi_crop_info;

【成员】

成员名称

描述

enable

CROP使能开关。

crop_mode

CROP起点坐标模式。

rect

CROP的矩形区域。

OT_COORD_ABS模式下的取值范围如下:

  • rect.x在[0, 通道最大宽度 – 1]
  • rect.y在[0, 通道最大高度 – 1]
  • rect.width在[通道最小宽度,通道最大宽度]
  • rect.height在[通道最小高度,通道最大高度]

【解决方案差异】

无

【注意事项】

  • 若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;

【成员】

成员名称

描述

enable

当前通道是否使能。

0:不使能;

1:使能。

frame_rate

VI 通道的实时帧率。

lost_frame_cnt

丢帧计数。

vb_fail_cnt

VB申请失败计数。

size

通道当前图像大小。

【注意事项】

  • 当PIPE处于VI离线,VPSS离线模式,所有字段都有效。
  • 当PIPE处于VI离线,VPSS在线模式,该接口不支持。
  • 当PIPE处于VI在线,VPSS离线模式,所有字段都有效。
  • 当PIPE处于VI在线,VPSS在线模式,该接口不支持。

【相关数据类型及接口】

ss_mpi_vi_query_chn_status

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_CFG_MODE_NORM

拼接组内的PIPE独立使用对应ISP的配置。

OT_VI_STITCH_CFG_MODE_SYNC

拼接组内的PIPE共同使用拼接组内第0个PIPE对应ISP的配置。

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_vi_stitch_grp_attr

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;

【成员】

成员名称

描述

stitch_en

是否使能拼接组。

cfg_mode

拼接组ISP配置的同步方式。

max_pts_gap

多路拼接图像之间的最大时间间隔,单位us。

pipe_num

拼接组包含的VI PIPE数目。

取值范围:[2, OT_ISP_MAX_STITCH_NUM],数据类型见《ISP开发参考》中“系统控制”章节。

pipe_id

拼接组包含的PIPE号。

【解决方案差异】

无。

【注意事项】

  • 一个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;

【成员】

成员名称

描述

max_out_width

模块最大输出宽度。

取值范围:[OT_VI_PHYS_CHN_OFFLINE_MIN_WIDTH, OT_VI_PHYS_CHN_OFFLINE_MAX_WIDTH], 默认为OT_VI_PHYS_CHN_OFFLINE_MAX_WIDTH。

该值影响物理通道最大输出宽度。

max_out_height

模块最大输出高度。

取值范围:[OT_VI_PHYS_CHN_OFFLINE_MIN_HEIGHT, OT_VI_PHYS_CHN_OFFLINE_MAX_HEIGHT], 默认为OT_VI_PHYS_CHN_OFFLINE_MAX_HEIGHT。

该值影响物理通道最大输出高度,以及存在FMU卷绕压缩输出时,压缩头空间的大小。有小型化需求时可通过降低最大输出高度来减少卷绕压缩输出的压缩头内存占用。

detect_err_frame

该参数表示是否由客户来控制VI的时序异常实时检测。

  • 大于0:由用户控制;
  • 等于0:由SDK来控制实时检测,只要检测到错误图像就丢帧;
  • 小于0:关闭错误检测功能。

默认值为0。Hi3519DV500 该参数无效。

drop_err_frame

该参数表示当检测到图像错误时,连续丢多少帧(不管后面的图像是否正确)。

  • 0:表示不开启连续丢帧功能,只丢弃当前的错误帧;
  • 大于0:连续丢drop_err_frame帧(含当前帧)。

默认值为0。Hi3519DV500 该参数无效。

【注意事项】

无。

【相关数据类型及接口】

OT_DIS_MAX_IMAGE_WIDTH

【说明】

定义DIS的最大图像宽度。

【定义】

#define  OT_DIS_MAX_IMAGE_WIDTH     (8192)

【注意事项】

无。

【相关数据类型及接口】

无。

OT_DIS_MAX_IMAGE_HEIGHT

【说明】

定义DIS的最大图像高度。

【定义】

#define OT_DIS_MAX_IMAGE_HEIGHT     (8192)

【注意事项】

无。

【相关数据类型及接口】

无。

OT_DIS_MIN_IMAGE_WIDTH

【说明】

定义DIS的最小图像宽度。

【定义】

#define OT_DIS_MIN_IMAGE_WIDTH     (120)

【注意事项】

无。

【相关数据类型及接口】

无。

OT_DIS_MIN_IMAGE_HEIGHT

【说明】

定义DIS的最小图像高度。

【定义】

#define OT_DIS_MIN_IMAGE_HEIGHT    (88)

【注意事项】

无。

【相关数据类型及接口】

无。

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_4_DOF_GME

四自由度GME算法,不使用陀螺仪。

OT_DIS_MODE_6_DOF_GME

六自由度GME算法,不使用陀螺仪。

OT_DIS_MODE_GYRO

陀螺仪算法,不使用GME。

OT_DIS_MODE_GYRO_ADVANCE

陀螺仪改进算法,主要优化竖向防抖效果。

OT_DIS_MODE_HYBRID

混合防抖算法,使用陀螺仪和6_DOF_GME。

OT_DIS_MODE_4_DOF_HYBRID

混合防抖算法,使用陀螺仪和4_DOF_GME。

【注意事项】

  • 通常情况下,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;

【成员】

成员名称

描述

OT_DIS_MOTION_LEVEL_LOW

低级别运动,镜头小幅度运动。

OT_DIS_MOTION_LEVEL_NORM

正常级别运动,镜头正常幅度运动。

OT_DIS_MOTION_LEVEL_HIGH

高级别运动,镜头大幅度运动。

【注意事项】

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_PDT_TYPE_RECORDER

录像机产品形态。

OT_DIS_PDT_TYPE_DV

DV产品形态。

OT_DIS_PDT_TYPE_DRONE

无人机产品形态。

【注意事项】

无。

【相关数据类型及接口】

ot_dis_crop_separate

【说明】

定义裁剪比例水平、垂直分开配置的属性。

【定义】

typedef struct {
    td_u32      horizontal;
    td_u32      vertical;
} ot_dis_crop_separate;

【成员】

成员名称

描述

horizontal

DIS输出图像的水平裁剪比例。

取值范围:[375, 980]。

vertical

DIS输出图像的垂直裁剪比例。

取值范围:[375, 980]。

【注意事项】

无。

【相关数据类型及接口】

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;

【成员】

成员名称

描述

mode

DIS中使用不同自由度防抖算法,共有6种不同算法。

motion_level

Camera的运动级别。

pdt_type

使用DIS的产品形态,当前支持录像机、DV和无人机。

buf_num

DIS用于缓存图像的buf数目,在DIS输出帧率偶尔出现丢帧时,可以增加缓存buf数。

取值范围:[5,10]。

crop_ratio

设置为0时表示开启裁剪比例水平、垂直分开配置模式,设置为[50,98]时表示DIS输出图像的裁剪比例。

取值范围:{0}U[50, 98]。

crop_separate

裁剪比例水平、垂直分开配置的属性。

  • 只有当防抖模式为 OT_DIS_MODE_GYRO_ADVANCE / OT_DIS_MODE_HYBRID / OT_DIS_MODE_4_DOF_HYBRID 时,支持裁剪比例水平、垂直分开配置。
  • 只有当crop_ratio设置为0时,crop_separate参数才生效。
  • 当水平方向和垂直方向的裁剪比例设置不同值时,防抖模块的输出图像分辨率相比输入会发生改变,必须在起通路时配置与输出图像匹配的VPSS、VENC通道分辨率,否则通道会无流。

frame_rate

设置帧率。

取值范围:[1, 120]

请设置为VI输出的实际帧率。

为了获得较好的防抖效果,建议帧率25帧以上。

  • 当防抖模式为OT_DIS_MODE_4_DOF_GME/OT_DIS_MODE_6_DOF_GME时,低帧率会导致两帧间隔变大,两帧之间抖动幅度增加,同时,rolling shutter现象也更加严重,预期可能会出现防抖效果下降,特别是在抖动幅度大的场景;
  • 当防抖模式为DIS_MODE_GYRO;除了对防抖效果的影响和GME一致外,随着帧率的降低,陀螺仪的最高采样率将下降。当最小帧率为20时,陀螺仪采样率不能高于2.5KHz。当最小帧率为15时,陀螺仪采样率不能高于1.8KHz。

camera_steady

镜头是否固定静止的。

scale

Crop后的输出图像是否进行放大。当前DIS提供Crop后的输出图像是否进行放大操作选择。

TD_TRUE:使能scale功能,即对Crop后的图像进行放大操作;

TD_FALSE:不使能scale功能,即输出Crop后的图像。此时输出图像宽高等于输入宽高乘以crop_ratio,输出宽高是2对齐的。

  • 由于scale为TD_FALSE的情况下VPSS输出Crop后的小图图像,需要重设对应VPSS通道属性中的width、height。
  • scale为TD_FALSE时,调整crop_ratio,使能dis后,需要重设对应VPSS通道属性中的width、height。
  • scale在TD_TRUE、TD_FALSE状态切换后,需要重设对应VPSS通道属性中的width、height。

ref_num

防抖参考帧数。

取值范围:[0, 120]

默认值为0,即为无参考帧防抖。

【注意事项】

  • 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较大时:,对计算结果进行四舍五入,再向下偶数取整(保证分辨率为偶数)。
  • 对于参数未有任何修改,但调用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帧。刚开启有参考帧防抖时,需要缓存参考帧,预览图像会出现卡顿现象。

【相关数据类型及接口】

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;

【成员】

成员名称

描述

enable

DIS使能开关。

TD_FALSE:不使能;

TD_TRUE:使能。

gdc_bypass

DIS功能中是否Bypass GDC的开关。

TD_FALSE:不使能Bypass GDC功能,即正常调用GDC做PMF矫正;

TD_TRUE:使能Bypass GDC功能,即不调用GDC做PMF矫正。

moving_subject_level

用于判断物体是否是运动的级别,取值范围为[0,7],仅对GME和HYBRID模式有效,级别越大,防抖效果越弱。值越小,运动过程中越稳定,但更容易出现偏移情况。值较大时,运动过程中背景抖动幅度大,但能够改善图像偏移现象。

请根据具体应用场景设置级别大小。

rolling_shutter_coef

校正rolling shutter现象的校正参数。

取值范围为[0, 1000]。

timelag

帧起始时间和陀螺仪数据采集时间的时间差,取值范围为[-2000000, 2000000],单位为微秒。当值设置较大时会发生丢帧卡死。

hor_limit

水平偏移限制,取值范围[0,1000]。当大面积物体经过引起背景拖拽的水平偏移超过一定幅度时就不进行防抖。偏移幅度计算:2047 * hor_limit/1000。

ver_limit

垂直偏移限制,取值范围[0,1000]。当大面积物体经过引起背景拖拽的垂直偏移超过一定幅度时就不进行防抖。偏移幅度计算:2047 * ver_limit/1000。

still_crop

DIS防抖效果开关,默认为FALSE,当DIS使能为TRUE时生效

TD_FALSE: 有DIS防抖效果,图像保持裁剪比例输出。

TD_TRUE: 没有DIS防抖效果,图像保持裁剪比例输出。

strength

陀螺仪防抖的强度控制,取值范围[0,1024]。仅对GYRO模式有效,对GME模式无效,默认强度为1024。

dis_ldc_en

DIS LDC 畸变矫正开关。

dis_ldc_attr

DIS LDC 矫正参数。

具体描述请参见“系统控制”章节。

ref_slope

用来描述镜头画面运动的快慢程度。

取值范围为[0, 15]。

该参数是用来权衡防抖效果和画面卡顿问题。

值越大,表示画面变化快,需要调弱防抖效果来避免切边,但此值调得过大画面可能会飘移。

值越小,表示画面变化比较慢,可以调强防抖效果,但此值调得过小容易卡顿。

rotation_compensation_en

DIS旋转稳像功能开关。

compensation

DIS旋转稳像功能参数。

【注意事项】

  • 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_REFRESH

刷新参考帧模式。每帧的参考帧为其上一帧图像。默认为此模式。

OT_DIS_REF_MODE_FIXED

暂不支持。固定参考帧模式。每帧的参考帧为固定某一帧。

【注意事项】

  • 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;

【成员】

成员名称

描述

large_motion_stable_coef

大幅度运动的防抖衰减参数。取值范围:[0, 100]。默认值及具体参数效果参见《DIS 调试指南》。

low_freq_motion_preserve

低频运动的保留程度。取值范围:[0, 100]。默认值及具体参数效果参见《DIS 调试指南》。

low_freq_motion_freq

低频运动的截止频率。取值范围:[0, 100]。默认值及具体参数效果参见《DIS 调试指南》。

fpd_adaptive_en

自适应查找特征点对数阈值的开关。默认值及具体参数效果参见《DIS 调试指南》。

TD_FALSE:不使能自适应查找特征点阈值功能;

TD_TRUE:使能自适应查找特征点阈值功能。

ref_mode

DIS防抖参考帧模式。目前只支持刷新模式。

【注意事项】

  • 参数只在GME和HYBRID模式下有效,不配置使用默认参数。
  • 算法特征点对数的阈值默认是30对,fpd_adaptive_en使能后会自适应降低阈值,最低降低到10对,fpd_adaptive_en关闭、enable开关关闭或still_crop开关打开后,特征点阈值都会恢复成默认的30。
  • fpd_adaptive_en仅支持IPC模式使用。

【相关数据类型及接口】

ot_atten_coef

【说明】

定义陀螺仪防抖的漂移衰减系数。

【定义】

typedef struct {
    td_s32 steady_atten_coef;
    td_s32 motion_atten_coef;
} ot_atten_coef;

【成员】

成员名称

描述

steady_atten_coef

静止状态的衰减系数。当陀螺仪状态检测为静止时生效。取值范围[0, 100],默认值为95。

steady_atten_coef值越小,陀螺仪防抖回到中心的速率越快。

motion_atten_coef

运动状态的衰减系数。当陀螺仪状态检测为运动时生效。取值范围[0, 1000],默认值为995。

motion_atten_coef值越小,陀螺仪防抖效果越弱。

【注意事项】

  • 当steady_atten_coef特别小时,漂移回零较快,但会出现不平滑现象。
  • 陀螺仪防抖业务重启后,漂移衰减系数会继续使用上次业务配置的参数,不会使用默认值,如果需要修改必须调用ss_mpi_vi_set_chn_dis_alg_attr重新配置。
  • 使能旋转稳像开关rotation_compensation_en后,漂移衰减系数将不再生效。

【相关数据类型及接口】

ot_gyrodis_alg_attr

ot_gyrodis_alg_attr

【说明】

定义陀螺仪防抖算法属性。

【定义】

typedef struct {
    ot_atten_coef atten_coef;
} ot_gyrodis_alg_attr;

【成员】

成员名称

描述

atten_coef

衰减系数。

【注意事项】

无

【相关数据类型及接口】

ot_dis_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;

【成员】

成员名称

描述

enable

是否使能查找防抖偏移坐标点

point_num

坐标点的个数。

取值范围:[0, OT_DIS_POINT_NUM],数据类型见《MPP媒体处理软件V6.0开发接口》"系统控制"章节。

point

输入的查找坐标点。

【注意事项】

只有在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;

【成员】

成员名称

描述

gyrodis_alg_attr

陀螺仪防抖算法属性。

point_info

DIS输入坐标点信息。

【注意事项】

无

【相关数据类型及接口】

ot_dis_rotation_compensation

【说明】

定义DIS旋转稳像功能参数。

【定义】

typedef struct {
    td_u32 max_roll_delta;
    td_s32 final_roll;
} ot_dis_rotation_compensation

【成员】

成员名称

描述

max_roll_delta

水平线允许算法纠正的最大roll角度,取值范围:[0,400],对应0°~40°。如果当前倾斜角度跟final_roll的角度差值的绝对值大于max_roll_delta的时候,地平线增稳功能会慢慢关掉。配置为0的时候无水平线纠偏效果。

final_roll

水平线希望纠正到的目标度数,取值范围:[-1800,1800],对应-180°~180°。final_roll正值表示按照逆时针旋转画面,负值表示按照顺时针旋转画面,配置为0的时候会将画面整体纠正到水平。

【注意事项】

对于幅型比16:9的镜头,为了避免画面出现黑边现象,max_roll_delta的推荐配置如下:

DIS输出图像的裁剪比例crop_ratio

理论计算的极限不出黑边角度

推荐max_roll_delta最大角度值

80

8.4°

50

70

14.9°

100

60

25.5°

200

50

49.4°

400

对于幅型比4:3的镜头,为了避免画面出现黑边现象,max_roll_delta的推荐配置如下:

DIS输出图像的裁剪比例crop_ratio

理论计算的极限不出黑边角度

推荐max_roll_delta最大角度值

80

11.7°

80

70

22.1°

150

65

30.5°

250

62

38.6°

300

60

无限制

400

开启旋转稳像功能,DIS输出图像的裁剪比例的配置建议不高于70,裁剪比越小水平线纠偏效果越好,但画质会有损失。原始画面剧烈抖动或者镜头LDC参数不准确都导致需要调小max_roll_delta。

目前,在后向参考开启的条件下,旋转稳像功能是默认支持随机身旋转,即画面转动超过45度往上,画面稳住的不再是0度地平线,而是90度方向的垂直线,以此类推。如需关闭这个默认的随机身旋转稳像,可将final_roll配成一个非0的小整数,如正负1。

使用旋转稳像时建议开启后向参考功能。

【相关数据类型及接口】

ot_dis_attr

ot_dis_wdr_attr

【说明】

定义DIS WDR属性。

【定义】

typedef struct {
    td_u32 match_frame;
} ot_dis_wdr_attr;

【成员】

成员名称

描述

match_frame

WDR 匹配帧参数。WDR模式为2TO1时取值范围[0, 1],0为匹配短帧,1为匹配长帧。

【注意事项】

参数只在GYRO模式下有效,不配置使用默认参数

【相关数据类型及接口】

错误码

视频输入API错误码如表1所示。

表 1 视频输入API错误码

错误代码

宏定义

描述

0xa0108001

OT_ERR_VI_INVALID_DEV_ID

视频输入设备号无效

0xa0108002

OT_ERR_VI_INVALID_PIPE_ID

视频输入PIPE号无效

0xa0108003

OT_ERR_VI_INVALID_CHN_ID

视频输入通道号无效

0xa0108005

OT_ERR_VI_INVALID_GRP_ID

视频输入组号无效

0xa0108007

OT_ERR_VI_ILLEGAL_PARAM

视频输入参数设置无效

0xa010800a

OT_ERR_VI_NULL_PTR

输入参数空指针错误

0xa010800b

OT_ERR_VI_NOT_CFG

视频设备或通道属性未配置

0xa010800c

OT_ERR_VI_NOT_SUPPORT

操作不支持

0xa010800d

OT_ERR_VI_NOT_PERM

操作不允许

0xa0108010

OT_ERR_VI_NOT_ENABLE

视频输入设备或通道未启用

0xa0108011

OT_ERR_VI_NOT_DISABLE

视频输入设备或通道未禁用

0xa0108014

OT_ERR_VI_NO_MEM

分配内存失败

0xa0108016

OT_ERR_VI_BUF_EMPTY

视频输入缓存为空

0xa0108017

OT_ERR_VI_BUF_FULL

视频输入缓存已满

0xa0108018

OT_ERR_VI_NOT_READY

视频输入系统未初始化

0xa0108020

OT_ERR_VI_TIMEOUT

视频配置属性超时

0xa0108022

OT_ERR_VI_BUSY

视频输入系统忙

0xa0108024

OT_ERR_VI_NOT_BINDED

视频通道未绑定

0xa0108025

OT_ERR_VI_BINDED

视频通道已绑定