跳转至

视频处理子系统

概述

VPSS是视频处理子系统。支持对输入图像进行统一预处理,如去噪、去隔行、裁剪等,然后再对各通道分别进行处理,如缩放、加边框等。

支持的具体图像处理功能包括FRC、Crop、3DNR、DEI、IE、LDCI、DCI、LTI/CTI、Cover/CoverEx、Overlay/OverlayEx、Mosaic/MosaicEx、Corner_rect/Corner_rectEx、LineEx、Scale、固定角度旋转、任意角度旋转、鱼眼矫正、LDC、展宽、PMF、FOV、LUT、拼接、获取区域亮度和、低延时、Mirror/Flip、Aspect Ratio、Border、像素格式转换、压缩解压等。

说明:

上述功能仅描述所有方案中存在的功能,不代表每个方案都包含所有功能。其中的英文缩写请参照“缩略语”章节描述。

功能描述

基本概念

  • Group

    • VPSS对用户提供组(Group)的概念。最大个数请参考OT_VPSS_MAX_GRP_NUM定义,各Group分时复用VPSS硬件,硬件依次处理各个组提交的任务。
    • 如果用到的VPSS Group数量超过128个,则需要修改/etc/profile,在其末尾加上ulimit -HSn 4096,指定系统同时最大可打开文件数为4096。
  • Pipe

    VPSS组的输入通道,非拼接场景使用Pipe0,拼接场景其他通道可接收多路数据进行拼接。

  • Channel

    VPSS组的输出通道。一个VPSS组提供多个通道,每个通道具有缩放等功能。

  • FRC

    帧率控制分为两种:组帧率控制和通道帧率控制。

    • 组帧率控制:用于控制各Group对输入图像的接收。
    • 通道帧率控制:用于控制各个通道图像的处理。

    当VPSS前端绑定的是VI模块时,组上帧率控制使用的是根据time_ref做补偿的帧率控制算法,先还原VI原始帧率再做帧率控制,绑定的是其他模块时,组上帧率控制不考虑time_ref,直接按比例做帧率控制。VPSS通道帧率控制不考虑time_ref。VPSS帧率控制只能减帧,不能增帧。

  • Crop

    从图像中裁剪指定区域。裁剪类型分为绝对坐标裁剪和相对比例裁剪。

    • 组裁剪,对输入图像做裁剪;
    • 物理通道裁剪,对物理通道图像做裁剪;
    • 扩展通道裁剪,对扩展通道图像做裁剪。
  • DEI

    将交错的隔行视频源还原成逐行视频源。

  • 3DNR

    3D降噪。通过参数配置,把图像中的高斯噪声去除,使得图像变得平滑,有助于降低编码码率。

  • IE

    图像增强。

  • LDCI

    基于局域直方图均衡的方法来增强局部的对比度,提升暗区细节,同时对图像中高频进行一定的增强,提升对比度。

  • DCI

    对图像进行动态的对比度调节,即在增强图像暗区亮度时不使亮区过亮,或降低亮区亮度时不使暗区过暗。

  • LTI/CTI

    图像锐化(Sharpen)。锐化图像的边缘和凸显图像细节,对经过缩放(Scale)后的图像进行频率补偿或增强,使得图像边缘锐利,轮廓清晰。

  • Scale

    缩放,对图像进行缩小放大。缩放倍数指水平、垂直各缩放多少倍。

  • Mirror/Flip

    Mirror即水平镜像,Flip即上下翻转。可使用Mirror+Flip实现180°旋转。

  • Mosaic

    • 马赛克,对VPSS输出图像在指定区域填充马赛克块。
    • 马赛克区域宽度要求4像素对齐,马赛克区域部分超出图像时,水平方向软件会自适应向下4对齐裁剪掉超出部分。
  • MosaicEx

    马赛克,调用VGS对VPSS物理通道的输出图像指定区域填充马赛克块。

  • Cover

    • 视频遮挡区域,对VPSS的输出图像填充纯色块或空心边框。
    • 遮挡区域坐标类型分为绝对坐标遮挡和相对坐标比例遮挡。相对坐标的计算是相对输入图像。
  • CoverEx

    • 视频遮挡区域,调用VGS对VPSS物理通道的输出图像填充纯色块或空心边框。
    • 遮挡区域坐标类型分为绝对坐标遮挡和相对坐标比例遮挡。相对坐标的计算是相对输入图像,不是通道图像,效果与Cover相对坐标类似。

    注意:当设置相对坐标比例遮挡时,仅在接口处检查相对坐标参数,由于输入图像宽高变化无法预测,因此不保证最终遮挡区域配置参数始终有效。

  • Overlay

    视频叠加区域(OSD),对VPSS输出图像叠加位图。

  • OverlayEx

    视频叠加区域,调用VGS对VPSS物理通道的输出图像叠加位图。

  • LineEx

    调用VGS对VPSS物理通道的输出图像画线。

  • Corner_rect

    在VPSS的输出图像上打角框/实线框。

  • Corner_rectEx

    物理通道支持调用VGS在图像上打角框/实线框。

  • 获取区域亮度和

    获取输入图像或物理通道输出图像指定区域亮度和。

  • 鱼眼矫正

    支持对图像做鱼眼矫正,支持鱼眼多宫格处理。

  • LDC

    对图像做镜头畸变矫正。

  • 展宽

    支持对图像做展宽处理。

  • PMF

    根据PMF矩阵对图像进行映射变换。

  • FOV

    根据视场角矩阵对图像进行相应视场角矫正。

  • LUT

    根据查找表对图像进行相应变化,可融合两张LUT或串联两张LUT,也可一张LUT与其他GDC功能组合。

  • 拼接

    支持对多路输入进行横向的硬拼或融合拼接。

  • 低延时

    • 输入低延时,接收前端模块发送的低延时帧;
    • 输出低延时,通道向后端模块发送低延时帧。
  • 固定角度旋转

    物理通道支持0度、90度、180度以及270度固定角度的旋转功能。

  • 任意角度旋转

    任意角度旋转功能。

  • Aspect Ratio

    幅形比,指定输出画面相对于输入画面的宽高纵横比。

  • Border

    边框,VPSS在输出图像加边框。

  • 工作模式

    VPSS工作模式,分为在线、离线等模式。详见“系统控制”章节。

  • 压缩/解压

    • 支持通道输出图像进行压缩;支持对输入压缩图像解压;
    • 支持3DNR参考帧压缩/解压;
    • 紧凑段压缩、参考帧压缩可节省内存,其它压缩不节省内存。所有压缩都能改善带宽占用。
  • 像素格式转换

    支持设置输出图像的像素格式。

  • 备份节点

    原始图像的备份节点。每个Group都有一个备份节点,用于备份即将提交硬件处理的原始图像。VPSS在以下情况会将缓存队列头节点的图像放入备份节点:

    • 当原始图像要经过VPSS 硬件处理时,VPSS 会将其放入备份节点,并替换掉原有备份的图像。
    • 当后端绑定的接收模块要求VPSS 将队头图像放入备份节点时,VPSS 也会替换备份节点中的图像,即使该图像不经过硬件处理。
  • 分块

    图像超过特定宽度时,分块处理。相应资源数在模块参数中设定。资源数设定需要大于等于实际需要的数量。

  • FMU

    支持使用帧存管理单元管理帧存数据,降低媒体数据内存占用,降低端到端延时。

须知:

  • Hi3519DV500/Hi3511CV100 Cover、Mosaic、Corner_rect可配置到Group上,所有通道效果相同,也可配置到某个通道上(Cover、Mosaic、Corner_rect都需要在该通道上),其他通道无效果。
  • Hi3519DV500/Hi3516CV610/Hi3511CV100 Cover、Mosaic、Corner_rect存在两种或以上类型时,按Mosaic、Cover、Corner_rect的先后顺序处理,即先处理的类型如果和后处理的类型出现重叠,则后处理的类型会覆盖先处理的类型。
  • Hi3519DV500/Hi3511CV100打Cover、Mosaic、Corner_rect时总个数不超过12个。
  • Hi3519DV500/Hi3511CV100当输入图像宽度不超过4096,并且输出通道宽度超过4096时,若Mosaic的有效块大小为8x8,则配置到该通道上的所有Mosaic都不生效。
  • Hi3511CV100当输入图像宽度不超过4096,并且输出通道宽度超过8192时,若Mosaic的有效块大小为16x16,则配置到该通道上的所有Mosaic都不生效。
  • Hi3519DV500/Hi3511CV100同一时刻仅允许有一个通道放大;当一个通道进行semi-planar 420转semi-planar 422时,其它通道不能再放大。
  • Hi3519DV500/Hi3511CV100输入图像宽度超过4096时分块。
  • Hi3516CV610支持在Group上配置Cover,总个数不超过8个。
  • Hi3516CV610支持在物理通道0和1上同时配置Cover、Corner_rect,单个物理通道上打Cover、Corner_rect的总个数不超过4个。
  • Hi3516CV610仅支持物理通道0进行放大。
  • Hi3516CV610输入图像宽度超过3200时分块。

功能描述

VPSS在系统中位置如图1所示。

图 1 VPSS上下文关系

通过调用SYS模块的绑定接口,可与VPSS/USER/VDEC/VI和VO/VENC/SVP等模块进行绑定,其中前者为VPSS的输入源,后者为VPSS的接收者。用户可通过MPI接口对Group进行管理。每个Group除拼接场景外仅可与一个输入源绑定。

Group的物理通道有两种工作模式:AUTO和USER,两种模式间可动态切换。AUTO模式下各通道仅可与一个接收者绑定,主要用于预览和回放场景下做播放控制。USER模式下各通道可与多个接收者绑定。

需要特别注意:USER模式主要用于对同一通道图像进行多路编码的场景,此模式下播放控制不生效,因此回放场景下不建议使用USER模式。VPSS只有工作在离线模式下才支持AUTO模式。如果绑定VENC使用FMU,在开启OT_VPSS_DIRECT_CHN通道或WRAP通道时,OT_VPSS_CHN0也不支持AUTO模式。

Hi3519DV500/Hi3516CV610功能规格支持参考图1和图2数据流图。

Hi3511CV100功能规格请参考图3。

处理流程

图 1 Hi3519DV500 VPSS的数据流图

图 2 Hi3516CV610 VPSS的数据流图

图 3 Hi3511CV100 VPSS的数据流图

说明:

  • Hi3519DV500 VPSS组号在[OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM - 1]范围内的组调用VGS硬件处理(此类组工作在离线模式),用于解码或VPSS性能不够的场景。单通道输出且不做任何处理时bypass处理,输入输出为同一个VB。此类组有如下限制:
    • 不支持3DNR;
    • 仅支持3个物理通道;
    • 不支持FMU;
    • 不支持GDC相关功能;
    • bypass处理时无法获取通道亮度和;
    • 仅支持同时打8个Corner_rect;
    • 输入tile格式时,宽度超过3072不支持通道0裁剪;
    • 仅通道0支持段压缩和紧凑段压缩输出。
  • VDEC绑定VPSS,VPSS绑定VO场景,如果VPSS组是由VGS硬件处理且做bypass处理时,会将VDEC的私有VB发送给VO,如果需要销毁解码通道,需要调用ss_mpi_vo_clear_chn_buf释放解码VB。
  • Hi3519DV500/Hi3511CV100 VPSS支持4个扩展通道,Hi3516CV610 VPSS支持2个扩展通道。扩展通道可以绑定到任意物理通道,图中仅示意性绑定到某个通道。
  • 用户设置的通道压缩,指的是VPSS通道最终输出的压缩模式。
  • GDC相关流程详情请参考“几何畸变矫正子系统”章节。

输入输出特性

VPSS物理输入特性,如Tableau 1至Tableau 3所示。

表 1 VPSS输入格式特性

解决方案名称

数据位宽

视频格式

输入像素格式

8Bit

10Bit

Linear

Tile64X16

Tile32x4

Hi3519DV500

Y

N

Y

Y

Y

OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422、OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_400

Hi3516CV610

Y

N

Y

N

N

OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422、OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_400

Hi3511CV100

Y

N

Y

Y

N

OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422、OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_400

说明:

  • Tile32x4格式仅支持SP420与单分量模式。
  • Tile64x16格式仅支持OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420。

表 2 VPSS输入解压特性

解决方案名称

解压缩模式

SEG

SEG_COMPACT

TILE

Hi3519DV500

Y

Y

Y

Hi3516CV610

N

N

N

Hi3511CV100

Y

Y

Y

说明:

  • Tile32x4格式支持TILE压缩和非压。
  • OT_PIXEL_FORMAT_YUV_400在Tile32x4格式时仅支持TILE压缩,不支持非压。
  • Hi3519DV500中,Tile64x16格式仅支持非压。

表 3 VPSS输入分辨率

解决方案名称

工作模式

离线模式

OT_VI_ONLINE_VPSS_ONLINE

OT_VI_PARALLEL_VPSS_PARALLEL

OT_VI_OFFLINE_VPSS_ONLINE

Hi3519DV500

宽[64, 8192]

高[64, 8192]

紧凑段压缩(SEG_COMPACT):

宽[64, 4096]

高[64, 8192]

宽[64, 4096]

高[64, 8192]

N

N

Hi3516CV610

宽[64, 4096]

高[64, 4096]

宽[64, 3200]

高[64, 4096]

N

宽[64, 4096]

高[64, 4096]

Hi3511CV100

宽[64, 16384]

高[64, 8192]

紧凑段压缩(SEG_COMPACT):

宽[64, 4096]

高[64, 8192]

宽[64, 4096]

高[64, 8192]

N

N

说明:

  • 离线模式包含OT_VI_OFFLINE_VPSS_OFFLINE、OT_VI_ONLINE_VPSS_OFFLINE、OT_VI_PARALLEL_VPSS_OFFLINE,即只要VI和VPSS离线。 Hi3519DV500 离线模式仅支持OT_VI_OFFLINE_VPSS_OFFLINE、OT_VI_ONLINE_VPSS_OFFLINE。 Hi3511CV100 离线模式仅支持OT_VI_ONLINE_VPSS_OFFLINE。
  • Hi3519DV500/Hi3516CV610/Hi3511CV100 OT_VI_ONLINE_VPSS_ONLINE模式,实际输入分辨率限制取决于前端VI模块。
  • Hi3519DV500开启GDC时,输入最小分辨率为120x88,具体请参考"几何畸变矫正子系统"章节。

VPSS物理通道输出特性,如Tableau 4~Tableau 6所示。

表 4 VPSS物理通道输出格式特性

解决方案名称

数据位宽

视频格式

输出像素格式

8Bit

10Bit

Linear

Tile

64x16

Tile

16x8

Hi3519DV500

Y

N

Y

N

N

OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422、OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_400

Hi3516CV610

Y

N

Y

Y

N

OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422、OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_400

Hi3511CV100

Y

N

Y

N

N

OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422、OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_400

说明:

Hi3516CV610中,输出Tile64x16格式有以下限制:

  • 仅支持配合物理通道0旋转对接VENC使用,仅支持固定角度旋转90°/270°。
  • 输入/输出像素格式为SP420或者单分量。
  • 不支持压缩输出。
  • 仅支持通道0输出Tile64x16。
  • 输入与输出的最大宽度不超过3200,组Crop后的宽高与物理通道0输出宽高一致,即不支持缩放。
  • 不支持开启物理通道0上的Crop,且物理通道0上的Cover、Corner_rect不生效。
  • 通道后处理不生效。
  • 与低延时、卷绕等功能互斥。
  • 不支持mirror、flip。

表 5 VPSS物理通道输出压缩特性

解决方案名称

压缩输出模式

SEG

SEG_COMPACT

LINE

TILE

Hi3519DV500

支持

支持

不支持

不支持

Hi3516CV610

不支持

支持

不支持

不支持

Hi3511CV100

支持

支持

不支持

不支持

表 6 VPSS物理通道输出分辨率

解决方案名称

工作模式

离线模式

OT_VI_ONLINE_VPSS_ONLINE

OT_VI_PARALLEL_VPSS_PARALLEL

OT_VI_OFFLINE_VPSS_ONLINE

Hi3519DV500

宽[64, 8192]

高[64, 8192]

宽[64, 4096]

高[64, 8192]

N

N

Hi3516CV610

宽[64, 4096]

高[64, 4096]

宽[64, 3200]

高[64, 4096]

N

宽[64, 4096]

高[64, 4096]

Hi3511CV100

宽[64, 16384]

高[64, 8192]

宽[64, 4096]

高[64, 8192]

N

N

须知:

  • 输入宽高2像素对齐(3DNR 打开时宽要求4像素对齐,DEI打开时要求宽高4像素对齐)。输入linear非压缩图像时,支持奇数分辨率输入。
  • 通道写出宽高2像素对齐。
  • VPSS调用VGS做旋转时,需要额外申请一块临时buffer,用于存放处理后的图像,因此也需要一次额外读写DDR。
  • Hi3519DV500/Hi3511CV100 VPSS物理通道缩小超过15倍时(输入图像宽度大于4096且通道0开启压缩时为14倍),需要额外申请一块临时buffer,buffer宽高均为输出图像的2倍,分配VB Blk时需要考虑相关配置。同时也需要一次额外读写DDR。
  • 通过ss_mpi_sys_set_scale_coef_level接口调节缩放效果时,需要考虑VPSS通道缩小倍数超过硬件限制而调用VGS辅助缩小的情况,此时VGS固定缩小2倍,可以反推VPSS的缩放倍数,从而得到缩放范围。

视频处理子系统物理通道在不同压缩场景下的功能限制如Tableau 7所示。

表 7 VPSS物理通道压缩输出时功能限制

解决方案名称

压缩类型

功能

CoverEx/ MosaicEx/ OverlayEx/Corner_rectEx

LineEx

Mirror/Flip

旋转(90,270)

亮度和统计

输入输出Buffer共用

Hi3519DV500

紧凑段压缩(SEG_COMPACT)

不支持

不支持

支持

不支持

支持

不支持

非紧凑段压缩(SEG)

支持

支持

支持

不支持

支持

支持

TILE压缩

NA

NA

NA

NA

NA

NA

Hi3516CV610

紧凑段压缩(SEG_COMPACT)

不支持

不支持

不支持

不支持

不支持

不支持

Hi3511CV100

紧凑段压缩(SEG_COMPACT)

不支持

不支持

支持

不支持

支持

不支持

非紧凑段压缩(SEG)

支持

支持

支持

不支持

支持

支持

VPSS扩展通道输出特性,如Tableau 8~Tableau 10所示。

表 8 VPSS扩展通道输出格式特性

解决方案名称

数据位宽

视频格式

输出像素格式

8Bit

10Bit

Linear

Tile64x16

Tile16x8

Hi3519DV500

Y

N

Y

N

N

OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422、OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_400、OT_PIXEL_FORMAT_VY1UY0_PACKAGE_422

Hi3516CV610

Y

N

Y

N

N

OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422、OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_400、OT_PIXEL_FORMAT_VY1UY0_PACKAGE_422

Hi3511CV100

Y

N

Y

N

N

OT_PIXEL_FORMAT_YVU_SEMIPLANAR_422、OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_422、OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420、OT_PIXEL_FORMAT_YUV_400

表 9 VPSS扩展通道输出压缩特性

解决方案名称

压缩输出模式

SEG

SEG_COMPACT

LINE

TILE

Hi3519DV500

支持

支持

不支持

不支持

Hi3516CV610

不支持

不支持

不支持

不支持

Hi3511CV100

支持

支持

不支持

不支持

表 10 VPSS扩展通道输出分辨率

解决方案名称

分辨率

Hi3519DV500

宽[64, 16384]

高[64, 8192]

Hi3516CV610

宽[64, 4096]

高[64, 4096]

Hi3511CV100

宽[64, 16384]

高[64, 8192]

须知:

  • Hi3519DV500/Hi3511CV100 VPSS输入图像宽度大于4096时不支持紧凑段压缩输入/输出,输出宽度大于4096时不支持紧凑段压缩输出。
  • Hi3519DV500/Hi3511CV100 VPSS物理通道仅通道0/1支持段压缩和紧凑段压缩输出。
  • Hi3519DV500/Hi3511CV100 VPSS在分块时通道1不支持段压缩输出;如果通道1设置了段压缩输出,输入图像分块时内部会默认将段压缩输出转换为非压缩。
  • Hi3519DV500扩展通道可以输出OT_PIXEL_FORMAT_VY1UY0_PACKAGE_422,仅支持对接UVC输出YUY2。
  • Hi3516CV610 VPSS仅通道0支持紧凑段压缩输出,且压缩时仅支持对接VENC。
  • Hi3516CV610 VPSS在输入图像未分块时,紧凑段压缩输出宽度不支持超过3840;分块时,紧凑段压缩输出宽度不超过4096。
  • Hi3511CV100 VPSS输入图像携带可变附属信息时,仅通道0支持输出携带可变附属信息。

API参考

该功能模块为用户提供以下MPI:

ss_mpi_vpss_set_mod_param

【描述】

设置VPSS模块参数。

【语法】

td_s32 ss_mpi_vpss_set_mod_param(const ot_vpss_mod_param *mod_param)

【参数】

参数名称

描述

输入/输出

mod_param

模块参数。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

【举例】

无。

【相关主题】

ot_vpss_mod_param

ss_mpi_vpss_get_mod_param

【描述】

获取VPSS模块参数。

【语法】

td_s32 ss_mpi_vpss_get_mod_param(ot_vpss_mod_param *mod_param)

【参数】

参数名称

描述

输入/输出

mod_param

模块参数

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ot_vpss_mod_param

ss_mpi_vpss_create_grp

【描述】

创建一个VPSS Group。

【语法】

td_s32 ss_mpi_vpss_create_grp(ot_vpss_grp grp, const ot_vpss_grp_attr *grp_attr)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

grp_attr

VPSS Group属性指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • 不支持重复创建。
  • 具体功能限制参考结构体ot_vpss_grp_attr说明。
  • Hi3519DV500 OT_VI_ONLINE_VPSS_ONLINE模式仅支持创建组0和组号在[OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM - 1]范围内的组。
  • Hi3511CV100 OT_VI_ONLINE_VPSS_ONLINE模式仅支持创建组0。

【举例】

    td_s32 ret  = TD_SUCCESS;
    ot_vpss_grp grp = 0;
    ot_vpss_chn chn = OT_VPSS_CHN0;
    ot_vpss_grp_attr grp_attr = {0};
    ot_vpss_chn_attr chn_attr = {0};
    ot_vpss_crop_info crop_info;

    grp_attr.frame_rate.src_frame_rate = -1;
    grp_attr.frame_rate.dst_frame_rate = -1;
    grp_attr.pixel_format = OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420;
    grp_attr.max_width = 1920;
    grp_attr.max_height = 1080;
    ret = ss_mpi_vpss_create_grp(grp, &grp_attr);
    if(ret != TD_SUCCESS){
        return ret;
    }
    ret = ss_mpi_vpss_reset_grp(grp);
    if(ret != TD_SUCCESS){
        return ret;
    }

    crop_info.enable = TD_TRUE;
    crop_info.crop_mode = OT_COORD_ABS;
    crop_info.crop_rect.x = 200;
    crop_info.crop_rect.y = 300;
    crop_info.crop_rect.width = 960;
    crop_info.crop_rect.height = 540;

    ret = ss_mpi_vpss_set_grp_crop(grp, &crop_info);
    if(ret != TD_SUCCESS) {
        return ret;
    }

    ret = ss_mpi_vpss_get_grp_crop(grp, &crop_info);
    if(ret != TD_SUCCESS) {
        return ret;
    }

    memset(&chn_attr, 0, sizeof(ot_vpss_chn_attr));
    chn_attr.chn_mode = OT_VPSS_CHN_MODE_AUTO;
    chn_attr.compress_mode = OT_COMPRESS_MODE_NONE;
    chn_attr.pixel_format = OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420;
    chn_attr.width = 960;
    chn_attr.height = 540;
    chn_attr.frame_rate.src_frame_rate = -1;
    chn_attr.frame_rate.dst_frame_rate = -1;

    ret = ss_mpi_vpss_set_chn_attr(grp, chn, &chn_attr);
    if(ret != TD_SUCCESS) {
        return ret;
    }

    ret = ss_mpi_vpss_get_chn_attr(grp, chn,&chn_attr);
    if(ret != TD_SUCCESS) {
        return ret;
    }

    ret = ss_mpi_vpss_enable_chn(grp, chn);
    if(ret != TD_SUCCESS) {
        return ret;
    }

    ret = ss_mpi_vpss_start_grp(grp);
    if(ret != TD_SUCCESS) {
        return ret;
    }

    ret = ss_mpi_vpss_stop_grp(grp);
    if(ret != TD_SUCCESS) {
        return ret;
    }

    ret = ss_mpi_vpss_disable_chn(grp, chn);
    if(ret != TD_SUCCESS) {
        return ret;
    }

    ret = ss_mpi_vpss_destroy_grp (grp);
    if(ret != TD_SUCCESS) {
        return ret;
    }

【相关主题】

ss_mpi_vpss_destroy_grp

【描述】

销毁一个VPSS组。

【语法】

td_s32 ss_mpi_vpss_destroy_grp(ot_vpss_grp grp)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 调用此接口之前,必须先调用ss_mpi_vpss_stop_grp禁用此Group。
  • 调用此接口时,会一直等待此Group当前任务处理结束才会真正销毁。
  • Hi3519DV500 OT_VI_ONLINE_VPSS_ONLINE模式且非OT_FMU_MODE_OFF模式写出时,grp0支持快速销毁组,即不disable通道,stop grp后直接destroy,用于场景快速切换。此时若低延时写出,后端绑定VENC时,会丢掉异常的帧,绑定其他模块则可能导致帧图像异常;若disable通道,则会等待启动的帧完成,才会真正销毁,一般会延迟2~3帧的时间。

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_create_grp

ss_mpi_vpss_start_grp

【描述】

启用VPSS Group。

【语法】

td_s32 ss_mpi_vpss_start_grp(ot_vpss_grp grp)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

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

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_create_grp

ss_mpi_vpss_stop_grp

【描述】

禁用VPSS Group。

【语法】

td_s32 ss_mpi_vpss_stop_grp(ot_vpss_grp grp);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 重复禁用同一VPSS Group返回成功。

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_create_grp

ss_mpi_vpss_reset_grp

【描述】

复位VPSS Group。

【语法】

td_s32 ss_mpi_vpss_reset_grp (ot_vpss_grp grp);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

Group必须已创建。

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

无。

ss_mpi_vpss_set_grp_attr

【描述】

设置VPSS Group属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_attr (ot_vpss_grp grp, const ot_vpss_grp_attr *grp_attr)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

grp_attr

VPSS Group属性指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Group属性必须合法,其中部分静态属性不可动态设置。具体功能限制请参考ot_vpss_grp_attr。

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_create_grp

ss_mpi_vpss_get_grp_attr

【描述】

获取VPSS Group属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_attr (ot_vpss_grp grp, ot_vpss_grp_attr *grp_attr)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

grp_attr

VPSS Group属性指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

Group必须已创建。

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_create_grp

ss_mpi_vpss_set_grp_3dnr_attr

【描述】

设置VPSS Group 3DNR属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_3dnr_attr (ot_vpss_grp grp, const ot_3dnr_attr *attr)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

attr

VPSS 3DNR属性指针。详细描述请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 3DNR属性必须合法,详细限制请参考“系统控制”章节。
  • 开3DNR时,压缩格式只支持帧压缩和非压,而且压缩方式不能动态改变。
  • nr_type是静态属性,不支持动态修改。可在关闭3DNR后再重新打开时修改。
  • motion_denoise开启时,nr_type需要设置OT_NR_TYPE_VIDEO_NORM。
  • 对于Hi3519DV500如下因素会导致当前处理的图像3DNR功能暂时关闭:

    • VPSS输入图像的宽高改变
    • VPSS输入图像的压缩模式改变
    • 组裁剪宽高改变
    • 输入压缩图像时组裁剪x坐标改变
    • 分块场景,通道0输出图像宽度改变
    • 分块场景,对于支持幅形比的解决方案,通道0幅形比参数改变(模式、x坐标、宽度、高度)
    • 分块场景,通道0压缩模式改变
    • 分块场景,通道0输出压缩时 mirror使能改变
  • 当使能3DNR时,Hi3519DV500输入压缩图像要求宽高4像素对齐,如果输入非4对齐,内部自适应裁剪到4对齐。

  • Hi3519DV500开启3DNR时只支持输入OT_VIDEO_FORMAT_LINEAR/OT_VIDEO_FORMAT_TILE_32x4,不支持OT_VIDEO_FORMAT_TILE_64x16格式。
  • 3DNR开关打开时,会分配3DNR功能需要的内存,3DNR关闭时,相应的内存会被释放。
  • 调用该接口前需要先调用ss_mpi_sys_set_3dnr_pos接口将3DNR位置配置到vpss,否则调用该接口返回失败。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无

【相关主题】

ss_mpi_vpss_get_grp_3dnr_attr

【描述】

获取VPSS Group 3DNR属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_3dnr_attr (ot_vpss_grp grp, ot_3dnr_attr *attr)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

attr

VPSS 3DNR属性指针。详细描述请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 调用该接口前需要先调用ss_mpi_sys_set_3dnr_pos接口将3DNR位置配置到vpss,否则调用该接口返回失败。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无

【相关主题】

ss_mpi_vpss_set_grp_3dnr_param

【描述】

设置VPSS Group 3DNR参数。

【语法】

td_s32 ss_mpi_vpss_set_grp_3dnr_param (ot_vpss_grp grp, const ot_3dnr_param *param)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

param

VPSS 3DNR标准参数指针。详细描述请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 3DNR参数必须合法,各成员取值功能限制及3DNR调试指导请参考“系统控制”章节ot_3dnr_param 结构体说明。
  • 建议先调用ss_mpi_vpss_get_grp_3dnr_param获取当前参数,再进行设置操作。
  • 调用该接口前需要先调用ss_mpi_sys_set_3dnr_pos接口将3DNR位置配置到vpss,否则调用该接口返回失败。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无

【相关主题】

ss_mpi_vpss_get_grp_3dnr_param

【描述】

获取VPSS Group 3DNR参数。

【语法】

td_s32 ss_mpi_vpss_get_grp_3dnr_param (ot_vpss_grp grp, ot_3dnr_param *param)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

param

VPSS 3DNR标准参数指针。详细描述请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 调用该接口前需要先调用ss_mpi_sys_set_3dnr_pos接口将3DNR位置配置到vpss,否则调用该接口返回失败。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无

【相关主题】

ss_mpi_vpss_set_grp_param

【描述】

设置VPSS Group 参数。

【语法】

td_s32 ss_mpi_vpss_set_grp_param(ot_vpss_grp grp, const ot_vpss_grp_param *grp_param);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

grp_param

组参数设置。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

头文件:ot_common_vpss.h、ss_mpi_vpss.h

库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 请务必先调用ss_mpi_vpss_get_grp_param获取当前参数,再进行设置操作。
  • Hi3519DV500/Hi3516DV500/Hi3516CV610/Hi3511CV100不支持调用该接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_param

ss_mpi_vpss_get_grp_param

【描述】

获取VPSS Group 参数。

【语法】

td_s32 ss_mpi_vpss_get_grp_param(ot_vpss_grp grp, ot_vpss_grp_param *grp_param)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

grp_param

组参数设置。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

头文件:ot_common_vpss.h、ss_mpi_vpss.h

库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3519DV500/Hi3516DV500/Hi3516CV610/Hi3511CV100不支持调用该接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_param

ss_mpi_vpss_set_grp_cfg

【描述】

设置VPSS Group 静态配置。

【语法】

td_s32 ss_mpi_vpss_set_grp_cfg(ot_vpss_grp grp, const ot_vpss_grp_cfg *grp_cfg);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

grp_cfg

组静态配置。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

头文件:ot_common_vpss.h、ss_mpi_vpss.h

库文件:libss_mpi.a

【注意】

  • Group必须未创建。
  • 各成员取值功能限制请参考 ot_vpss_grp_cfg结构说明。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_cfg

ss_mpi_vpss_get_grp_cfg

【描述】

获取VPSS Group 静态配置。

【语法】

td_s32 ss_mpi_vpss_get_grp_cfg(ot_vpss_grp grp, ot_vpss_grp_cfg *grp_cfg);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

grp_cfg

组静态配置。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

头文件:ot_common_vpss.h、ss_mpi_vpss.h

库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_cfg

ss_mpi_vpss_set_grp_crop

【描述】

设置VPSS组CROP参数。

【语法】

td_s32 ss_mpi_vpss_set_grp_crop(ot_vpss_grp grp, const ot_vpss_crop_info *crop_info);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

crop_info

CROP功能参数。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 具体成员取值及功能限制参考ot_vpss_crop_info结构体说明。
  • 裁剪区域的宽高不能小于VPSS支持的最小输入分辨率,不能超过VPSS支持的最大输入分辨率;如果裁剪宽度大于输入图像宽度,则裁剪输出宽度调整为输入图像宽度;如果裁剪高度大于输入图像高度,则裁剪输出高度调整为输入图像高度;裁剪区域起始点不支持负坐标,裁剪区域右边界不能超出VPSS支持的最大输入宽度,裁剪区域下边界不能超出VPSS支持的最大输入高度。
  • Hi3519DV500裁剪区域超出图像范围,裁剪坐标向原点方向移动,优先保证裁剪出的宽高与所设置的参数相同。
  • Hi3516CV610/Hi3511CV100裁剪区域超出图像范围,丢弃超出部分图像,优先保证裁剪坐标与所设置的参数相同。
  • Hi3519DV500/Hi3511CV100仅离线模式支持组裁剪功能。
  • Hi3516CV610位于离线模式或OT_VI_OFFLINE_VPSS_ONLINE模式时支持组裁剪功能;当位于OT_VI_OFFLINE_VPSS_ONLINE模式时,输入分块情况下则不支持组裁剪功能。
  • Hi3516CV610位于OT_VI_OFFLINE_VPSS_ONLINE模式时,使用组裁剪对性能有影响,尤其是组裁剪之后通道0放大的场景(Hi3516CV610-10B/Hi3516CV608组裁剪范围不建议小于1080P)。
  • FMU帧(VI FMU模式写出绑定VPSS)不支持Group裁剪。
  • 鱼眼多区域或拼接不支持Group裁剪。

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_get_grp_crop

【描述】

获取VPSS组CROP参数。

【语法】

td_s32 ss_mpi_vpss_get_grp_crop(ot_vpss_grp grp, ot_vpss_crop_info *crop_info);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

crop_info

CROP功能参数。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

无

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_create_grp

ss_mpi_vpss_send_frame

【描述】

用户向VPSS发送数据。

【语法】

td_s32 ss_mpi_vpss_send_frame(ot_vpss_grp grp, const ot_video_frame_info *frame_info, td_s32 milli_sec);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

frame_info

待发送的图像信息。具体描述请参考“系统控制”章节。

输入

milli_sec

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 用户使用此接口时,可以自行进行帧率控制。
  • VPSS通道设置为AUTO 模式时使用此接口前,VPSS应正常启动,并与后端接收者绑定;或VPSS通道设置为USER模式,用户通过获取图像接口获取图像。
  • 输入为压缩时,宽高对齐要求与"输入输出特性"章节中保持一致。输入为非压缩时,会自动向下裁剪对齐。
  • 仅离线模式支持此接口。
  • 如果送给VPSS的帧是用户自己构建,不是从某个模块获取而来,需要将ot_video_frame中的frame_flag初始化为0。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_send_frame_ex

【描述】

用户向VPSS发送数据扩展接口。

【语法】

td_s32 ss_mpi_vpss_send_frame_ex(ot_vpss_grp grp, ot_vpss_grp_pipe pipe, const ot_video_frame_info *frame_info, td_s32 milli_sec);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

pipe

VPSS Pipe号。

取值范围:[0, OT_VPSS_MAX_GRP_PIPE_NUM)

输入

frame_info

待发送的图像信息。具体描述请参考“系统控制”章节。

输入

milli_sec

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • pipe为0时,功能与ss_mpi_vpss_send_frame接口一致。
  • pipe不为0时,仅在开启拼接功能时使用,且pipe需小于拼接参数中的pipe_num。
  • VPSS通道设置为AUTO 模式时使用此接口前,VPSS应正常启动,并与后端接收者绑定;或VPSS通道设置为USER模式,用户通过获取图像接口获取图像。
  • 用户使用此接口时,可以自行进行帧率控制。
  • 输入为压缩时,宽高对齐要求与"输入输出特性"章节中保持一致。输入为非压缩时,会自动向下裁剪对齐。
  • 仅离线模式支持此接口。
  • 如果送给VPSS的帧是用户自己构建,不是从某个模块获取而来,需要将ot_video_frame中的frame_flag初始化为0。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_get_grp_frame

【描述】

用户从Group获取一帧原始图像。主要应用场景:高清设备解码回放,要求暂停、步进时,PIP层和普通视频层上的两个通道显示同一帧图像。通过本接口和ss_mpi_vpss_send_frame等接口的配合使用,可实现该功能。

【语法】

td_s32 ss_mpi_vpss_get_grp_frame(ot_vpss_grp grp, ot_video_frame_info *frame_info, td_s32 milli_sec)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)。

输入

frame_info

图像信息。具体描述请参考“系统控制”章节。

输出

milli_sec

超时时间,如果milli_sec设置为-1,表示阻塞模式,程序一直等待,直到获取到图像才返回。如果milli_sec设置为0,表示非阻塞模式,不管是否获取到图像,立即返回。如果milli_sec设置大于0,表示超时等待模式,参数的单位是毫秒(ms),指超时时间,在此时间内如果没有获取到图像,则超时返回。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建且使能,且必须要有通道使能。
  • 获取的图像要及时释放,否则将造成VB不够或解码回放时停止,建议与ss_mpi_vpss_release_grp_frame接口配对使用。
  • 使能了backup帧时获取的是backup帧,否则获取的是当前帧。
  • 仅离线模式支持此功能。
  • 不支持获取FMU帧。

【举例】

无。

【相关主题】

ss_mpi_vpss_release_grp_frame

ss_mpi_vpss_release_grp_frame

【描述】

用户释放一帧源图像。

【语法】

td_s32 ss_mpi_vpss_release_grp_frame(ot_vpss_grp grp, const ot_video_frame_info *frame_info)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)。

输入

frame_info

图像信息。具体描述请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • 实际上,此接口的grp参数并无实际用途,可在取值范围内任意设置。
  • 此接口需与ss_mpi_vpss_get_grp_frame配对使用。
  • 仅离线模式支持此功能。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_frame

ss_mpi_vpss_get_grp_frame_ex

【描述】

用户从Group获取一帧原始图像扩展接口。主要应用场景:获取拼接场景多pipe的原始图像。

【语法】

td_s32 ss_mpi_vpss_get_grp_frame_ex(ot_vpss_grp grp, ot_vpss_grp_pipe pipe, ot_video_frame_info *frame_info, td_s32 milli_sec)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

pipe

VPSS Pipe号。

取值范围:[0, OT_VPSS_MAX_GRP_PIPE_NUM)

输入

frame_info

图像信息。具体描述请参考“系统控制”章节。

输出

milli_sec

超时时间,如果milli_sec设置为-1,表示阻塞模式,程序一直等待,直到获取到图像才返回。如果milli_sec设置为0,表示非阻塞模式,不管是否获取到图像,立即返回。如果milli_sec设置大于0,表示超时等待模式,参数的单位是毫秒(ms),指超时时间,在此时间内如果没有获取到图像,则超时返回。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建且使能,且必须要有通道使能。
  • pipe为0时,功能与ss_mpi_vpss_get_grp_frame接口相同
  • pipe不为0时,仅在开启拼接功能时使用,且pipe需小于拼接参数中的pipe_num。
  • 获取的图像要及时释放,否则将造成VB不够或解码回放时停止,建议与ss_mpi_vpss_release_grp_frame_ex接口配对使用。
  • 使能了backup帧时获取的是backup帧,否则获取的是当前帧。
  • 仅离线模式支持此功能。
  • 不支持获取FMU帧

【举例】

无。

【相关主题】

ss_mpi_vpss_release_grp_frame_ex

ss_mpi_vpss_release_grp_frame_ex

【描述】

用户释放一帧源图像扩展接口。

【语法】

td_s32 ss_mpi_vpss_release_grp_frame_ex(ot_vpss_grp grp, ot_vpss_grp_pipe pipe, const ot_video_frame_info *frame_info)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

pipe

VPSS Pipe号。

取值范围:[0, OT_VPSS_MAX_GRP_PIPE_NUM)

输入

frame_info

图像信息。具体描述请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • 实际上,此接口的grp参数与pipe参数并无实际用途,可在取值范围内任意设置。
  • 此接口需与ss_mpi_vpss_get_grp_frame_ex配对使用。
  • 仅离线模式支持此功能。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_frame_ex

ss_mpi_vpss_enable_backup_frame

【描述】

使能Backup帧。

【语法】

td_s32 ss_mpi_vpss_enable_backup_frame(ot_vpss_grp grp)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 仅离线模式支持此功能。
  • 使能Backup时,会多占用一个VB。
  • 默认没有使能Backup,此时会影响VO 的画面切换、播放控制等功能,如需使用对应功能,需要使能Backup。
  • Hi3519DV500/Hi3516DV500/Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_disable_backup_frame

【描述】

去使能Backup帧。

【语法】

td_s32 ss_mpi_vpss_disable_backup_frame(ot_vpss_grp grp)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 仅离线模式支持此功能。
  • Hi3519DV500/Hi3516DV500/Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_enable_user_frame_rate_ctrl

【描述】

VPSS以非绑定方式接收图像时,使能用户自己做帧率控制,如果VPSS通道工作在AUTO模式绑定到VO/VENC,此时VO/VENC的通道帧率控制不生效。

【语法】

td_s32 ss_mpi_vpss_enable_user_frame_rate_ctrl(ot_vpss_grp grp)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • 多次使能返回成功。
  • Group必须已创建。
  • 此接口仅在VPSS通过接口ss_mpi_vpss_send_frame或ss_mpi_vpss_send_frame_ex接收图像时,使能用户自己做帧率控制,如果VPSS通道工作在AUTO模式绑定到VO,此时VO的通道帧率控制不生效。
  • 使能用户自己做帧率控制时,如果VPSS通道工作在AUTO模式并绑定到VENC,此时则VENC通道的帧率控制不生效,VENC通道不收帧。如要使用VPSS通道AUTO模式绑定到VENC并开启VENC通道帧率控制,需要先关闭用户自己做帧率控制,再开启VENC通道帧率控制。
  • VPSS通过接口ss_mpi_vpss_send_frame或ss_mpi_vpss_send_frame_ex接收图像时,默认使能用户自己做帧率控制。
  • Hi3516CV610不支持此接口。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_disable_user_frame_rate_ctrl

【描述】

VPSS以非绑定方式接收图像时,禁止用户自己做帧率控制,此时VO/VENC的通道帧率控制生效。

【语法】

td_s32 ss_mpi_vpss_disable_user_frame_rate_ctrl(ot_vpss_grp grp)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • 重复禁用返回成功。
  • Group必须已创建。
  • 此接口仅在VPSS通过接口ss_mpi_vpss_send_frame或ss_mpi_vpss_send_frame_ex接收图像时,禁止用户自己做帧率控制,此时VO/VENC的通道帧率控制生效。
  • 禁止用户自己做帧率控制时,VO/VENC通道帧率控制仅在VPSS为AUTO模式下生效,如果VPSS为USER模式,要求VPSS通道要绑定到某个模块,或者及时取走通道队列中的图像,否则VPSS接收图像会失败。
  • Hi3516CV610不支持此接口。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_set_grp_frame_interrupt_attr

【描述】

设置VPSS在线模式使用的帧中断属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_frame_interrupt_attr(ot_vpss_grp grp, const ot_frame_interrupt_attr *frame_interrupt_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0,0]。

输入

frame_interrupt_attr

帧中断属性结构体,具体描述请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • VPSS组号必须为0。
  • 仅OT_VI_ONLINE_VPSS_ONLINE模式下有效。
  • 该接口需要在设置ss_mpi_sys_init之后调用。
  • 修改中断模式时必须先关闭所有物理通道。
  • 仅支持OT_FRAME_INTERRUPT_START、OT_FRAME_INTERRUPT_EARLY和OT_FRAME_INTERRUPT_EARLY_END三种类型。OT_FRAME_INTERRUPT_EARLY模式,VPSS在延时中断上报时发送图像,如果后端接收模块处理速度比VPSS处理要快,可能会出现花屏、解压错误等问题。三种中断类型的优缺点如表1所示。
  • early_line用于设置VPSS硬件采集多少行后上报延时中断。
  • Hi3516CV610开启通道0卷绕时,仅支持OT_FRAME_INTERRUPT_START和OT_FRAME_INTERRUPT_EARLY_END两种类型,同时需要将early_line设置为组属性最大高度的一半。
  • Hi3511CV100仅支持OT_FRAME_INTERRUPT_START和OT_FRAME_INTERRUPT_EARLY_END两种类型。

表 1 VPSS在线中断类型的优缺点

在线中断类型

优缺点

稳定性

中断数量

CPU占用率

内存占用

通路延时

OT_FRAME_INTERRUPT_START

高

少

低

多

高

OT_FRAME_INTERRUPT_EARLY

低

少

低

少

低

OT_FRAME_INTERRUPT_EARLY_END

高

多

高

少

高

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_frame_interrupt_attr

ss_mpi_vpss_get_grp_frame_interrupt_attr

【描述】

获取VPSS在线模式使用的帧中断属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_frame_interrupt_attr(ot_vpss_grp grp, ot_frame_interrupt_attr *frame_interrupt_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0,0]。

输入

frame_interrupt_attr

帧中断属性结构体,具体描述请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • VPSS组号必须为0。
  • 该接口需要在设置ss_mpi_sys_init之后调用。
  • 默认为OT_FRAME_INTERRUPT_START模式,延时行号为0;销毁组后会将帧中断属性重置为默认状态。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_frame_interrupt_attr

ss_mpi_vpss_set_chn_attr

【描述】

设置VPSS物理通道属性。

【语法】

td_s32 ss_mpi_vpss_set_chn_attr(ot_vpss_grp grp, ot_vpss_chn chn, const ot_vpss_chn_attr *chn_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)或OT_VPSS_DIRECT_CHN

输入

chn_attr

VPSS通道属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 具体成员取值及功能限制参考ot_vpss_chn_attr结构体说明。
  • 通道0与通道OT_VPSS_DIRECT_CHN复用大部分通道属性,除通道帧率控制属性外,后配置的通道会覆盖之前的配置。
  • 通道OT_VPSS_DIRECT_CHN无数据存储格式,配置以后只对通道0生效,相关proc信息按线性非压展示。
  • grp在[OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM)范围内时,chn不能为OT_VPSS_DIRECT_CHN。
  • 任意Group的通道0在第一次设置为压缩输出且通道fmu模式为OT_FMU_MODE_WRAP成功时,会分配压缩头内存空间,通过"cat /proc/umap/media-mem"命令查看名为"fmu1_cmp_head"的信息查看内存占用大小,该内存所有卷绕压缩输出的Group复用。该内存在系统退出时释放。

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_get_chn_attr

ss_mpi_vpss_get_chn_attr

【描述】

获取VPSS物理通道属性。

【语法】

td_s32 ss_mpi_vpss_get_chn_attr(ot_vpss_grp grp, ot_vpss_chn chn, ot_vpss_chn_attr *chn_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)或OT_VPSS_DIRECT_CHN

输入

chn_attr

VPSS通道属性。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_enable_chn

【描述】

启用VPSS通道。

【语法】

td_s32 ss_mpi_vpss_enable_chn(ot_vpss_grp grp, ot_vpss_chn chn);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_CHN_NUM)或OT_VPSS_DIRECT_CHN

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_disable_chn

ss_mpi_vpss_disable_chn

【描述】

禁用VPSS通道。

【语法】

td_s32 ss_mpi_vpss_disable_chn(ot_vpss_grp grp, ot_vpss_chn chn);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_CHN_NUM)或OT_VPSS_DIRECT_CHN

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_enable_chn

ss_mpi_vpss_set_chn_fmu_mode

【描述】

设置VPSS通道FMU模式。

【语法】

td_s32 ss_mpi_vpss_set_chn_fmu_mode(ot_vpss_grp grp, ot_vpss_chn chn, ot_fmu_mode mode);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)或OT_VPSS_DIRECT_CHN

输入

mode

FMU模式。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 通道必须处于disable状态才可修改FMU模式。
  • 任意Group的通道0在第一次通道fmu模式为OT_FMU_MODE_WRAP且为压缩输出成功时,会分配压缩头内存空间,通过"cat /proc/umap/media-mem"命令查看名为"fmu1_cmp_head"的信息查看内存占用大小,该内存所有卷绕压缩输出的Group复用。该内存在系统退出时释放。
  • OT_FMU_MODE_WRAP模式可1绑1对接H.264/H.265/JPEG/MJPEG编码;在开启DIRECT通道时,仅支持1绑1对接JPEG/MJPEG编码;在不开DIRECT通道时,可1绑2对接H.264/H.265编码与JPEG/MJPEG编码。
  • OT_FMU_MODE_WRAP和OT_FMU_MODE_DIRECT模式通道帧率受VENC影响,如VENC减帧控制时,VPSS对应的通道也不写出。
  • 不支持FMU grp和非FMU grp同时存在,即如果存在grp未开启通道OT_VPSS_DIRECT_CHN,也没有通道配置为OT_FMU_MODE_OFF之外的模式,同时存在grp开启通道OT_VPSS_DIRECT_CHN或通道配置为OT_FMU_MODE_OFF之外的模式,则logmpp报错,图像不能正常处理。
  • Hi3516CV610/Hi3511CV100不支持此接口。
  • 其他约束参考表1。

    表 1 FMU模式限制

    模块

    功能

    OT_FMU_MODE_DIRECT

    OT_FMU_MODE_WRAP

    OT_FMU_MODE_OFF

    VPSS

    OT_VPSS_CHN0

    N

    Y

    Y

    OT_VPSS_CHN1

    N

    N

    Y

    OT_VPSS_CHN2

    N

    N

    Y

    OT_VPSS_CHN3

    N

    N

    Y

    OT_VPSS_DIRECT_CHN

    Y

    N

    N

    全在线

    N

    Y

    Y

    vi chn fmu开启DIRECT模式

    N

    Y

    Y

    低延时

    N

    N

    Y

    分块

    N

    N

    Y

    鱼眼

    N

    N

    Y

    拼接

    N

    N

    Y

    Tile64x16

    N

    N

    Y

    grp [OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM)

    N

    N

    Y

    通道后处理(overlayEx、lineEx、mosaicEx、coverEx、CornerEx、通道亮度和、扩展通道)

    N

    N

    Y

    缩放

    N

    注:OT_VPSS_DIRECT_CHN开启时,OT_VPSS_CHN0不允许缩放(原图输出),同时其他通道不允许放大

    Y

    Y

    缩小倍数超过15倍

    N

    N

    Y

    SP422

    N

    注:OT_VPSS_DIRECT_CHN开启时,输入与输出通道都不支持SP422

    N

    Y

    mirror

    N

    注:OT_VPSS_DIRECT_CHN通道与所有通道mirror互斥

    Y

    Y

    flip

    N

    注:OT_VPSS_DIRECT_CHN通道与所有通道flip互斥

    N

    Y

    通道幅形比

    N

    N

    Y

    紧凑段压缩

    N

    注:OT_VPSS_DIRECT_CHN开启时,所有通道不支持紧凑段压缩输出

    Y

    Y

    非紧凑段压缩

    N

    Y

    Y

    通道AUTO模式

    N

    注:OT_VPSS_DIRECT_CHN开启时,OT_VPSS_CHN0也不支持AUTO模式

    N

    Y

    3DNR

    N

    Y

    Y

    获取通道帧

    N

    N

    Y

    最大输出分辨率

    输出图像宽度≤4096

    输出图像面积≤16M

    参考输入输出特性章节

    VENC

    重编

    N

    N

    Y

    丢帧

    Y

    Y

    Y

    增帧

    N

    N

    Y

    mirror

    N

    Y

    Y

    flip

    N

    N

    Y

    debreath

    N

    N

    Y

    CROP

    N

    N

    Y

    quality balance

    N

    N

    Y

    DCF/MPF

    N

    N

    Y

    缩小

    N

    N

    Y

    彩转灰

    N

    N

    Y

【举例】

无

【相关主题】

ss_mpi_vpss_get_chn_fmu_mode

ss_mpi_vpss_get_chn_fmu_mode

【描述】

获取VPSS通道FMU模式。

【语法】

td_s32 ss_mpi_vpss_get_chn_fmu_mode(ot_vpss_grp grp, ot_vpss_chn chn, ot_fmu_mode *mode);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)或OT_VPSS_DIRECT_CHN

输入

mode

FMU模式。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

【举例】

无

【相关主题】

ss_mpi_vpss_set_chn_fmu_mode

ss_mpi_vpss_set_chn_rotation

【描述】

设置VPSS物理通道旋转属性。

【语法】

td_s32 ss_mpi_vpss_set_chn_rotation(ot_vpss_grp grp, ot_vpss_chn chn, const ot_rotation_attr *rotation_attr)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)。

输入

chn

VPSS 通道号

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)。

输入

rotation_attr

旋转属性。详细描述请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 通道属性必须已设置。
  • 固定角度旋转90度、270度时仅支持非压缩输出。用户可通过开启通道mirror和flip实现旋转180度,此时通道可以支持压缩输出。
  • Hi3519DV500/Hi3516CV610/Hi3511CV100只支持固定角度旋转。
  • Hi3519DV500/Hi3516CV610/Hi3511CV100开启旋转功能时,物理通道像素格式不能设置为semi-planar422,通过开启mirror和flip实现180度旋转时,可以设置像素格式为semi-planar422。
  • 固定角度旋转仅支持0度、90度、180度、270度的旋转。
  • Hi3516CV610物理通道0输出视频格式为Tile64x16时,仅支持90度和270度的旋转。
  • 通道AUTO模式下不支持旋转。
  • 相关使用注意事项请参考“系统控制”章节ot_rotation_attr结构体。
  • 非OT_FMU_MODE_OFF通道调用该接口无效。

【举例】

无。

【相关主题】

ot_rotation_attr

ss_mpi_vpss_get_chn_rotation

【描述】

获取VPSS物理通道旋转属性。

【语法】

td_s32 ss_mpi_vpss_get_chn_rotation(ot_vpss_grp grp, ot_vpss_chn chn, ot_rotation_attr *rotation_attr)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS通道号

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

rotation_attr

旋转属性。详细描述请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

Group必须已创建。

【举例】

无。

【相关主题】

ot_rotation_attr

ss_mpi_vpss_get_chn_frame

【描述】

用户从通道获取一帧处理完成的图像。

【语法】

td_s32 ss_mpi_vpss_get_chn_frame(ot_vpss_grp grp, ot_vpss_chn chn, ot_video_frame_info *frame_info, td_s32 milli_sec)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS通道号。

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

frame_info

图像信息。具体描述请参考“系统控制”章节。

输出

milli_sec

超时时间

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 该接口适用于VPSS所有通道,包括物理通道与扩展通道。
  • 只有在USER模式下,并且队列深度不为0,才能获取到图像。
  • 调用该接口获取图像,不会对后端绑定的模块有影响。如后端绑定VO显示,可以在显示过程中获取图像,VO仍正常显示,不会受到影响。
  • 当milli_sec设为-1时,表示阻塞模式,程序一直等待,直到获取到图像才返回。如果milli_sec等于0时,表示非阻塞模式。如果milli_sec大于0时,表示超时等待模式,参数的单位是毫秒,指超时时间,在此时间内如果没有获取到图像,则超时返回。
  • 解码回放场景,由于不允许出现丢帧,VPSS只要有一个通道不处理新图像(通道已使能),则整个VPSS不处理新图像。例如说使能了通道0和通道1,两者都不绑定后端,通道图像队列长度都设为2,此时从通道0中最多获取出2帧已缓存的图像,因为通道1缓存2帧后未处理新图像,所以VPSS不会再处理新图像。
  • 在线模式,中断模式设置为OT_FRAME_INTERRUPT_EARLY时,从物理通道获取到的图像可能是VPSS硬件未处理完毕的图像。
  • 如果开启了通道低延时,获取的帧不是完整帧,需设置合理的低延时行号以保证读取的图像不出现异常。
  • Hi3519DV500仅通道fmu模式为OT_FMU_MODE_OFF时,才可获取通道帧。
  • Hi3516CV610开启通道卷绕时,无法获取到帧。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_release_chn_frame

【描述】

用户释放一帧通道图像。

【语法】

td_s32 ss_mpi_vpss_release_chn_frame(ot_vpss_grp grp, ot_vpss_chn chn, const ot_video_frame_info *frame_info)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

frame_info

图像信息。具体描述请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • 此接口的grp和chn参数无实际用途,可在其取值范围内任意设置。
  • 此接口需与ss_mpi_vpss_get_chn_frame配合使用。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_get_chn_rgn_luma

【描述】

获取指定图像区域的亮度总和。该接口主要用于对OSD区域进行亮度和统计,根据统计的亮度,进行反色处理,使OSD区域更加明显。

【语法】

td_s32 ss_mpi_vpss_get_chn_rgn_luma(ot_vpss_grp grp, ot_vpss_chn chn, const ot_vpss_rgn_info *luma_rgn, td_u64 *luma_data, td_s32 milli_sec)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

luma_rgn

统计区域的区域属性,即每个要获取luma信息的起始位置、宽、高。

输入

luma_data

接收区域亮度和统计信息的内存指针,该内存大小应该大于或等于sizeof(td_u64)×num。

输出

milli_sec

超时参数milli_sec设置:

  • 设为-1时为阻塞模式;
  • 设置milli_sec等于0时为非阻塞模式;
  • 大于0时为超时等待模式。超时时间的单位为毫秒(ms)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 此接口针对的是VPSS通道的输出图像。获取亮度统计信息的时机是这些图像被用户获取或被发送到后端模块之前。
  • 统计区域的数量范围为[1, 64]。
  • 统计区域坐标和宽高要求2像素对齐。
  • 不同芯片统计区域宽高最大、最小分别如下:

    • Hi3519DV500最大为8192x8192,最小为2x2
    • Hi3516CV610最大为4096x4096,最小为6x6
    • Hi3511CV100最大为16384x8192,最小为2x2
  • 亮度和区域不得超出图像。

  • Hi3519DV500 VPSS组号在[OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM - 1]范围内的组,在单通道输出且不做任何处理时,不支持获取通道亮度和。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_set_chn_crop

【描述】

设置VPSS通道CROP参数。

【语法】

td_s32 ss_mpi_vpss_set_chn_crop(ot_vpss_grp grp, ot_vpss_chn chn, const ot_vpss_crop_info *crop_info);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

crop_info

CROP参数。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 具体成员取值及功能限制参考ot_vpss_crop_info结构体说明。
  • 物理通道先做缩放后做裁剪;扩展通道先做裁剪后做缩放。
  • 如果裁剪区域超出图像范围,丢弃超出部分图像,优先保证裁剪坐标与所设置的参数相同。
  • 分块处理时,通道0不支持裁剪。
  • 设置通道裁剪前必须先设置通道属性。
  • 通道AUTO模式与通道裁剪功能互斥。
  • 鱼眼多区域不支持通道crop。
  • 拼接不支持通道crop。
  • OT_VPSS_DIRECT_CHN通道不支持调用该接口,效果与OT_VPSS_CHN0相同。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_crop

【描述】

获取VPSS通道CROP参数。

【语法】

td_s32 ss_mpi_vpss_get_chn_crop(ot_vpss_grp grp, ot_vpss_chn chn, ot_vpss_crop_info *crop_info);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

crop_info

CROP参数。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

无。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_crop

ss_mpi_vpss_set_chn_vb_src

【描述】

设置VPSS通道的VB来源。

【语法】

td_s32 ss_mpi_vpss_set_chn_vb_src(ot_vpss_grp grp, ot_vpss_chn chn, ot_vb_src vb_src);

【参数】

参数名称

描述

输入/输出

grp

VPSS组号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS通道号。

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

vb_src

VB来源。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ss_mpi_vpss.h、ot_common_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 支持动态配置vb来源。
  • vb来源只能设置为OT_VB_SRC_COMMON,OT_VB_SRC_USER。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_vb_src

【描述】

获取VPSS通道的VB来源。

【语法】

td_s32 ss_mpi_vpss_get_chn_vb_src(ot_vpss_grp grp, ot_vpss_chn chn, ot_vb_src *vb_src);

【参数】

参数名称

描述

输入/输出

grp

VPSS组号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS通道号。

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

vb_src

VB来源。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ss_mpi_vpss.h、ot_common_vpss.h
  • 库文件:libss_mpi.a

【注意】

Group必须已创建

【举例】

无。

【相关主题】

ss_mpi_vpss_attach_chn_vb_pool

【描述】

将VPSS的通道绑定到某个视频缓存VB池中。

【语法】

td_s32 ss_mpi_vpss_attach_chn_vb_pool(ot_vpss_grp grp, ot_vpss_chn chn, ot_vb_pool vb_pool)

【参数】

参数名称

描述

输入/输出

grp

VPSS组号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)。

输入

chn

VPSS通道号。

取值范围:[0, OT_VPSS_MAX_CHN_NUM)。

输入

vb_pool

视频缓存VB池信息。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ss_mpi_vpss.h、ot_common_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 用户必须调用接口ss_mpi_vb_create_pool创建一个视频缓存VB池,再通过调用本接口把当前组的通道绑定到固定pool id的VB池中。
  • 支持多个组的多个通道绑定到同一个VB池中。
  • 当要切换当前组绑定的VB池时,只需再调一次本接口正确配置需要绑定到的VB池即可。
  • vb_pool必须保证是已创建VB池的有效Pool Id。
  • 只对USER模式的通道有效,AUTO模式的通道不受影响。
  • 在调用ss_mpi_vpss_detach_chn_vb_pool后,销毁创建的VB之前,需要保证VB没有被VPSS后端绑定的模块使用,可以通过sleep或清除后端模块通道缓存的方式先把VB都释放,再销毁缓存VB池。
  • UserVB大小根据VPSS通道输出图像计算,具体计算公式参考ot_buffer.h。
  • 需要配合ss_mpi_vpss_set_chn_vb_src接口使用,可以动态切换。

    • 使用绑定用户VB池的方式,必须设置vb_src为OT_VB_SRC_USER并调用本接口attach一个用户VB池。
    • 使用公共VB池的方式,必须设置vb_src为OT_VB_SRC_COMMON,此时固定从公共vb池获取写出vb。
    • 设置vb_src为OT_VB_SRC_USER后,也可以attach公共vb,固定使用指定公共vb池。
  • buffer share和attach vb pool功能同时开启时,buffer share优先级更高,通道使用的VB为输入VB。

  • 对于Hi3519DV500/Hi3511CV100,先开启低延时单buffer再开启attach vb pool,低延时单buffer优先级更高,通道使用的VB为低延时buffer。如果先attach vb pool,然后开启低延时单buffer,再detach vb pool,通道依然使用用户VB池中的VB,如果要释放USER VB,需要先关闭低延时单buffer,然后再detach vb pool。
  • 对于Hi3519DV500,开启mcf_en的组仅通道0支持绑定/解绑VB池。
  • wrap通道配置该接口无效,内部分配不占uv data的私有vb,proc信息按私有vb的pool_id展示。
  • direct通道不支持该接口,内部分配不占uv data的私有vb,proc信息按私有vb的pool_id展示。
  • Hi3519DV500 grp在[OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM)范围内走bypass流程时,输出vb和输入vb相同,pool_id无效。
  • 绑定VB池和创建VPSS组的操作,需要在同一个进程中执行。

【举例】

无。

【相关主题】

ss_mpi_vpss_detach_chn_vb_pool

【描述】

将VPSS的通道从某个视频缓存VB池中解绑定。

【语法】

td_s32 ss_mpi_vpss_detach_chn_vb_pool(ot_vpss_grp grp, ot_vpss_chn chn)

【参数】

参数名称

描述

输入/输出

grp

VPSS组号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)。

输入

chn

VPSS通道号。

取值范围:[0, OT_VPSS_MAX_CHN_NUM)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ss_mpi_vpss.h、ot_common_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • detach时,vb_src必须设置为OT_VB_SRC_USER

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_low_delay

【描述】

设置VPSS通道低延时参数。

【语法】

td_s32 ss_mpi_vpss_set_chn_low_delay(ot_vpss_grp grp, ot_vpss_chn chn, const ot_low_delay_info *low_delay_info);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

low_delay_info

低延时属性。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 具体成员取值参考ot_low_delay_info结构体说明。
  • 设置低延时参数前必须先设置通道属性。
  • 扩展通道低延时不支持单buffer。
  • 低延时单buffer要求新的一帧开始处理时,后级模块已处理完上一帧,一般仅支持送VENC(无性能压力时),送其他模块时可能由于处理不及时,导致VPSS处理失败。
  • 低延时不支持Flip。
  • 当VI-VPSS处于OT_VI_ONLINE_VPSS_ONLINE模式时,如果物理通道开启低延时,且存在通道后处理或扩展通道调用VGS/GDC,此时VGS/GDC处理该输入低延时任务的耗时会被拉长至sensor采集一帧的时间,VGS/GDC占用率相比于其他模式会显著提升。
  • Hi3519DV500/Hi3511CV100低延时通道绑编码场景下,当有多个码流时,若设置编码通道优先级,此时低延时通道行数设置不能过小,建议设置128行以上,否则可能会引起非低延时通道阻塞不编码。
  • Hi3519DV500/Hi3511CV100在低延时通道绑编码场景下,编码不支持软件抽场。在低延时单buffer绑定编码场景下,编码不支持去呼吸效应,不能开启重复编码的功能,包含增帧模式、超大帧重编码、码率波动导致的重编码,用户应把最大重编码次数设置为0。
  • 低延时行号不能小于16,不能大于图像高度;如果是物理通道且开启了通道裁剪,则不能大于裁剪高度。
  • Hi3519DV500 OT_FRAME_INTERRUPT_EARLY模式物理通道不支持低延时,推荐使用OT_FRAME_INTERRUPT_EARLY_END模式开启低延时,以节省内存,降低通路延时。
  • Hi3519DV500 VPSS物理通道开启低延时,再开启固定角度旋转/MosaicEx/CoverEx/OverlayEx/Corner_rectEx/LineEx,会自适应关闭VPSS物理通道低延时。
  • Hi3519DV500/Hi3511CV100 VPSS物理通道开启低延时,同时需要缩小到超过15倍时,会自适应关闭VPSS物理通道低延时。
  • 鱼眼多区域不支持开启低延时。
  • 拼接不支持开启低延时
  • 非OT_FMU_MODE_OFF模式与低延时互斥。
  • Hi3516CV610仅物理通道0/1支持开启低延时,扩展通道不支持开启低延时。
  • Hi3516CV610输入图像分块且物理通道设置为紧凑段压缩输出时不支持开启低延时。
  • Hi3516CV610物理通道开启低延时,如果同时开启LDC、旋转、通道亮度和、CoverEx、LineEx、Corner_rectEx等通道后处理功能时,内部会自适应关闭物理通道低延时。
  • Hi3516CV610物理通道0卷绕与物理通道0低延时功能互斥;当VI-VPSS处于OT_VI_OFFLINE_VPSS_OFFLINE/OT_VI_OFFLINE_VPSS_ONLINE模式时,如果通道0开启卷绕功能时,通道1低延时行号需要设置为大于卷绕行号。
  • Hi3511CV100物理通道开启低延时,如果同时开启旋转、通道亮度和、MosaicEx、CoverEx、OverlayEx、Corner_rectEx、LineEx等通道后处理功能时,内部会自适应关闭物理通道低延时。
  • Hi3511CV100 VI-VPSS处于OT_VI_ONLINE_VPSS_ONLINE模式时,不支持开启低延时。
  • Hi3511CV100 通道depth不为0时,不支持开启低延时单buffer。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_low_delay

【描述】

获取VPSS通道低延时参数。

【语法】

td_s32 ss_mpi_vpss_get_chn_low_delay(ot_vpss_grp grp, ot_vpss_chn chn, ot_low_delay_info *low_delay_info);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

low_delay_info

低延时属性。具体描述请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

Group必须已创建。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_low_delay

ss_mpi_vpss_set_chn_stride_align

【描述】

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

【语法】

td_s32 ss_mpi_vpss_set_chn_stride_align(ot_vpss_grp grp, ot_vpss_chn chn, td_u32 align);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

align

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

取值范围:[0, 1024]

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • align为0时stride对齐使用自动模式,对齐要求跟随系统。
  • 当align小于VPSS硬件要求的stride对齐时,系统分配buffer和计算stride还是以硬件要求stride对齐为准。
  • 当align不等于VPSS硬件要求的stride对齐倍数时,系统分配buffer和计算stride向上对齐到硬件要求stride对齐的倍数。例:align设置为48,逻辑要求32对齐时,系统分配buffer和计算stride时使用64对齐。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_stride_align

ss_mpi_vpss_get_chn_stride_align

【描述】

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

【语法】

td_s32 ss_mpi_vpss_get_chn_stride_align(ot_vpss_grp grp, ot_vpss_chn chn, td_u32 *align);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

align

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

Group必须已创建。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_attr

ss_mpi_vpss_set_chn_buf_wrap

【描述】

设置VPSS物理通道低延时卷绕属性。

【语法】

td_s32 ss_mpi_vpss_set_chn_buf_wrap(ot_vpss_grp grp, ot_vpss_chn chn, const ot_vpss_chn_buf_wrap_attr *wrap_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

wrap_attr

VPSS物理通道卷绕属性结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 该接口必须在设置通道属性后调用。
  • 通道使能状态下不支持调用。
  • 仅物理通道0支持此接口。
  • 不支持输出semi-plannar422图像,不支持flip。
  • 通道卷绕开启时,通道后处理、卷绕通道被绑定到的扩展通道等功能将无效。
  • 通道卷绕与通道低延时、buffer share等功能互斥。
  • 当VI-VPSS处于OT_VI_ONLINE_VPSS_ONLINE模式时,卷绕通道最终的输出图像宽度(裁剪之后)必须大于等于512pixels。
  • 当VI-VPSS处于OT_VI_ONLINE_VPSS_ONLINE模式时,开启通道卷绕仅支持OT_FRAME_INTERRUPT_START和OT_FRAME_INTERRUPT_EARLY_END两种中断类型,同时需要将early_line设置为组属性最大高度的一半。
  • Hi3516CV610如果开启通道0卷绕,则通道0不支持同时绑定多路JPEG/MJPEG或多路H.264/H.265/SVAC3,可同时绑定一路JPEG/MJPEG+一路H.264/H.265/SVAC3。此时VPSS其他通道建议最多只绑定1路H.264/H.265/SVAC3小尺寸编码(能否支持这路小码流编码与sensor时序、小码流分辨率、CPU响应是否及时等因素有关);建议使用通道1进行小码流编码,同时打开低延时功能,能够更加充分地利用编码的性能。
  • 当VI-VPSS处于OT_VI_OFFLINE_VPSS_OFFLINE/OT_VI_OFFLINE_VPSS_ONLINE模式时,如果开启通道0卷绕,且开启通道1低延时功能时,通道1低延时行号需要设置为大于通道0卷绕行号。
  • 仅支持与VEDU和JPEGE对接。
  • 任意Group的通道0在第一次开启卷绕时,会从公共VB池拿取合适的卷绕VB,此后长期持有,直到所有Group都关闭卷绕时释放。该卷绕VB,所有开启卷绕的Group复用。
  • 当VI-VPSS处于OT_VI_ONLINE_VPSS_ONLINE模式时,如果mipi_rx采集帧率较低(小于10帧),不建议去动态开关卷绕功能。
  • 如果VEDU通道存在卷绕通道,则所有VEDU通道均不建议开启重编功能,否则可能会出现VEDU通道VB队列占满(VB占用多)和VPSS送帧时因为队列满而丢帧等问题。
  • 仅Hi3516CV610支持此接口。
  • 其他约束参考表1。

表 1 卷绕功能限制及对比

模块

功能

OT_VI_ONLINE_VPSS_ONLINE + 卷绕

OT_VI_OFFLINE_VPSS_OFFLINE + 卷绕

OT_VI_OFFLINE_VPSS_ONLINE + 卷绕

低延时

非低延时

VPSS

Group

仅支持Group0

[0, OT_VPSS_VGS_GRP_NO

[0, OT_VPSS_VGS_GRP_NO

[0, OT_VPSS_VGS_GRP_NO]

[0, OT_VPSS_MAX_GRP_NUM]

OT_VPSS_CHN0

Y

Y

Y

Y

Y

OT_VPSS_CHN1

N

N

N

Y

Y

OT_VPSS_CHN2

N

N

N

N

Y

分块输入

N

N

N

Y

Y

紧凑段压缩输出

Y

Y

Y

Y

Y

分块输入+紧凑段压缩输出

N

N

N

N

Y

Tile64x16旋转输出

N

N

N

N

Y

组上Cover

Y

Y

Y

Y

Y

通道上Cover/Corner

Y

Y

Y

Y

Y

缩放

Y

Y

Y

Y

Y

组裁剪

N

Y

Y

Y

Y

通道裁剪

Y

Y

Y

Y

Y

mirror

Y

Y

Y

Y

Y

flip

N

N

N

N

Y

输出SP422

N

N

N

Y

Y

最小输出分辨率

512x128

对接H.264/H.265/SVAC3: 114x128;对接JPEG/MJPEG: 64x128

对接H.264/H.265/SVAC3: 114x128;对接JPEG/MJPEG: 64x128

64x64

64x64

最大输出分辨率

最大输出宽度3200,最大输出高度参考“视频编码”章节中表“解决方案相关编码通道宽高”

最大输出宽高参考“视频编码”章节中表“解决方案相关编码通道宽高”

最大输出宽高参考“视频编码”章节中表“解决方案相关编码通道宽高”

4096x4096

4096x4096

通道后处理(lineEx、coverEx、CornerEx、通道亮度和、LDC、旋转、扩展通道)

N

N

N

N

Y

VENC

紧凑段压缩输入

Y

Y

Y

Y

Y

Tile64x16旋转输入

N

N

N

N

Y

重编

N

N

N

Y

Y

帧控减帧

Y

Y

Y

Y

Y

帧控增帧

N

N

N

Y

Y

TwoPass(debreath)

N

Y

Y

Y

Y

硬件裁剪

Y

Y

Y

Y

Y

过VGS处理(缩小)

N

N

N

N

Y

JPEGE DCF

N

N

N

Y

Y

软件prescale

N

N

N

N

Y

彩转灰

Y

Y

Y

Y

Y

QPmap/Mosaic

N

N

N

N

Y

SVC1.0

Y

Y

Y

Y

Y

SVC2.0

Y

Y

Y

Y

Y

JPEGE YUV422

N

N

N

Y

Y

外部码控

N

N

N

N

Y

复合编码

N

N

N

N

Y

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_buf_wrap

ss_mpi_vpss_get_chn_buf_wrap

【描述】

获取VPSS物理通道低延时卷绕属性。

【语法】

td_s32 ss_mpi_vpss_get_chn_buf_wrap(ot_vpss_grp grp, ot_vpss_chn chn, ot_vpss_chn_buf_wrap_attr *wrap_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

wrap_attr

VPSS物理通道卷绕属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 仅物理通道0支持此接口。
  • 仅Hi3516CV610支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_buf_wrap

ss_mpi_vpss_set_chn_ldc

【描述】

设置VPSS物理通道镜头畸变矫正(LDC)属性。

【语法】

td_s32 ss_mpi_vpss_set_chn_ldc(ot_vpss_grp grp, ot_vpss_chn chn, const ot_ldc_attr *ldc_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

ldc_attr

VPSS物理通道LDC属性结构体指针。具体描述请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 该接口必须在设置通道属性后调用。
  • Hi3516CV610开启LDC时,物理通道属性的压缩模式必须配置为非压缩。
  • Hi3516CV610通道LDC仅支持LDC V3。
  • Hi3519DV500/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_ldc

ss_mpi_vpss_get_chn_ldc

【描述】

获取VPSS物理通道镜头畸变矫正(LDC)属性。

【语法】

td_s32 ss_mpi_vpss_get_chn_ldc(ot_vpss_grp grp, ot_vpss_chn chn, ot_ldc_attr *ldc_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

ldc_attr

VPSS物理通道LDC属性。具体描述请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3519DV500/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_ldc

ss_mpi_vpss_set_ext_chn_attr

【描述】

设置VPSS扩展通道属性。

【语法】

td_s32 ss_mpi_vpss_set_ext_chn_attr(ot_vpss_grp grp, ot_vpss_chn chn, const ot_vpss_ext_chn_attr *ext_chn_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[OT_VPSS_MAX_PHYS_CHN_NUM, OT_VPSS_MAX_CHN_NUM)

输入

ext_chn_attr

VPSS通道属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 具体成员取值及功能限制参考ot_vpss_ext_chn_attr结构体说明。
  • 扩展通道的图像来源属性设置为OT_EXT_CHN_SRC_TYPE_HEAD时,被绑定的物理通道不支持做CoverEx/MosaicEx/LineEx/OverlayEx/Corner_rectEx处理,即使设置CoverEx/MosaicEx/LineEx/OverlayEx/Corner_rectEx也不会生效。
  • 扩展通道不支持绑定到OT_VPSS_DIRECT_CHN。
  • 非OT_FMU_MODE_OFF模式绑定扩展通道不生效。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_ext_chn_attr

ss_mpi_vpss_get_ext_chn_attr

【描述】

获取VPSS扩展通道属性。

【语法】

td_s32 ss_mpi_vpss_get_ext_chn_attr(ot_vpss_grp grp, ot_vpss_chn chn, ot_vpss_ext_chn_attr *ext_chn_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[OT_VPSS_MAX_PHYS_CHN_NUM, OT_VPSS_MAX_CHN_NUM)

输入

ext_chn_attr

VPSS通道属性。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

Group必须已创建。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_ext_chn_attr

ss_mpi_vpss_set_grp_gdc_param

【描述】

设置VPSS Group GDC参数。

【语法】

td_s32 ss_mpi_vpss_set_grp_gdc_param(ot_vpss_grp grp, const ot_gdc_param *gdc_param);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

gdc_param

GDC参数结构体指针。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 调用其他GDC相关功能接口或输入OT_VIDEO_FORMAT_TILE_32x4数据前,必须先调用该接口配置。
  • GDC相关功能只支持离线模式。
  • Hi3519DV500 VPSS组号在[OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM - 1]范围内的组不支持GDC相关功能。
  • 开启GDC相关功能时,不支持输入SP422格式。
  • 开启GDC相关功能时,不支持输入YUV-SP420格式。
  • 开启GDC相关功能或输入OT_VIDEO_FORMAT_TILE_32x4,且3DNR与所有通道mirror/flip功能都未开启时,有如下限制:

    • 通道0不支持缩放,其他通道不支持放大。
    • 不支持紧凑段压缩输出。
    • 通路不支持SP422格式。
    • 通道0幅形比只能在不缩放的基础上增加边界。
    • 组裁剪、通道裁剪、和通道0幅形比位置可能会进行自适应调整,具体裁剪信息可查看proc信息中的实际裁剪信息和通道0幅形比信息。
  • 开启GDC相关功能或输入OT_VIDEO_FORMAT_TILE_32x4,且3DNR或有通道开启mirror/flip功能,且gdc输出宽度大于2048时,可能对性能有一定影响。

  • 开启GDC相关功能或输入OT_VIDEO_FORMAT_TILE_32x4时,如开启组裁剪,裁剪位置高度不同可能存在性能差异。
  • OT_VIDEO_FORMAT_TILE_64x16不支持开启GDC相关功能。
  • 线性压缩输入不支持开启GDC相关功能。
  • 开启防抖功能时,建议在VPSS开启3DNR,其他场景在VI开启3DNR。
  • 开启GDC相关功能时,推荐输入视频格式为OT_VIDEO_FORMAT_TILE_32x4,压缩格式为OT_COMPRESS_MODE_TILE。
  • 开启GDC相关功能同时VPSS开启3DNR时,相对不开GDC功能的占用带宽增加。
  • 输入视频格式为OT_VIDEO_FORMAT_LINEAR时,开启GDC相关功能同时VPSS开启3DNR,VPSS性能下降,一般不建议使用。
  • 本文中提到的GDC相关功能,即本小节【相关主题】中所指出的除了ss_mpi_vpss_get_grp_gdc_param之外的其他接口配置的功能。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_gdc_param

【描述】

获取VPSS Group GDC参数。

【语法】

td_s32 ss_mpi_vpss_get_grp_gdc_param(ot_vpss_grp grp, ot_gdc_param *gdc_param);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

gdc_param

GDC参数结构体指针

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 仅离线模式支持此接口。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_gdc_param

ss_mpi_vpss_set_grp_fisheye_cfg

【描述】

设置VPSS Group鱼眼镜头LMF参数。

【语法】

td_s32 ss_mpi_vpss_set_grp_fisheye_cfg(ot_vpss_grp grp, const ot_fisheye_cfg *fisheye_cfg);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

fisheye_cfg

鱼眼镜头LMF参数结构体指针。

具体描述请参考“几何畸变矫正子系统”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_fisheye_cfg

ss_mpi_vpss_get_grp_fisheye_cfg

【描述】

获取VPSS Group鱼眼镜头LMF参数。

【语法】

td_s32 ss_mpi_vpss_get_grp_fisheye_cfg(ot_vpss_grp grp, ot_fisheye_cfg *fisheye_cfg);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

fisheye_cfg

鱼眼镜头LMF参数结构体指针。

具体描述请参考“几何畸变矫正子系统”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_fisheye_cfg

ss_mpi_vpss_query_grp_fisheye_pos_dst_to_src

【描述】

根据VPSS Group鱼眼矫正输出图像坐标点查找源图像坐标点。

【语法】

td_s32 ss_mpi_vpss_query_grp_fisheye_pos_dst_to_src(ot_vpss_grp grp, td_u32 rgn_index, const ot_point *dst, ot_point *src);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

rgn_index

鱼眼矫正区域号。

取值范围:[0, OT_FISHEYE_MAX_RGN_NUM - 1]

OT_FISHEYE_MAX_RGN_NUM具体描述请参考“几何畸变矫正子系统”章节。

输入

dst

鱼眼矫正图上需要查找映射关系的坐标点。

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

输入

src

鱼眼原图上查找到的坐标点。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 调用此接口前必须先开启鱼眼矫正功能。
  • 启动鱼眼矫正后,如果需要变动参数,要遵循参数变动、获取校正图像和启动坐标点查询的先后原则。如果在鱼眼参数变动之前就获取了矫正图像,可能导致查找到错误的坐标点。
  • 多区域时,每个区域的坐标点按照每个区域单独计算,区域左上角为起始点,范围为区域范围,不能按照拼接之后的图像来计算。
  • 鱼眼查找时,若查找点不在鱼眼输出内容内,会导致查找到点超出原图范围报错。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_fisheye

ss_mpi_vpss_query_grp_ldc_pos_dst_to_src

【描述】

根据VPSS GRP镜头畸变校正(LDC)的输出图像坐标点查找输入图像的坐标点。

【语法】

td_s32 ss_mpi_vpss_query_grp_ldc_pos_dst_to_src(ot_vpss_grp grp, const ot_point *dst, ot_point *src);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

dst

镜头畸变校正输出图像上需要查找映射关系的坐标点。

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

输入

src

镜头畸变校正输入图像上查找到的坐标点。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

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

【注意】

  • Group必须已创建。
  • 该接口仅支持OT_LDC_V1版本的LDC矫正。
  • 必须LDC使能之后再调用,否则会返回失败。
  • 使能LDC后,如果需要变动参数,要遵循参数变动、获取校正图像和启动坐标点查询的先后原则。如果在LDC参数变动之前就获取了矫正图像,可能导致查找到错误的坐标点。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_ldc

ss_mpi_vpss_query_grp_ldc_pos_src_to_dst

【描述】

根据VPSS Group镜头畸变校正(LDC)的输入图像坐标点查找输出图像的坐标点。

【语法】

td_s32 ss_mpi_vpss_query_grp_ldc_pos_src_to_dst(ot_vpss_grp grp, const ot_point *src, ot_point *dst);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

src

镜头畸变校正输入图像上需要查找映射关系的坐标点。

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

输入

dst

镜头畸变校正输出图像上查找到的坐标点。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

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

【注意】

  • Group必须已创建。
  • 该接口仅支持OT_LDC_V1版本的LDC矫正。
  • 必须LDC使能之后再调用,否则会返回失败。
  • 使能LDC后,如果需要变动参数,要遵循参数变动、获取校正图像和启动坐标点查询的先后原则。如果在LDC参数变动之前就获取了矫正图像,可能导致查找到错误的坐标点。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_ldc

ss_mpi_vpss_query_grp_gdc_pos_dst_to_src

【描述】

根据VPSS GRP任意GDC功能的输出图像坐标点查找输入图像的坐标点。

【语法】

td_s32 ss_mpi_vpss_query_grp_gdc_pos_dst_to_src(ot_vpss_grp grp, td_u32 index, const ot_point *dst_point, ot_point *src_point);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

index

矫正区域号。gdc功能中的鱼眼、拼接有矫正多区域(pipe)输出,需要按区域反向查询,且区域范围需要在鱼眼区域数或拼接pipe数范围内。没有多区域输出的gdc功能index配置0,查询拼接的请查看注意事项。

输入

dst_point

镜头畸变校正输出图像上需要查找映射关系的坐标点。

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

输入

src_point

镜头畸变校正输入图像上查找到的坐标点。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

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

【注意】

  • Group必须已创建,组上必须开启gdc功能。
  • 调用此接口前,需调用ss_mpi_vpss_set_grp_cfg接口打开lut写出配置。
  • 查询拼接时直接按照输出原图的坐标去设置dst_point,index设置默认值即可。
  • 查找的点需要在输出图像的内容范围内,查找到的点误差在±2像素。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_ldc

【描述】

设置VPSS Group镜头畸变矫正(LDC)属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_ldc(ot_vpss_grp grp, const ot_ldc_attr *ldc_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

ldc_attr

LDC属性结构体指针。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 当开启spread时,OT_LDC_V1的distortion_ratio取值范围只能为 [0, 500],即只支持LDC的桶形模式。
  • OT_LDC_V2的参数需使用标定工具的参数,不能用随意配置的参数。
  • 调用该接口前必须先调用ss_mpi_vpss_set_grp_gdc_param接口。
  • LDC与PMF、fov、fisheye、stitch功能互斥。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_ldc

【描述】

获取VPSS镜头畸变矫正(LDC)属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_ldc(ot_vpss_grp grp,ot_ldc_attr *ldc_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

ldc_attr

LDC属性结构体指针。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_ldc

ss_mpi_vpss_set_grp_spread

【描述】

设置VPSS Group展宽属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_spread(ot_vpss_grp grp, const ot_spread_attr *spread_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

spread_attr

展宽属性结构体指针。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 当开启spread时,OT_LDC_V1的distortion_ratio取值范围只能为 [0, 500],即只支持LDC的桶形模式。
  • 调用该接口前必须先调用ss_mpi_vpss_set_grp_gdc_param接口。
  • spread与PMF、fov、fisheye、stitch功能互斥。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_spread

【描述】

获取VPSS Group展宽属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_spread(ot_vpss_grp grp, ot_spread_attr *spread_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

spread_attr

展宽属性结构体指针。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_spread

ss_mpi_vpss_set_grp_fisheye

【描述】

设置VPSS Group鱼眼属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_fisheye(ot_vpss_grp grp, const ot_fisheye_correction_attr *fisheye_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

fisheye_attr

鱼眼属性结构体指针。

具体描述请参考“几何畸变矫正子系统”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 鱼眼多区域(区域数大于1)不支持开启3DNR,此时可在VI做降噪处理。
  • 鱼眼多区域不支持grp_crop与chn_crop。
  • 鱼眼多区域不支持幅形比。
  • 鱼眼不支持开启OT_FMU_MODE_WRAP或OT_FMU_MODE_DIRECT模式。
  • 鱼眼多区域不支持低延时写出。
  • 鱼眼多区域Cover/Mosaic/Corner_rect功能无效。
  • 鱼眼单/多区域必须覆盖整个GDC输出范围。
  • 鱼眼多区域时,需要先调用ss_mpi_vpss_set_grp_cfg接口,将max_out_rgn_num设置为不低于鱼眼区域数。
  • 调用该接口前必须先调用ss_mpi_vpss_set_grp_gdc_param接口。
  • 鱼眼多区域+多通道缩放输出时,可能由于对齐导致各区域比例不是严格一致,特别的,在非紧凑压缩输出时,差异可能较大,如果有需求需要控制好缩放关系。
  • 鱼眼多区域时只有一个区域支持分块。当rgn num为1时,不能配置skip模式。
  • 鱼眼与PMF、fov、spread、dis、ldc、stitch、zme、zoom功能互斥。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_fisheye

【描述】

获取VPSS Group鱼眼属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_fisheye(ot_vpss_grp grp, ot_fisheye_correction_attr *fisheye_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

fisheye_attr

鱼眼属性结构体指针。

ot_fisheye_correction_attr具体描述请参考“几何畸变矫正子系统”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_fisheye

ss_mpi_vpss_set_grp_rotation

【描述】

设置VPSS Group旋转属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_rotation(ot_vpss_grp grp, const ot_rotation_attr *rotation_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

rotation_attr

旋转属性结构体指针。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 调用该接口前必须先调用ss_mpi_vpss_set_grp_gdc_param接口。
  • 只支持任意角度旋转和高精度任意角度旋转。
  • 此接口与PMF、fov、fisheye、stitch功能互斥。
  • 若同时开启spread,会将旋转效果叠加在展宽中。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_rotation

【描述】

获取VPSS Group旋转属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_rotation(ot_vpss_grp grp, ot_rotation_attr *rotation_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

rotation_attr

旋转属性结构体指针。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_rotation

ss_mpi_vpss_set_grp_pmf

【描述】

设置VPSS Group PMF属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_pmf(ot_vpss_grp grp, const ot_pmf_attr *pmf_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

pmf_attr

PMF属性结构体指针。

具体描述请参考“系统控制”章节。组上pmf参数没有限制。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 调用该接口前必须先调用ss_mpi_vpss_set_grp_gdc_param接口。
  • 此接口与ldc、rotation、dis、spread、fov、fisheye、stitch、zoom功能互斥。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_pmf

【描述】

获取VPSS Group PMF属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_pmf(ot_vpss_grp grp, ot_pmf_attr *pmf_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

pmf_attr

PMF属性结构体指针。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_pmf

ss_mpi_vpss_set_grp_fov

【描述】

设置VPSS Group视场角矫正(FOV)属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_fov(ot_vpss_grp grp, const ot_fov_attr *fov_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

fov_attr

视场角矫正属性结构体指针。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 调用该接口前必须先调用ss_mpi_vpss_set_grp_gdc_param接口。
  • 此接口与ldc、rotation、dis、spread、pmf、fisheye、stitch、zoom功能互斥。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_fov

【描述】

获取VPSS Group视场角矫正(FOV)属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_fov(ot_vpss_grp grp, ot_fov_attr *fov_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

fov_attr

视场角矫正属性结构体指针。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_fov

ss_mpi_vpss_set_grp_lut

【描述】

设置VPSS Group查找表(LUT)属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_lut(ot_vpss_grp grp, const ot_lut_attr *lut_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

lut_attr

查找表属性结构体指针。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 调用该接口前必须先调用ss_mpi_vpss_set_grp_gdc_param接口。
  • 此接口与fisheye、stitch功能互斥。
  • lut表格内容填写具体请参考《GDC 调试指南》。
  • lut_mode为OT_LUT_FUSION_MODE时,prelut与postlut两张表格的输入宽高、输出宽高、单元格大小需保持一致,lut表效果融合并联。
  • lut_mode为OT_LUT_CONNECT_MODE时,prelut的输出宽高需与postlut的输入宽高保持一致,lut表效果串联。
  • 两张表都开启时不支持其他GDC功能。
  • 融合模式下,若两张表效果一致,只体现一张表效果,串联模式下,若两张表效果一致,体现为直接叠加效果。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_lut

【描述】

获取VPSS Group查找表(LUT)属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_lut(ot_vpss_grp grp, ot_lut_attr *lut_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

lut_attr

查找表属性结构体指针。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_lut

ss_mpi_vpss_set_grp_zme

【描述】

设置VPSS Group缩放属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_zme(ot_vpss_grp grp, const ot_size *out_size);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

out_size

GDC输出分辨率结构体指针。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 调用该接口前必须先调用ss_mpi_vpss_set_grp_gdc_param接口。
  • 此接口与fisheye、stitch功能互斥。
  • gdc bypass处理(tile32x4输入)时,不支持zme缩放。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_zme

【描述】

获取VPSS Group缩放属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_zme(ot_vpss_grp grp, ot_size *out_size);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

out_size

GDC输出分辨率结构体指针。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_zme

ss_mpi_vpss_set_grp_stitch

【描述】

设置VPSS Group拼接属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_stitch(ot_vpss_grp grp, const ot_stitch_attr *stitch_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

stitch_attr

拼接属性结构体指针。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 不支持开启3DNR,此时可在VI做降噪处理。
  • 不支持grp_crop与chn_crop。
  • 不支持幅形比。
  • 不支持开启OT_FMU_MODE_WRAP或OT_FMU_MODE_DIRECT模式。
  • 不支持低延时写出。
  • 不支持分块。
  • Cover/Mosaic/Corner_rect功能无效。
  • 只支持开启通道0 USER模式,且不支持缩放。
  • blend拼接不支持压缩输出。
  • 拼接的多个pipe分辨率、像素格式,压缩格式、存储格式、动态范围必须相同。
  • 调用此接口前,需要先调用ss_mpi_vpss_set_grp_cfg接口,将max_out_rgn_num设置为不低于拼接pipe数。
  • 调用该接口前必须先调用ss_mpi_vpss_set_grp_gdc_param接口。
  • 当拼接模式为融合拼接时,需要先调用ss_mpi_vpss_set_grp_stitch_blend_param接口。
  • 此接口与ldc、rotation、dis、spread、zme、pmf、fisheye、fov功能互斥。
  • noblend拼接时,矫正参数无效。
  • noblend拼接不支持紧凑段压缩输出。
  • 水平硬拼或田字形硬拼且非紧凑压缩输出时,输入不能为tile32x4格式。
  • 田字形硬拼时,pipe_num必须为4。
  • 不支持动态修改拼接模式,必须先销毁重建grp后重新配置。
  • 不支持动态修改拼接路数,必须先销毁重建grp后重新配置。
  • 水平硬拼或田字形硬拼压缩输出时,不支持输入低延时。
  • 不支持mirror/flip。
  • 16DV500融合拼接时只支持两路输入,每一路输入面积最大1920*1080‬像素。
  • 后处理做相对坐标coverEx时,以拼接后的图像为基准,而不是以单个pipe图像为基准。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_stitch

【描述】

获取VPSS Group拼接属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_stitch(ot_vpss_grp grp, ot_stitch_attr *stitch_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

stitch_attr

拼接属性结构体指针。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_stitch

ss_mpi_vpss_set_grp_stitch_blend_param

【描述】

设置VPSS Group融合拼接融合属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_stitch_blend_param(ot_vpss_grp grp, const ot_stitch_blend_param *blend_param);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

blend_param

融合属性结构体指针。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • ss_mpi_vpss_set_grp_stitch接口设置为融合拼接时使用,设置为硬拼时无效。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_stitch_blend_param

【描述】

获取VPSS Group融合拼接融合属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_stitch_blend_param(ot_vpss_grp grp, ot_stitch_blend_param *blend_param);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

blend_param

融合属性结构体指针。

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_stitch_blend_param

ss_mpi_vpss_get_chn_fd

【描述】

获取VPSS通道对应的设备文件句柄。

【语法】

td_s32 ss_mpi_vpss_get_chn_fd(ot_vpss_grp grp, ot_vpss_chn chn)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS通道号

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

【返回值】

返回值

描述

正数值

有效返回值。

非正数值

无效返回值。

【错误码】

无。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

无。

【举例】

用户可以获取文件句柄实现多通道select获取视频帧数据。

ot_vpss_grp grp = 0;
ot_vpss_chn chn = 0;
td_s32 chn_fd = 0;
/* enable vpss grp and vpss chn */
/* get chn fd before get video frame from vpss chn */
chn_fd = ss_mpi_vpss_get_chn_fd(grp,chn);
if(chn_fd <= 0) {
    return TD_FAILURE;
}

【相关主题】

无。

ss_mpi_vpss_set_chn_scale_coef_type

【描述】

设置VPSS通道上的缩放系数类型。

【语法】

td_s32 ss_mpi_vpss_set_chn_scale_coef_type(ot_vpss_grp grp, ot_vpss_chn chn, ot_scale_coef_type type);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_CHN_NUM)

输入

type

缩放系数类型枚举。ot_scale_coef_type具体描述请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

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

【注意】

  • Group必须已创建。
  • 该接口适用于VPSS所有通道,包括物理通道与扩展通道。
  • 支持动态设置。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_scale_coef_type

ss_mpi_vpss_get_chn_scale_coef_type

【描述】

获取VPSS通道上的缩放系数类型。

【语法】

td_s32 ss_mpi_vpss_get_chn_scale_coef_type(ot_vpss_grp grp, ot_vpss_chn chn, ot_scale_coef_type *type);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

type

缩放系数类型枚举指针。ot_scale_coef_type具体描述请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

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

【注意】

  • Group必须已创建。
  • 该接口适用于VPSS所有通道,包括物理通道与扩展通道。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_scale_coef_type

ss_mpi_vpss_start_grp_stitch_luma_sync

【描述】

启动VPSS GRP拼接亮度同步。

【语法】

td_s32 ss_mpi_vpss_start_grp_stitch_luma_sync(ot_vpss_grp grp, const ot_stitch_luma_sync_param *param);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

param

拼接亮度同步参数结构体指针。

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_stitch_sync.h、ot_common_video.h
  • 库文件:libss_mpi.a, libot_mpi_isp.a, libss_mpi_stitch_sync.a

【注意】

  • Group必须已创建。
  • 需要与创建Group进程为同一进程。
  • 不支持重复启动。
  • 仅lut融合拼接模式支持亮度同步。
  • 亮度同步通过调节拼接右块的isp mesh_shading相关参数实现,因此当开启亮度同步功能时,Mesh_shading相关参数会内部配置,不支持手动修改。
  • 通过sys绑定时,不要开启同步后调整绑定关系。
  • 销毁Group前请先停止拼接亮度同步,否则可能出现异常。
  • 开启亮度同步时,ss_mpi_vpss_set_grp_stitch_blend_param接口参数中的buf_num至少配置为3,否则可能报融合vb不足错误。
  • 亮度同步功能依赖isp相关库文件实现,编译视频处理子系统接口时需添加isp相关库,否则会编译失败。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_stop_grp_stitch_luma_sync

【描述】

停止VPSS GRP拼接亮度同步。

【语法】

td_s32 ss_mpi_vpss_stop_grp_stitch_luma_sync(ot_vpss_grp grp);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_stitch_sync.h、ot_common_video.h
  • 库文件:libss_mpi.a, libot_mpi_isp.a, libss_mpi_stitch_sync.a

【注意】

  • Group必须已创建。
  • 需要与创建Group进程为同一进程。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_start_grp_stitch_luma_sync

ss_mpi_vpss_set_grp_zoom_in_window

【描述】

设置VPSS GRP 裁剪放大属性。

【语法】

td_s32 ss_mpi_vpss_set_grp_zoom_in_window(ot_vpss_grp grp, const ot_zoom_attr *zoom_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

zoom_attr

VPSS Group 裁剪放大属性

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 若crop_mode为OT_COORD_RATIO(相对坐标模式):

    使用crop_rect的成员时应做转换,计算公式为:

    x = 起始点坐标*原始图像宽度/1000,合法取值范围:[0, 999],计算完成后会进行取整操作和对齐操作。公式同样适用于纵坐标计算,x为转换后的坐标。

    width=区域宽度*实际图像宽度/1000,区域宽度取值范围:[1, 1000]。计算完成后会进行取整操作和对齐操作。公式同样适用于区域高度计算,width为转换后的宽。

  • 相对模式裁剪时,裁剪区域坐标取值范围为[0, 999],裁剪区域宽高取值范围为[1, 1000]。

  • 如果裁剪放大区域超出图像范围,则自动裁剪到图像有效范围。
  • 裁剪区域起始点坐标和宽高要求2像素对齐。

  • 无论是相对还是绝对裁剪放大,实际裁剪放大区域的宽高不能小于输入图像宽高的1/8,起始点也必须在图像范围内,不支负坐标。

  • zoom_in_window不支持与gyro组合。
  • 通道宽高改变时需要去重设zoom属性否则可能会出现效果异常。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_zoom_in_window

ss_mpi_vpss_get_grp_zoom_in_window

【描述】

获取VPSS GRP 裁剪放大属性。

【语法】

td_s32 ss_mpi_vpss_get_grp_zoom_in_window(ot_vpss_grp grp, ot_zoom_attr *zoom_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_VGS_GRP_NO)

输入

zoom_attr

VPSS Group 裁剪放大属性

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3516CV610/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_zoom_in_window

ss_mpi_vpss_set_grp_svc_param

【描述】

设置VPSS Group的SVC参数。

【语法】

td_s32 ss_mpi_vpss_set_grp_svc_param(ot_vpss_grp grp, const ot_vpss_svc_param *svc_param);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

svc_param

VPSS Group SVC 参数指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 具体成员取值及功能限制参考ot_vpss_svc_param结构体说明。
  • Hi3519DV500/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_svc_param

ss_mpi_vpss_get_grp_svc_param

【描述】

获取VPSS Group的SVC参数。

【语法】

td_s32 ss_mpi_vpss_get_grp_svc_param(ot_vpss_grp grp, ot_vpss_svc_param *svc_param);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

svc_param

VPSS Group SVC 参数指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • Hi3519DV500/Hi3511CV100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_svc_param

ss_mpi_vpss_get_grp_rgn_luma

【描述】

获取指定 VPSS Group 输入图像区域的亮度总和以及获取的图像的宽高信息。该接口主要用于对输入图像中即将进行 Overlay 或 OverlayEx 叠加的区域进行亮度和统计,根据统计的亮度,对 Overlay 或 OverlayEx 进行反色处理,使叠加的 Overlay 或OverlayEx 不至于和背景混淆。

【语法】

td_s32 ss_mpi_vpss_get_grp_rgn_luma(ot_vpss_grp grp, const ot_vpss_rgn_info *luma_rgn, ot_vpss_luma_result *luma_result, td_s32 milli_sec);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

luma_rgn

统计区域的区域属性,即每个要获取luma信息的起始位置、宽、高。

输入

luma_result

接收区域亮度和统计信息以及图像宽高的内存指针,接收统计信息的内存大小应该大于或等于sizeof(td_u64)×num。

输出

milli_sec

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 此接口针对的是VPSS Group的输入图像。获取亮度统计信息的时机是这些图像被 VPSS 硬件处理之前。
  • 统计区域的数量范围为[1, 64]。
  • 统计区域坐标和宽高要求2像素对齐。
  • 统计区域宽高最小为2x2,最大为16384x8192。
  • 统计区域的起始坐标的确定分两种情况:

    • 如果不使能CROP,则起始坐标相对于原始图像的左上角坐标;
    • 如果使能CROP,则起始坐标相对于CROP以后的图像的左上角坐标。统计区域不得超出原始图像或CROP之后的图像区域。
  • 输入OT_VIDEO_FORMAT_TILE_64x16格式时不支持获取组亮度和。

  • 仅Hi3511CV100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_delay

【描述】

设置延迟启动VPSS处理的延时队列长度。

延时处理主要由于前端进来的图像通过PCI传到从片可能会有延迟,为了保持同步,VPSS通过delay队列让从片的图像也延迟一段时间;另一应用场景是用户从VI获取图像,再通过TDE模块画框,该帧同时又送给VPSS进行处理,由于VPSS处理速度比TDE快,因此需要VPSS进行延迟处理。

【语法】

td_s32 ss_mpi_vpss_set_grp_delay(ot_vpss_grp grp, td_u32 delay);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

delay

延时队列长度。

取值范围:[0, 5]

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 只有离线模式支持此接口。
  • 延时队列控制只有通过系统绑定送图像到VPSS时才会生效,通过ss_mpi_vpss_send_frame、ss_mpi_vpss_send_frame_ex接口送图像到VPSS组时不生效。
  • 仅Hi3511CV100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_delay

ss_mpi_vpss_get_grp_delay

【描述】

获取延迟启动VPSS处理的延时队列长度。

【语法】

td_s32 ss_mpi_vpss_get_grp_delay(ot_vpss_grp grp, td_u32 *delay);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

delay

获取延时队列长度指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 只有离线模式支持此接口。
  • 仅Hi3511CV100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_delay

ss_mpi_vpss_set_chn_sharpen

【描述】

设置通道Sharpen参数。通过LTI/CTI方式处理。

【语法】

td_s32 ss_mpi_vpss_set_chn_sharpen(ot_vpss_grp grp, ot_vpss_chn chn, const ot_vpss_chn_sharpen_param *sharpen_param);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

sharpen_param

通道Sharpen参数。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 仅Hi3511CV100支持此接口。
  • Hi3511CV100通道2和通道3不支持设置Sharpen处理。

【举例】

无。

【相关主题】

ot_vpss_chn_sharpen_param

ss_mpi_vpss_get_chn_sharpen

【描述】

获取通道Sharpen参数。

【语法】

td_s32 ss_mpi_vpss_get_chn_sharpen(ot_vpss_grp grp, ot_vpss_chn chn, ot_vpss_chn_sharpen_param *sharpen_param);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

sharpen_param

通道Sharpen参数。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 仅Hi3511CV100支持此接口。

【举例】

无。

【相关主题】

ot_vpss_chn_sharpen_param

ss_mpi_vpss_set_chn_cfg

【描述】

设置VPSS通道上的静态配置。

【语法】

td_s32 ss_mpi_vpss_set_chn_cfg(ot_vpss_grp grp, ot_vpss_chn chn, const ot_vpss_chn_cfg *chn_cfg);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

chn_cfg

VPSS通道配置。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_cfg

ss_mpi_vpss_get_chn_cfg

【描述】

获取VPSS通道上的静态配置。

【语法】

td_s32 ss_mpi_vpss_get_chn_cfg(ot_vpss_grp grp, ot_vpss_chn chn, ot_vpss_chn_cfg *chn_cfg);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

chn_cfg

VPSS通道配置。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码。

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h
  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。
  • 仅Hi3511CV100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_cfg

数据类型

VPSS模块相关数据类型定义如下:

OT_VPSS_MAX_GRP_NUM

【说明】

定义VPSS Group的最大个数。

【定义】

Hi3519DV500:

#define OT_VPSS_MAX_GRP_NUM     16

Hi3516CV610:

#define OT_VPSS_MAX_GRP_NUM     6

Hi3511CV100:

#define OT_VPSS_MAX_GRP_NUM     128

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_GRP_PIPE_NUM

【说明】

定义VPSS Group的最大PIPE个数。

【定义】

Hi3519DV500:

#define OT_VPSS_MAX_GRP_PIPE_NUM     4

Hi3516CV610/Hi3511CV100:

#define OT_VPSS_MAX_GRP_PIPE_NUM     1

【注意事项】

即拼接模式支持的最大输入路数。

【相关数据类型及接口】

无。

OT_VPSS_VGS_GRP_NO

【说明】

定义VPSS中VGS Group的起始组号。

【定义】

Hi3519DV500:

#define OT_VPSS_VGS_GRP_NO     10

Hi3516CV610:

#define OT_VPSS_VGS_GRP_NO     6

Hi3511CV100:

#define OT_VPSS_VGS_GRP_NO     128

【注意事项】

当OT_VPSS_VGS_GRP_NO与OT_VPSS_MAX_GRP_NUM相等时,表示不支持VGS Group功能。

【相关数据类型及接口】

无。

OT_VPSS_IP_NUM

【说明】

定义VPSS IP个数。

【定义】

#define OT_VPSS_IP_NUM                     1

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS0

【说明】

定义VPSS IP0。

【定义】

#define OT_VPSS0                           0

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_CHN_NUM

【说明】

定义VPSS通道的最大个数。

【定义】

Hi3519DV500/Hi3511CV100:

#define OT_VPSS_MAX_CHN_NUM     8

Hi3516CV610:

#define OT_VPSS_MAX_CHN_NUM     5

【注意事项】

  • 对于不支持扩展通道的解决方案,VPSS最大通道数为物理通道数;
  • 对于支持扩展通道的解决方案,最大通道数为物理通道数加扩展通道数;
  • 直通通道为特殊独立通道,不计算在最大通道数以内。

【相关数据类型及接口】

无。

OT_VPSS_MAX_PHYS_CHN_NUM

【说明】

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

【定义】

Hi3519DV500/Hi3511CV100:

#define OT_VPSS_MAX_PHYS_CHN_NUM     4

Hi3516CV610:

#define OT_VPSS_MAX_PHYS_CHN_NUM     3

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_EXT_CHN_NUM

【说明】

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

【定义】

Hi3519DV500/Hi3511CV100:

#define OT_VPSS_MAX_EXT_CHN_NUM     4

Hi3516CV610:

#define OT_VPSS_MAX_EXT_CHN_NUM     2

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_SPLIT_NODE_NUM

【说明】

定义VPSS支持的最大分块节点数。

【定义】

Hi3519DV500:

#define OT_VPSS_MAX_SPLIT_NODE_NUM     4

Hi3516CV610:

#define OT_VPSS_MAX_SPLIT_NODE_NUM     2

Hi3511CV100:

#define OT_VPSS_MAX_SPLIT_NODE_NUM     8

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_FPS

【说明】

定义VPSS支持的最大帧率控制参数。

【定义】

#define OT_VPSS_MAX_FPS     240

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_USER_LIST_MAX_DEPTH

【说明】

定义VPSS支持的最大用户队列深度。

【定义】

#define OT_VPSS_USER_LIST_MAX_DEPTH     8

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_OUT_RGN_NUM

【说明】

定义VPSS支持的最大输出区域数。

【定义】

Hi3519DV500:

#define OT_VPSS_MAX_OUT_RGN_NUM     9

Hi3516CV610/Hi3511CV100:

#define OT_VPSS_MAX_OUT_RGN_NUM     1

【注意事项】

即鱼眼多宫格最大宫格数。

【相关数据类型及接口】

无。

OT_VPSS_LOW_DELAY_MIN_LINE

【说明】

定义VPSS支持的最小低延时行数。

【定义】

#define OT_VPSS_LOW_DELAY_MIN_LINE     16

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MIN_IMG_WIDTH

【说明】

定义VPSS图像的最小输入输出宽度。

【定义】

#define OT_VPSS_MIN_IMG_WIDTH    64

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MIN_IMG_HEIGHT

【说明】

定义VPSS图像的最小输入输出高度。

【定义】

#define OT_VPSS_MIN_IMG_HEIGHT    64

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_IN_IMG_WIDTH

【说明】

定义VPSS图像的最大输入宽度。

【定义】

Hi3519DV500:

#define OT_VPSS_MAX_IN_IMG_WIDTH    8192

Hi3516CV610:

#define OT_VPSS_MAX_IN_IMG_WIDTH    4096

Hi3511CV100:

#define OT_VPSS_MAX_IN_IMG_WIDTH    16384

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_IN_IMG_HEIGHT

【说明】

定义VPSS图像的最大输入高度。

【定义】

Hi3519DV500/Hi3511CV100:

#define OT_VPSS_MAX_IN_IMG_HEIGHT    8192

Hi3516CV610:

#define OT_VPSS_MAX_IN_IMG_HEIGHT    4096

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_OUT_IMG_WIDTH

【说明】

定义VPSS图像的最大输出宽度。

【定义】

Hi3519DV500:

#define OT_VPSS_MAX_OUT_IMG_WIDTH    8192

Hi3516CV610:

#define OT_VPSS_MAX_OUT_IMG_WIDTH    4096

Hi3511CV100:

#define OT_VPSS_MAX_OUT_IMG_WIDTH    16384

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_OUT_IMG_HEIGHT

【说明】

定义VPSS图像的最大输出高度。

【定义】

Hi3519DV500/Hi3511CV100:

#define OT_VPSS_MAX_OUT_IMG_HEIGHT    8192

Hi3516CV610:

#define OT_VPSS_MAX_OUT_IMG_HEIGHT    4096

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_SEG_COMPACT_WIDTH

【说明】

定义VPSS紧凑段压缩时,支持的最大图像宽度。

【定义】

#define OT_VPSS_MAX_SEG_COMPACT_WIDTH    4096

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_ZOOMIN

【说明】

定义VPSS物理通道的最大放大倍数。

【定义】

#define OT_VPSS_MAX_ZOOMIN     16

【注意事项】

支持组上GDC时且开启GDC相关改变图像大小的功能时,缩放输入从GDC输出开始计算,若开启组上的crop,则从crop输出开始计算。

【相关数据类型及接口】

无。

OT_VPSS_MAX_ZOOMOUT

【说明】

定义VPSS物理通道的最大缩小倍数。

【定义】

#define OT_VPSS_MAX_ZOOMOUT     15

【注意事项】

  • 支持组上GDC时且开启GDC相关改变图像大小的功能时,缩放输入从GDC输出开始计算,若开启组上的crop,则从crop输出开始计算。
  • Hi3519DV500/Hi3511CV100缩小倍数超过OT_VPSS_MAX_ZOOMOUT且VI-VPSS处于非OT_VI_ONLINE_VPSS_ONLINE模式时,则会调用VGS进行再缩小,VGS最大再缩小2倍,即最大缩小倍数为OT_VPSS_MAX_ZOOMOUT*2。
  • Hi3519DV500/Hi3511CV100调用VGS进行再缩小时,不支持幅形比。
  • Hi3519DV500通过FMU对接后级模块的场景,不支持调用VGS进行再缩小。
  • Hi3519DV500开启直通通道时,直通通道与通道0不支持缩放,其他物理通道不支持放大。
  • Hi3519DV500开启GDC功能或输入OT_VIDEO_FORMAT_TILE_32x4格式,且3DNR功能关闭,所有通道都未打开mirror/flip时,通道0不支持缩放,其他物理通道不支持放大。
  • 拼接模式不支持缩放。
  • Hi3516CV610物理通道0输出OT_VIDEO_FORMAT_TILE_64x16格式时,不支持缩放。

【相关数据类型及接口】

无。

OT_VPSS_EXT_CHN_MAX_ZOOMIN

【说明】

定义VPSS扩展通道的最大放大倍数。

【定义】

#define OT_VPSS_EXT_CHN_MAX_ZOOMIN    16

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_EXT_CHN_MAX_ZOOMOUT

【说明】

定义VPSS扩展通道的最大缩小倍数。

【定义】

Hi3519DV500/Hi3516CV610:

#define OT_VPSS_EXT_CHN_MAX_ZOOMOUT    30

Hi3511CV100:

#define OT_VPSS_EXT_CHN_MAX_ZOOMOUT    15

【注意事项】

在Hi3516CV610中,扩展通道的输入宽度小于等于2048时,宽度的最大缩小倍数为30;输入宽度大于2048时,宽度的最大缩小倍数为15。

【相关数据类型及接口】

无。

OT_VPSS_EXT_CHN_MAX_IMG_WIDTH

【说明】

定义VPSS扩展通道的最大图像宽度。

【定义】

Hi3519DV500/Hi3511CV100:

#define OT_VPSS_EXT_CHN_MAX_IMG_WIDTH    16384

Hi3516CV610:

#define OT_VPSS_EXT_CHN_MAX_IMG_WIDTH    4096

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_EXT_CHN_MAX_IMG_HEIGHT

【说明】

定义VPSS扩展通道的最大图像高度。

【定义】

Hi3519DV500/Hi3511CV100:

#define OT_VPSS_EXT_CHN_MAX_IMG_HEIGHT    8192

Hi3516CV610:

#define OT_VPSS_EXT_CHN_MAX_IMG_HEIGHT    4096

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_CHN0

【说明】

定义VPSS物理通道0的通道号。

【定义】

#define OT_VPSS_CHN0    0

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_CHN1

【说明】

定义VPSS物理通道1的通道号。

【定义】

#define OT_VPSS_CHN1    1

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_CHN2

【说明】

定义VPSS物理通道2的通道号。

【定义】

#define OT_VPSS_CHN2    2

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_CHN3

【说明】

定义VPSS物理通道3的通道号。

【定义】

#define OT_VPSS_CHN3    3

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_DIRECT_CHN

【说明】

定义VPSS直通通道的通道号。

【定义】

#define OT_VPSS_DIRECT_CHN    31

【注意事项】

  • 独立通道号,仅支持绑定到VENC做H.264或H.265编码。
  • Hi3516CV610/Hi3511CV100不支持直通通道。

【相关数据类型及接口】

无。

OT_VPSS_INVALID_CHN

【说明】

定义VPSS非法通道号。

【定义】

#define OT_VPSS_INVALID_CHN    (-1)

【注意事项】

无。

【相关数据类型及接口】

无。

ot_vpss_grp

【说明】

定义VPSS组号。

【定义】

typedef   td_s32  ot_vpss_grp;

【注意事项】

Hi3519DV500最后6组提交给VGS硬件处理。

【相关数据类型及接口】

无。

ot_vpss_grp_pipe

【说明】

定义VPSS组pipe号。

【定义】

typedef   td_s32  ot_vpss_grp_pipe;

【注意事项】

仅拼接功能开启时支持多pipe输入。

【相关数据类型及接口】

无。

ot_vpss_chn

【说明】

定义VPSS通道号。

【定义】

typedef   td_s32  ot_vpss_chn;

【注意事项】

无。

【相关数据类型及接口】

无。

ot_vpss_dei_mode

【说明】

定义DEI模式。

【定义】

typedef enum {
    OT_VPSS_DEI_MODE_OFF = 0,
    OT_VPSS_DEI_MODE_ON,
    OT_VPSS_DEI_MODE_AUTO,
    OT_VPSS_DEI_MODE_BUTT
} ot_vpss_dei_mode;

【成员】

成员名称

描述

OT_VPSS_DEI_MODE_AUTO

根据当前图像格式,自适应是否做De-interlace。

OT_VPSS_DEI_MODE_OFF

强制不做De-interlace。

OT_VPSS_DEI_MODE_ON

强制做De-interlace。

【注意事项】

建议首选自适应模式OT_VPSS_DEI_MODE_AUTO。

【相关数据类及接口】

ot_vpss_grp_attr

ot_vpss_grp_attr

【说明】

定义VPSS Group属性。

【定义】

typedef struct {
    td_bool             ie_en;
    td_bool             dci_en;
    td_bool             buf_share_en;
    td_bool             mcf_en;
    td_u32              max_width;
    td_u32              max_height;
    td_u32              max_dei_width;
    td_u32              max_dei_height;
    ot_pixel_format     pixel_format;
    ot_vpss_dei_mode    dei_mode;
    ot_vpss_chn         buf_share_chn;
    ot_frame_rate_ctrl  frame_rate;
    ot_dynamic_range    dynamic_range;
} ot_vpss_grp_attr;

【成员】

成员名称

描述

ie_en

IE使能开关。

dci_en

Dci使能开关。

buf_share_en

VPSS组图像和其中一个通道输出图像共用VB功能使能开关。

mcf_en

黑白融合统计信息使能。该开关需要配合MCF组件使用,非MCF场景请勿开启mcf_en。

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

max_width

最大输入图像宽度。

取值范围请参见Tabell 3。

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

max_height

最大输入图像高度。

取值范围请参见Tabell 3。

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

max_dei_width

最大DEI图像宽度。

取值范围:[OT_VPSS_MIN_IMG_WIDTH, 4096]

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

max_dei_height

最大DEI图像高度。

取值范围:[OT_VPSS_MIN_IMG_HEIGHT, 4096]

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

pixel_format

输入图像像素格式。

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

dei_mode

DEI模式

buf_share_chn

VPSS组图像和通道输出图像共用VB功能使能时,对应的通道号。功能不使能时通道号不生效。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

frame_rate

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

dynamic_range

保留参数。

【注意事项】

【相关数据类及接口】

ot_vpss_chn_mode

【说明】

定义VPSS CHN工作模式。

【定义】

typedef enum {
    OT_VPSS_CHN_MODE_AUTO = 0,
    OT_VPSS_CHN_MODE_USER,
    OT_VPSS_CHN_MODE_BUTT
} ot_vpss_chn_mode;

【成员】

成员名称

描述

OT_VPSS_CHN_MODE_AUTO

自动模式。

OT_VPSS_CHN_MODE_USER

用户设置模式。

【注意事项】

  • 通道设置为AUTO模式时,支持与VO、VENC或PCIV模块绑定。VO设置为Single模式时,也支持,但不推荐VO为Single模式下使用AUTO模式。
  • 通道设置为AUTO模式时,只能与一个接收者绑定。
  • 只有工作在离线模式下,通道才支持AUTO模式。
  • Hi3511CV100通道设置为AUTO模式时,只支持VENC模块绑定。

【相关数据类型及接口】

无

ot_vpss_chn_attr

【说明】

定义VPSS物理通道的属性。

【定义】

typedef struct {
    td_bool             mirror_en;
    td_bool             flip_en;
    td_bool             border_en;
    td_u32              width;
    td_u32              height;
    td_u32              depth;
    ot_vpss_chn_mode    chn_mode;
    ot_pixel_format     pixel_format;
    ot_compress_mode    compress_mode;
    ot_frame_rate_ctrl  frame_rate;
    ot_border           border_attr;
    ot_aspect_ratio     aspect_ratio;
    ot_dynamic_range    dynamic_range;
    ot_video_format     video_format;
} ot_vpss_chn_attr;

【成员】

成员名称

描述

mirror_en

水平镜像使能。

flip_en

垂直翻转使能。

border_en

边框使能开关

width

目标图像宽度。要求2对齐。

取值范围请见Tabell 6。

height

目标图像高度。要求2对齐。

取值范围请见Tabell 6。

depth

用户获取通道图像的队列长度。

取值范围:[0, 8]

chn_mode

通道工作模式。

pixel_format

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

compress_mode

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

frame_rate

帧率控制信息。具体描述请参考“系统控制”章节。

border_attr

边框属性,上下左右边框宽度取值范围为[0, 14],并且只能取偶数值,边框颜色取值范围[0, 0xFFFFFF]。具体描述请参考“系统控制”章节。

aspect_ratio

幅形比参数。具体描述请参考“系统控制”章节。

dynamic_range

保留参数。

video_format

视频格式。具体描述请参考“系统控制”章节。

【注意事项】

  • 源帧率与目标帧率都为-1,则不进行帧率控制,在通道AUTO模式下通道帧率控制不生效。
  • 目标帧率不能大于源帧率。
  • 通道低延时与flip不能同时开启。
  • 幅形比处理时,先做缩放,再加黑边,缩放比例越大,处理时间越长,可能会导致帧率下降。
  • 支持通过设置通道输出像素格式实现UV反转。
  • Hi3519DV500/Hi3516CV610/Hi3511CV100通道为紧凑段压缩写出时不支持CoverEx、OverlayEx、MosaicEx、LineEx和Corner_rectEx。
  • Hi3516CV610通道模式仅支持OT_VPSS_CHN_MODE_USER模式。
  • AUTO模式如query到不支持的压缩时会强制改为非压输出。
  • chn_mode为AUTO模式时,width、height、aspect_ratio、compress_mode、pixel_format、frame_rate、video_format设置不生效,相应设置由后端模块确定,depth不生效,图像不会进入通道队列。
  • Hi3519DV500/Hi3516DV500/Hi3516CV610不支持border。
  • Hi3516CV610不支持幅形比。
  • Hi3519DV500/Hi3511CV100当前输入宽超过4096且压缩输出时,不支持mirror和幅形比同时开启。
  • Hi3516CV610仅通道0支持OT_COMPRESS_MODE_SEG_COMPACT压缩格式。当输出OT_COMPRESS_MODE_SEG_COMPACT格式且输入图像非分块的情况下,通道输出宽度最大仅支持到3840,分块时可以支持到4096。输出OT_COMPRESS_MODE_SEG_COMPACT格式与mirror/flip不能同时开启。
  • Hi3519DV500通道FMU模式设置为卷绕时,不支持输出YUV400压缩格式。
  • 幅形比参数在通道属性中设置。只有在VPSS通道设置为USER模式时才生效,AUTO模式下幅形比参数由VO设置。

    • 设定为OT_ASPECT_RATIO_MANUAL模式时,用户手动设置图像的起始坐标和宽高,VPSS会根据用户的设置来输出图像并添加黑边。图像显示的区域不允许超过输出图像的宽高。
    • 设定为OT_ASPECT_RATIO_AUTO模式时,VPSS会保持输出画面的宽高比和输入宽高比一致,自动在画面上下或者左右加上黑边。
    • 鱼眼多区域和拼接开启时,不支持开启幅形比。
    • 开启通道裁剪时,不支持开启幅形比。
    • 通道fmu模式设置为卷绕或直通时,不支持开启幅形比。
  • 保留参数无需设置,不做异常参数检查。

  • 通道压缩格式能力不匹配或不支持对应场景下进行压缩时,如果输出不是紧凑段压缩时,系统会自动校正,并且有相关的警告信息。
  • Hi3519DV500/Hi3516CV610/Hi3511CV100 VPSS工作在OT_VI_ONLINE_VPSS_ONLINE模式不支持放大。

    输出linear格式时最大支持15倍缩小。

  • VPSS在线模式除外的其他模式:

    • Hi3519DV500/Hi3511CV100:输出linear格式时最大支持30倍缩小,最大支持16倍放大,分块场景通道0开启压缩时,最大支持缩小28倍。
    • Hi3516CV610:输出时最大支持15倍缩小,最大支持16倍放大。当VPSS工作在OT_VI_OFFLINE_VPSS_ONLINE模式且输入图像分块时,通道0不支持水平缩放。
  • Hi3519DV500 VPSS工作在OT_FRAME_INTERRUPT_EARLY模式时,通道0压缩和flip不能同时开启。

  • 通道AUTO模式与通道裁剪功能互斥。
  • 与FMU相关约束参考表1。

【相关数据类型及接口】

ss_mpi_vpss_set_chn_attr

ot_vpss_ext_chn_attr

【说明】

定义VPSS扩展通道的属性。

【定义】

typedef struct {
    ot_vpss_chn            bind_chn;
    ot_ext_chn_src_type    src_type;
    td_u32                 width;
    td_u32                 height;
    td_u32                 depth;
    ot_video_format        video_format;
    ot_dynamic_range       dynamic_range;
    ot_pixel_format        pixel_format;
    ot_compress_mode       compress_mode;
    ot_frame_rate_ctrl     frame_rate;
} ot_vpss_ext_chn_attr;

【成员】

成员名称

描述

bind_chn

绑定源物理通道。

src_type

扩展通道输入源位置。具体描述详见“系统控制”章节。

width

目标图像宽度。要求2对齐。

取值范围请见Tabell 10。

height

目标图像高度。要求2对齐。

取值范围请见Tabell 10。

depth

用户获取通道图像的队列长度。

取值范围:[0, 8]

video_format

视频格式。具体描述请参考“系统控制”章节。

dynamic_range

动态范围。具体描述请参考“系统控制”章节。

pixel_format

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

compress_mode

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

frame_rate

帧率控制信息。具体描述请参考“系统控制”章节。

【注意事项】

  • 源帧率与目标帧率都为-1,则不进行帧率控制。
  • 目标帧率不能大于源帧率。
  • 支持通过设置通道输出像素格式实现UV反转。
  • Hi3519DV500/Hi3516CV610支持通过设置通道输出像素格式实现输出OT_PIXEL_FORMAT_VY1UY0_PACKAGE_422格式的图像。
  • Hi3519DV500/Hi3516CV610扩展通道最大支持30倍缩小,最大支持16倍放大。
  • Hi3511CV100扩展通道最大支持15倍缩小,最大支持16倍放大。
  • 绑定源物理通道必须合法,范围为[0, OT_VPSS_MAX_PHYS_CHN_NUM)。
  • 绑定源物理通道必须工作在USER模式。
  • 绑定源若为非OT_FMU_MODE_OFF模式,则扩展通道不生效。

【相关数据类型及接口】

ot_vpss_crop_info

【说明】

定义CROP功能所需信息。

【定义】

typedef struct {
    td_bool     enable;
    ot_coord  crop_mode;
    ot_rect  crop_rect;
} ot_vpss_crop_info;

【成员】

成员名称

描述

enable

CROP使能开关。

crop_mode

CROP起始点坐标模式。

结构体说明请参考“系统控制”章节。

crop_rect

CROP的矩形区域。

结构体说明请参考“系统控制”章节。

【注意事项】

  • 若crop_mode为OT_COORD_RATIO(相对坐标模式),使用crop_rect的成员时应做转换,计算公式为:

    • x = 起始点坐标x原始图像宽度/1000,合法取值范围:[0, 999],计算完成后会进行取整操作和对齐操作。公式同样适用于纵坐标计算,x为转换后的坐标。
    • width=区域宽度x实际图像宽度/1000,区域宽度取值范围:[1, 1000]。计算完成后会进行取整操作和对齐操作。公式同样适用于区域高度计算,width为转换后的宽。
  • 相对模式裁剪时,裁剪区域坐标取值范围为[0, 999],裁剪区域宽高取值范围为[1, 1000]。

  • 若crop_mode为OT_COORD_ABS(绝对坐标模式):

    • 对于grp_crop, Crop区域的宽高不能小于VPSS最小输入宽高,不能大于VPSS最大输入宽高;起始坐标不能超出最大输入宽高。
    • 对于chn_crop, Crop区域的宽高不能小于VPSS最小输出宽高,不能大于VPSS最大输出宽高;起始坐标不能超出最大输出宽高。
    • 如果Crop区域超出图像范围,则自动裁剪到图像有效范围。
  • 裁剪区域起始点不支持负坐标。

  • 裁剪区域起始点坐标和宽高要求2像素对齐。
  • Hi3519DV500 VPSS开启3DNR时,裁剪宽高自动向下4像素对齐。

【相关数据类型及接口】

ot_vpss_grp_param

【说明】

定义VPSS组属性。

【定义】

typedef struct {
    td_u32                   contrast;
    td_u32                   ie_strength;
} ot_vpss_grp_param;

【成员】

成员名称

描述

contrast

取值范围:[0, 63]

用以设定Vpss通路对比度强度,本值设定越强则画面对比度越强。

影响暗区和亮区调整幅度,值越大,调整越明显。默认值为8。

ie_strength

取值范围:[0, 63]

用以设定画面锐利度。本值设定越高则画面锐利度越高,噪声越明显。默认设定值为4,建议设定值不超过16。

【注意事项】

  • ie_strength相对功能比较独立。ie_strength 用以设定画面整体锐利度。该参数设置越高则画面越清晰,但画面噪声会被提高。此时如果先想保持原先的画面风格需要将去噪强度提高,有很大可能造成画面拖尾问题的出现。因此建议该值设定不宜过高,以不超过12为最佳。
  • contrast和ie_strength对于Hi3519DV500无效,不做异常检查。

【相关数据类型及接口】

ot_vpss_out_lut_cfg

【说明】

定义VPSS 写出GDC LUT配置信息。

【定义】

typedef struct {
    td_bool          enable;    /* RW; Range: [0, 1]; save gdc out lut or not */
    td_u32           buf_size;  /* RW; buf size of out lut */
} ot_vpss_out_lut_cfg;

【成员】

成员名称

描述

enable

是否使能写出gdc lut。默认值为TD_FALSE。调用查询接口进行坐标查询时需要开启,否则可关闭以节省lut写出内存。

buf_size

使能写出lut时,lut内存的大小,需要足够存储写出lut数据。

【注意事项】

buf_size = OT_ALIGN_UP(func(out_size.width, cell_size), 32) * OT_ALIGN_UP((out_size.height + (16<<cell_size) -1)/(16<<cell_size) + 1, 32)
  • func(out_size.width, cell_size)对应的算法实现是OT_ALIGN_UP(((OT_DIV_UP(out_size.width, (16 << cell_size)) + 1) * 8), 16)。
  • out_size代表gdc每个区域输出的宽高,类型是ot_size。若gdc为多区域输出,buf_size按照实际生效的输出区域结果累加计算。例如鱼眼有两个输出区域:region0, region1,先分别计算对应的buf_size0, buf_size1, 总的大小是buf_size=buf_size0+buf_size1;
  • cell_size代表LUT精度,该变量为枚举整数类型ot_lut_cell_size,范围是[0,4],(16<<(cell_size))的最大值为256。
  • #define OT_ALIGN_UP(x, a) ((((x) + ((a) - 1)) / (a)) * (a))
  • #define OT_DIV_UP(x, a) (((x) + ((a) - 1)) / (a))

【相关数据类型及接口】

ot_vpss_grp_cfg

【说明】

定义VPSS 组cfg配置信息。

【定义】

typedef struct {
    td_bool             is_rotation_input_support;  /* RW; Range: [0, 1]; is a rotation input or not. default false */
    td_bool             is_dis_gyro_support;        /* RW; Range: [0, 1]; is a dis gyro grp or not. default false */
    td_bool             is_dis_ref_support;         /* RW; Range: [0, 1]; is dis ref or not. default false */
    td_bool             is_motion_denoise_support;          /* RW: Range: [0, 1]:is motion_denoise support or not. default false*/
    td_u32              max_split_num;              /* RW; Max node number of split. */
    td_u32              max_out_rgn_num;            /* RW; Max region number for fisheye or stitch. */
    ot_vpss_out_lut_cfg lut_cfg;
} ot_vpss_grp_cfg;

【成员】

成员名称

描述

is_rotation_input_support

是否支持旋转输入。默认值为TD_FALSE。开启VPSS的3DNR功能时,分配参考帧内存是否考虑旋转输入,考虑旋转输入可能会增加参考帧内存大小。

is_dis_gyro_support

是否支持陀螺仪防抖功能。默认值为TD_FALSE。开启陀螺仪防抖功能时,必须开启,否则可关闭以节省陀螺仪相关数据存储内存。

is_dis_ref_support

是否支持参考帧防抖功能。默认值为TD_FALSE。开启参考帧防抖功能时,必须开启,否则可关闭以节省参考帧和陀螺仪相关数据存储内存。

is_motion_denoise_support

用于控制是否分配motion_denoise所需内存。

max_split_num

最大分块节点数。取值范围:[1, OT_VPSS_MAX_SPLIT_NODE_NUM]。Hi3519DV500/Hi3511CV100默认值为3,Hi3516CV610默认值为2。无需分块时可设置为1,以节省模板内存。

Hi3519DV500/Hi3516DV500/Hi3511CV100需要分块的场景:输入分辨率宽度超过4096。

Hi3516CV610需要分块的场景:输入分辨率宽度超过3200。

max_out_rgn_num

最大输出区域数。取值范围:[1, OT_VPSS_MAX_OUT_RGN_NUM]。默认值为1。鱼眼多区域输出时,该值不能小于鱼眼区域数;拼接场景时,该值不能小于拼接pipe数;其他场景可设置为1以节省模板内存。

lut_cfg

写出lut配置。

【注意事项】

  • 该接口用于特定功能的小型化配置。
  • 需在ss_mpi_vpss_create_grp接口调用前调用。
  • 调用ss_mpi_vpss_destroy_grp接口后参数保留,不会主动重置为默认配置。
  • is_dis_gyro_support为TRUE时不支持开启OT_FMU_MODE_WRAP或OT_FMU_MODE_DIRECT模式,不支持stitch功能。
  • is_rotation_input_support、is_dis_gyro_support、is_dis_ref_support、is_motion_denoise_support、lut_cfg对于Hi3516CV610/Hi3511CV100无效,不做异常检查。
  • 系统退出后恢复默认配置。

【相关数据类型及接口】

ot_vpss_rgn_info

【说明】

定义VPSS 亮度和区域信息。

【定义】

typedef struct {
    td_u32                  rgn_num; /* W; count of the rgn */
    ot_rect ATTRIBUTE       *rgn;    /* W; rgn attribute */
} ot_vpss_rgn_info;

【成员】

成员名称

描述

rgn_num

亮度和区域个数。

rgn

亮度和区域,该内存大小应该大于或等于sizeof(ot_rect)×rgn_num(区域个数)。

结构体说明请参考“系统控制”章节。

【注意事项】

无

【相关数据类型及接口】

ss_mpi_vpss_get_chn_rgn_luma

ot_vpss_mod_param

【说明】

通过接口设置模块参数。

【定义】

typedef struct {
    td_u32  max_out_width;
    td_u32  max_out_height;
    td_u32  chain_weight_threshold;
    td_bool output_low_delay_support;
} ot_vpss_mod_param;

【成员】

成员名称

描述

max_out_width

模块最大输出宽度。取值范围:[OT_VPSS_MIN_IMG_WIDTH, OT_VPSS_MAX_OUT_IMG_WIDTH], 默认为OT_VPSS_MAX_OUT_IMG_WIDTH。该值影响物理通道最大输出宽度。

max_out_height

模块最大输出高度。取值范围:[OT_VPSS_MIN_IMG_HEIGHT, OT_VPSS_MAX_OUT_IMG_HEIGHT], 默认为OT_VPSS_MAX_OUT_IMG_HEIGHT。该值影响物理通道最大输出高度,以及存在FMU卷绕压缩输出时,压缩头空间的大小。有小型化需求时可通过降低最大输出高度来减少卷绕压缩输出的压缩头内存占用。

chain_weight_threshold

VPSS组链阈值。取值范围[40, 160],默认40。

VPSS grp数较多时,增大组链阈值可以减少VPSS中断数量,但是单次中断处理的任务数量会增多(即单次中断处理时间变长),建议按实际情况将chain_weight_threshold调大至80/120/160测试取最优值。

output_low_delay_support

VPSS是否支持输出低延时开关。

如果客户场景所有VPSS通道都没有低延时输出的需求,可全局关闭低延时功能,对于VPSS grp数多的场景可降低cpu消耗。另NVR场景下,VO使用multi模式,VO multi模式是不支持低延时帧的,因此建议关闭此功能。

【注意事项】

仅Hi3511CV100支持chain_weight_threshold功能。

【相关数据类型及接口】

ot_vpss_chn_buf_wrap_attr

【说明】

定义VPSS卷绕属性。

【定义】

typedef struct {
    td_bool enable;     /* RW; Range: [0, 1] */
    td_u32 buf_line;    /* RW; Range: [128, chn_height]; chn wrap buffer line */
    td_u32 buf_size;    /* RW; chn wrap buffer size */
} ot_vpss_chn_buf_wrap_attr;

【成员】

成员名称

描述

enable

卷绕使能开关。默认关闭。

buf_line

卷绕buffer行高。32对齐。取值范围:[128, 通道输出的图像高度]。

buf_size

卷绕buffer大小。

【注意事项】

  • 为适应不同业务压力,避免丢帧,请参考“系统控制”章节的ss_mpi_sys_get_vpss_venc_wrap_buf_line接口计算buf_line的推荐值。
  • 使能卷绕时,buf_size必须大于0,其计算可参考代码hi_buffer.h中的函数ot_comm_get_vpss_venc_wrap_buf_size。
  • 卷绕buffer使用的是公共VB,用户需先为其分配一个大小合适的公共VB,VPSS在使能通道0卷绕时按buf_size获取公共VB。
  • 当多个Group都使能通道0卷绕时,用户仅需分配一个公共VB作供所有卷绕Group使用,VB的大小取多个Group分别计算出的buf_size的最大值。

【相关数据类型及接口】

ot_vpss_svc_param

【说明】

定义VPSS Group SVC参数。

【定义】

typedef struct {
    td_bool enable;
    td_u32 svc_interval;
    ot_vpss_chn svc_chn;
} ot_vpss_svc_param;

【成员】

成员名称

描述

enable

SVC参数使能开关。默认关闭。

svc_interval

打OT_FRAME_FLAG_SVC_FLAG标记间隔。取值范围:[1, 10]

svc_chn

指定SVC通道。取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

【注意事项】

  • 使能此功能时,svc_chn设置为智能模块从VPSS取帧的物理通道号;不建议对智能编码绑定的物理通道进行通道帧控,可能导致码流效果变差。
  • 使能此功能时,svc_chn通道帧控之后,每svc_interval帧在各个通道出帧的帧信息中的frame_flag成员上置位OT_FRAME_FLAG_SVC_FLAG标记,供后级模块使用。VPSS会基于svc_chn指定的物理通道出帧时刻去给其他已使能的物理通道(包括svc_chn)出帧打上OT_FRAME_FLAG_SVC_FLAG标记,以保证码流路与智能路的打标记帧的pts相同。
  • 例如各通道无帧控时,svc_interval设置为4,则各通道输出帧每4帧中有1帧打上此标记。例如svc_chn通道帧控4:1,其他通道无帧控,svc_interval设置为1,则svc_chn出帧每帧都打上标记,而其他通道则是每4帧中有1帧打上标记。
  • 当使能此功能但svc_chn未使能时,此功能无法生效。

【相关数据类型及接口】

ot_vpss_luma_result

【说明】

定义VPSS 亮度和返回值信息。

【定义】

typedef struct {
    ot_size                 img_size;             /* R; Image size info. */
    td_u64 ATTRIBUTE        *luma_data;           /* R; Luma data. */
} ot_vpss_luma_result;

【成员】

成员名称

描述

luma_data

接收区域亮度和统计信息的内存指针,该内存大小应该大于或等于sizeof(td_u64)×num(区域个数)。

img_size

获取到亮度和的图像的宽高。

【注意事项】

无。

【相关数据类型及接口】

ss_mpi_vpss_get_grp_rgn_luma

ot_vpss_chn_sharpen_param

【说明】

定义通道Sharpen属性。

【定义】

typedef struct {
    td_bool                 enable;
    td_u32                  strength;
} ot_vpss_chn_sharpen_param;

【成员】

成员名称

描述

enable

Sharpen使能开关。

strength

通道Sp强度。

取值范围:[0, 100]

【注意事项】

无。

【相关数据类型及接口】

ot_vpss_chn_cfg

【说明】

定义通道配置结构体。

【定义】

typedef struct {
    td_bool scale_ex_support;
    td_bool chn_proc_ex_support;
} ot_vpss_chn_cfg;

【成员】

成员名称

描述

scale_ex_support

VPSS是否支持超过15倍缩小。默认值为TD_TRUE。

VPSS通道最大缩小倍数是30倍,但超过15倍的情况下,会额外调用VGS做一次缩放。如果不需要30倍缩小场景,建议设置为TD_FALSE,在grp路数多的场景可降低CPU消耗。

chn_proc_ex_support

VPSS是否支持通道后处理。默认为TD_TRUE。通道后处理功能需要额外调用GDC/VGS等模块。如果VPSS通道在业务上不需要通道后处理功能(如:旋转、鱼眼、coverex、mosaicex、line、overlayex以及获取通道亮度和等),建议设置为TD_FALSE,在grp路数多的场景可降低CPU消耗。

【注意事项】

无。

【相关数据类型及接口】

错误码

视频处理子系统API错误码如表1所示。

表 1 VPSS API错误码

错误代码

宏定义

描述

0xa0078001

OT_ERR_VPSS_INVALID_DEV_ID

VPSS Group号无效或Pipe号无效

0xa0078003

OT_ERR_VPSS_INVALID_CHN_ID

VPSS通道号无效

0xa0078007

OT_ERR_VPSS_ILLEGAL_PARAM

VPSS参数设置无效

0xa0078008

OT_ERR_VPSS_EXIST

VPSS Group已创建

0xa0078009

OT_ERR_VPSS_UNEXIST

VPSS Group未创建

0xa007800a

OT_ERR_VPSS_NULL_PTR

输入参数空指针错误

0xa007800c

OT_ERR_VPSS_NOT_SUPPORT

操作不支持

0xa007800d

OT_ERR_VPSS_NOT_PERM

操作不允许

0xa0078014

OT_ERR_VPSS_NO_MEM

分配内存失败

0xa0078015

OT_ERR_VPSS_NO_BUF

分配BUF池失败

0xa0078016

OT_ERR_VPSS_BUF_EMPTY

图像队列为空

0xa0078018

OT_ERR_VPSS_NOT_READY

VPSS系统未初始化

0xa0078022

OT_ERR_VPSS_BUSY

VPSS系统忙

0xa0078023

OT_ERR_VPSS_SIZE_NOT_ENOUGH

VB块大小不够