视频处理子系统

概述

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

支持的具体图像处理功能包括FRC(Frame Rate Control)、Crop、3DNR、DEI(De-interlace)、IE(Image Enhance)、LDCI(Local Dynamic Contrast Improvement)、DCI(Dynamic Contrast Improvement)、LTI(LuminanceTransition Improvement)/CTI(Chroma Transition Improvement)、Cover/CoverEx、Overlay/OverlayEx、Mosaic/MosaicEx、Scale、固定角度旋转、任意角度旋转、鱼眼矫正、LDC、展宽、Corner_rectEx、Line、获取区域亮度和、低延时、Mirror/Flip、Aspect Ratio、Border、像素格式转换、压缩解压等。

功能描述

基本概念

  • Group

    • VPSS对用户提供组(Group)的概念。最大个数请参考OT_VPSS_MAX_GRP_NUM定义,各Group分时复用VPSS硬件,硬件依次处理各个组提交的任务。

    • 如果用到的VPSS Group数量超过128 个,则需要修改/etc/profile,在其末尾加上ulimit -HSn 4096,指定系统同时最大可打开文件数为4096。

  • Channel

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

  • FRC

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

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

    • 通道帧率控制:用于控制各个通道图像的处理。

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

  • Sizer

    图像尺寸筛选。前端VI混合采集时用来筛选指定尺寸图像。

  • Crop

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

    • 组裁剪,对输入图像做裁剪;

    • 物理通道裁剪,对物理通道图像做裁剪;

    • 扩展通道裁剪,对扩展通道图像做裁剪。

  • DEI

    De-interlace,去隔行。将交错的隔行视频源还原成逐行视频源。

  • 3DNR

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

  • IE

    Image Enhance,图像增强。

  • LDCI

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

  • DCI

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

  • LTI/CTI

    Luminance/Chroma Transition Improvement,亮度/色度过渡增强,即图像锐化(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物理通道的输出图像叠加位图。

  • Line

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

  • Corner_rectEx

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

  • 获取区域亮度和

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

  • 鱼眼矫正

    物理通道支持对图像做鱼眼矫正。

  • LDC

    物理通道支持对图像做镜头畸变矫正。

  • 展宽

    物理通道支持对图像做展宽处理。

  • 低延时

    • 输入低延时,接收前端模块发送的低延时帧;

    • 输出低延时,通道向后端模块发送低延时帧。

  • 固定角度旋转

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

  • 任意角度旋转

    物理通道支持任意角度旋转功能。

  • Aspect Ratio

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

  • Border

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

  • 工作模式

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

  • 压缩/解压

    • 支持通道输出图像进行压缩;支持对输入压缩图像解压;

    • 支持3DNR参考帧压缩/解压;

    • 紧凑段压缩、参考帧压缩可节省内存,其它压缩不节省内存。所有压缩都能改善带宽占用。

  • 像素格式转换

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

  • 备份节点

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

    • 当原始图像要经过VPSS 硬件处理时,VPSS 会将其放入备份节点,并替换掉原有备份的图像。

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

  • 分块

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

须知:

  • Cover、Overlay、Mosaic为所有通道处理效果相同,不支持单独控制(不支持Mask设置方式);

  • 同一时刻仅允许有一个通道放大;当一个通道进行semi-planar 420转semi-planar 422时,其它通道不能再放大;

  • SS528V100/SS625V100/SS524V100/SS522V101输入图像宽度超过2688时分块。

  • SS928V100输入图像宽度超过4096时分块。

  • SS626V100输入图像宽度超过3840时分块。

  • SS524V100/SS528V100开启DEI,且图像宽度超过960时分块。

  • 未有特殊说明,SS927V100与SS928V100内容一致。

功能描述

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模式。

SS528V100功能规格支持参考图1数据流图。

SS625V100功能规格支持参考图2数据流图。

SS524V100功能规格支持参考图3数据流图。

SS522V101功能规格支持参考图4数据流图。

SS928V100功能规格支持参考图5数据流图。

SS626V100功能规格支持参考图6数据流图。

处理流程

SS528V100 VPSS数据处理流程如图1所示。

图 1 SS528V100 VPSS的数据流图

SS625V100 VPSS数据处理流程如图2所示。

图 2 SS625V100 VPSS的数据流图

SS524V100 VPSS数据处理流程如图3所示。

图 3 SS524V100 VPSS的数据流图

SS522V101 VPSS数据处理流程如图4所示。

图 4 SS522V101 VPSS的数据流图

图 5 SS928V100 VPSS的数据流图

图 6 SS626V100 VPSS的数据流图

说明:

  • 当SS528V100/SS625V100/SS524V100/SS522V101 VPSS性能不够时,可以使用VGS来代替VPSS做一部分功能。对应的VPSS的组号设置为\OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM - 1],即最后(OT_VPSS_MAX_GRP_NUM- OT_VPSS_VGS_GRP_NO)个组默认提交给VGS硬件来实现,用户可以根据实际场景自由选择是否用VGS硬件来代替VPSS 处理功能。如果通道是user模式,输入输出图像分辨率不变,且功能都不开启,则VGS 会bypass 此任务,不消耗VGS 性能,且输入输出是同一个VB。此类组有一些限制:

  • SS528V100/SS625V100不支持IE,NR,DEI,DCI,Mosaic,Overlay,LTI/CTI。

  • SS524V100/SS522V101不支持IE,NR,DEI,LDCI,DCI,Mosaic,Overlay,LTI/CTI。

  • SS528V100/SS625V100/SS524V100/SS522V101只支持从4个通道中选择1个通道输出。

  • SS928V100 VPSS组号在\OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM - 1]范围内的组调用VGS硬件处理(此类组工作在离线模式),用于解码或VPSS性能不够的场景。单通道输出且不做任何处理时bypass处理,输入输出为同一个VB。此类组有如下限制:

  • 不支持3DNR;

  • 不支持Tile16x8格式输出,不支持TILE压缩;

  • 仅支持3个物理通道;

  • 无法获取通道亮度和。

  • VDEC绑定VPSS,VPSS绑定VO场景,如果VPSS组是由VGS硬件处理且做bypass处理时,会将VDEC的私有VB发送给VO,如果需要销毁解码通道,需要调用ss_mpi_vo_clear_chn_buf释放解码VB。

  • SS928V100 VPSS支持8个扩展通道,图中仅画一个。扩展通道可以绑定到任意物理通道,图中仅示意性绑定到某个通道。扩展通道的输入位置可以选择为LDC之前、鱼眼前以及鱼眼后。

  • 用户设置的通道压缩,指的是VPSS通道最终输出的压缩模式。

须知: SS528V100/SS625V100/SS524V100/SS522V101通道像素格式为单分量时,不支持Line或任意四边形CoverEx处理。

输入输出特性

VPSS物理输入特性,如VPSS输入格式特性表至VPSS输入分辨率表所示。

表 1 VPSS输入格式特性

解决方案名称

数据位宽

视频格式

输入像素格式

8Bit

10Bit

Linear

Tile64X16

SS528V100

Y

N

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

SS625V100

Y

N

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

SS524V100

Y

N

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

SS522V101

Y

N

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

SS928V100

Y

N

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

SS626V100

Y

N

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

说明:

  • SS928V100仅组号在\OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM - 1]范围内的组支持输入Tile64x16格式。

  • 输入Tile64x16视频格式时,仅支持像素格式OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420。

表 2 VPSS输入解压特性

解决方案名称

解压缩模式

SEG

SEG_COMPACT

TILE

SS528V100

Y

Y

Y

SS625V100

Y

Y

Y

SS524V100

Y

Y

Y

SS522V101

Y

Y

Y

SS928V100

Y

Y

Y

SS626V100

Y

Y

Y

说明: SS928V100仅组号在\OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM - 1]范围内的组支持输入TILE压缩。

表 3 VPSS输入分辨率

解决方案名称

工作模式

离线模式

OT_VI_ONLINE_VPSS_ONLINE

OT_VI_PARALLEL_VPSS_PARALLEL

OT_VI_OFFLINE_VPSS_ONLINE

SS528V100

宽[64, 16384]

高[64, 8192]

紧凑段压缩(SEG_COMPACT):

宽[64, 2688]

高[64, 8192]

N

N

N

SS625V100

宽[64, 16384]

高[64, 8192]

紧凑段压缩(SEG_COMPACT):

宽[64, 2688]

高[64, 8192]

N

N

N

SS524V100

宽[64, 16384]

高[64, 8192]

紧凑段压缩(SEG_COMPACT):

宽[64, 2688]

高[64, 8192]

N

N

N

SS522V101

宽[64, 16384]

高[64, 8192]

紧凑段压缩(SEG_COMPACT):

宽[64, 2688]

高[64, 8192]

N

N

N

SS928V100

宽[64, 8192]

高[64, 8192]

紧凑段压缩(SEG_COMPACT):

宽[64, 4096]

高[64, 8192]

宽[64, 4096]

高[64, 8192]

N

宽[64, 8192]

高[64, 8192]

SS626V100

宽[64, 16384]

高[64, 8192]

紧凑段压缩(SEG_COMPACT):

宽[64, 3072]

高[64, 8192]

N

N

N

说明:

  • 离线模式包含OT_VI_OFFLINE_VPSS_OFFLINE、OT_VI_ONLINE_VPSS_OFFLINE、OT_VI_PARALLEL_VPSS_OFFLINE,即只要VI和VPSS离线,对于VPSS来说就是离线模式。 SS528V100/SS625V100/SS524V100/SS522V101/SS626V100无需关注离线模式具体指哪种模式的离线。 SS928V100离线模式仅支持OT_VI_OFFLINE_VPSS_OFFLINE、OT_VI_ONLINE_VPSS_OFFLINE。

  • SS928V100 OT_VI_ONLINE_VPSS_ONLINE和OT_VI_OFFLINE_VPSS_ONLINE模式,实际输入分辨率限制取决于前端VI模块。

VPSS物理通道输出特性,如VPSS物理通道输出格式特性表~VPSS物理通道输出分辨率所示。

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

解决方案名称

数据位宽

视频格式

输出像素格式

8Bit

10Bit

Linear

Tile

64x16

Tile

16x8

SS528V100

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

SS625V100

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

SS524V100

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

SS522V101

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

SS928V100

Y

N

Y

N

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

SS626V100

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

说明: SS928V100仅组号在[0,99]范围内的组支持输出Tile16x8格式。

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

解决方案名称

压缩输出模式

SEG

SEG_COMPACT

LINE

TILE

SS528V100

仅通道0支持

仅通道0支持

仅通道2支持

不支持

SS625V100

仅通道0支持

仅通道0支持

仅通道2支持

不支持

SS524V100

仅通道0支持

仅通道0支持

仅通道2支持

不支持

SS522V101

仅通道0支持

仅通道0支持

仅通道2支持

不支持

SS928V100

仅通道0支持

仅通道0支持

不支持

仅组号在[0,99]范围内的组通道1支持

SS626V100

仅通道0和通道1支持

仅通道0和通道1支持

仅通道0和通道1支持

不支持

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

解决方案名称

工作模式

离线模式

OT_VI_ONLINE_VPSS_ONLINE

OT_VI_PARALLEL_VPSS_PARALLEL

OT_VI_OFFLINE_VPSS_ONLINE

SS528V100

宽[64, 16384]

高[64, 8192]

N

N

N

SS625V100

宽[64, 16384]

高[64, 8192]

N

N

N

SS524V100

宽[64, 16384]

高[64, 8192]

N

N

N

SS522V101

宽[64, 16384]

高[64, 8192]

N

N

N

SS928V100

宽[64, 16384]

高[64, 8192]

宽[64, 4096]

高[64, 8192]

N

宽[64, 16384]

高[64, 8192]

SS626V100

宽[64, 16384]

高[64, 8192]

N

N

N

须知:

  • 输入宽高2像素对齐(3DNR 打开时宽要求4像素对齐,DEI打开时要求宽高4像素对齐)。输入linear非压缩图像时,支持奇数分辨率输入。

  • 通道写出宽高2像素对齐。

  • VPSS调用VGS做旋转时,需要额外申请一块临时buffer,用于存放处理后的图像,因此也需要一次额外读写DDR。

  • SS528V100/SS625V100/SS524V100/SS522V101 VPSS物理通道缩小超过15倍时(输入图像宽度大于2688且输出为非紧凑段压缩时是10倍),需要额外申请一块临时buffer,buffer宽高均为输出图像的2倍,分配VB Blk时需要考虑相关配置。同时也需要一次额外读写DDR。

  • SS928V100 VPSS物理通道缩小超过15倍时(输入图像宽度大于4096且通道0开启压缩时为14倍),需要额外申请一块临时buffer,buffer宽高均为输出图像的2倍,分配VB Blk时需要考虑相关配置。同时也需要一次额外读写DDR。

  • SS626V100 VPSS物理通道缩小超过15倍时(输入图像宽度大于3840且通道0开启压缩时为14倍),需要额外申请一块临时buffer,buffer宽高均输出图像的2倍,分配VB Blk时需要考虑相关配置。同时也需要一次额外读写DDR。

  • SS528V100/SS625V100/SS524V100/SS522V101通道1和通道3不支持压缩,如果系统带宽压力大,不建议这两个通道做图像放大处理。

  • SS528V100/SS625V100开启3DNR且参考帧为帧压缩时,最大高度不能超过4096。

  • SS928V100 VPSS通道1输出Tile16x8格式时,输出图像宽度不能大于4096。

  • 通过ss_mpi_sys_set_scale_coef_level接口调节缩放效果时,需要考虑VPSS通道缩小倍数超过硬件限制而调用VGS辅助缩小的情况,此时VGS固定缩小2倍,可以反推VPSS的缩放倍数,从而得到缩放范围。

视频处理子系统物理通道在不同压缩场景下的功能限制如SS528V100 VPSS物理通道压缩输出时功能限制表~SS626V100 VPSS物理通道压缩输出时功能限制表所示。

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

压缩类型

功能

Coverex/ Mosaicex/ Overlayex

Line

Mirror/Flip

旋转(90,270)

亮度和统计

输入输出Buffer共用

紧凑段压缩(SEG_COMPACT)

不支持

不支持

仅后端接VENC时支持

不支持

不支持

不支持

非紧凑段压缩(SEG)

支持

只支持画横线、竖线

支持

不支持

支持

支持

行压缩(LINE)

支持

只支持画横线、竖线

Mirror不支持,Flip支持

不支持

支持

支持

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

压缩类型

功能

Coverex/ Mosaicex/ Overlayex

Line

Mirror/Flip

旋转(90,270)

亮度和统计

输入输出Buffer共用

紧凑段压缩(SEG_COMPACT)

不支持

不支持

仅后端接VENC时支持

不支持

不支持

不支持

非紧凑段压缩(SEG)

支持

只支持画横线、竖线

支持

不支持

支持

支持

行压缩(LINE)

支持

只支持画横线、竖线

Mirror不支持,Flip支持

不支持

支持

支持

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

压缩类型

功能

Coverex/ Mosaicex/ Overlayex

Line

Mirror/Flip

旋转(90,270)

亮度和统计

输入输出Buffer共用

紧凑段压缩(SEG_COMPACT)

不支持

不支持

仅后端接VENC时支持

不支持

支持

不支持

非紧凑段压缩(SEG)

支持

只支持画横线、竖线

支持

不支持

支持

支持

行压缩(LINE)

支持

只支持画横线、竖线

Mirror不支持,Flip支持

不支持

支持

支持

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

压缩类型

功能

Coverex/ Mosaicex/ Overlayex

Line

Mirror/Flip

旋转(90,270)

亮度和统计

输入输出Buffer共用

紧凑段压缩(SEG_COMPACT)

不支持

不支持

仅后端接VENC时支持

不支持

支持

不支持

非紧凑段压缩(SEG)

支持

只支持画横线、竖线

支持

不支持

支持

支持

行压缩(LINE)

支持

只支持画横线、竖线

Mirror不支持,Flip支持

不支持

支持

支持

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

压缩类型

功能

Coverex/ Mosaicex/ Overlayex/Corner_rectex

Line

Mirror/Flip

旋转(90,270)

亮度和统计

输入输出Buffer共用

紧凑段压缩(SEG_COMPACT)

不支持

不支持

支持

不支持

支持

不支持

非紧凑段压缩(SEG)

支持

支持

支持

不支持

支持

支持

TILE压缩

不支持

不支持

支持

不支持

不支持

不支持

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

压缩类型

功能

Coverex/ Mosaicex/ Overlayex

Line

Mirror/Flip

旋转(90,270)

亮度和统计

输入输出Buffer共用

紧凑段压缩(SEG_COMPACT)

不支持

不支持

仅后端接VENC时支持

不支持

支持

不支持

非紧凑段压缩(SEG)

支持

只支持画横线、竖线

支持

不支持

支持

不支持

行压缩(LINE)

支持

只支持画横线、竖线

Mirror不支持,Flip支持

不支持

支持

不支持

VPSS扩展通道输出特性,如VPSS扩展通道输出格式特性表和VPSS扩展通道输出分辨率表所示。

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

解决方案名称

数据位宽

视频格式

输出像素格式

8Bit

10Bit

Linear

Tile64x16

Tile16x8

SS928V100

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

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

解决方案名称

压缩输出模式

SEG

SEG_COMPACT

LINE

TILE

SS928V100

支持

支持

不支持

支持

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

解决方案名称

分辨率

SS928V100

宽[64, 16384]

高[64, 8192]

须知:

  • SS528V100/SS625V100/SS524V100/SS522V101 输入图像宽大于2688时,输出不支持行压缩(LINE)或紧凑段压缩(SEG_COMPACT)。

  • SS524V100/SS528V100输入图像宽大于960且开启DEI功能时,不支持行压缩或紧凑段压缩输出,且非紧凑段压缩输出的最大缩小倍数不能超过6倍,且当超过3倍时会再调用一次VGS进行缩放,此时会导致额外的VB及带宽消耗。

  • SS528V100/SS625V100/SS524V100/SS522V101 输入图像宽大于2688,且输出为非紧凑段压缩时,最大缩小倍数不能超过20倍,且当超过10倍时会再调用一次VGS进行缩放,此时会导致额外的VB及带宽消耗。

  • SS626V100 输入图像宽大于3840,且输出为非紧凑段压缩时,最大缩小倍数不能超过28倍,且当超过14倍时会再调用一次VGS进行缩放,此时会导致额外的VB及带宽消耗。

  • SS928V100 VPSS输入图像宽度大于4096时不支持紧凑段压缩输入/输出,输出宽度大于4096时不支持紧凑段压缩输出。

  • SS626V100 VPSS输入图像宽度大于3072时不支持紧凑段压缩输入,输出图像宽度大于3072时不支持紧凑段压缩输出,输入图像宽度大于3840时不支持紧凑段压缩输出;输入图像宽度大于3840时不支持行压缩输出。

  • SS626V100 VPSS分块时通道1不支持段压缩输出。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100不支持扩展通道。

  • SS928V100扩展通道可以输出OT_PIXEL_FORMAT_VY1UY0_PACKAGE_422,仅支持对接UVC输出YUY2。

API参考

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

  • ss_mpi_vpss_create_grp:创建一个VPSS Group。

  • ss_mpi_vpss_destroy_grp:销毁一个VPSS Group。

  • ss_mpi_vpss_get_grp_attr:获取VPSS Group属性。

  • ss_mpi_vpss_set_grp_attr:设置VPSS Group属性。

  • ss_mpi_vpss_get_grp_param:获取VPSS Group参数。

  • ss_mpi_vpss_set_grp_param:设置VPSS Group参数。

  • ss_mpi_vpss_set_grp_nrx_adv_param:设置 VPSS Group高级参数。

  • ss_mpi_vpss_get_grp_nrx_adv_param:获取VPSS Group高级参数。

  • ss_mpi_vpss_set_grp_cfg:设置VPSS Group 配置。

  • ss_mpi_vpss_get_grp_cfg:获取VPSS Group 配置。

  • ss_mpi_vpss_start_grp:启用VPSS Group。

  • ss_mpi_vpss_stop_grp:禁用VPSS Group。

  • ss_mpi_vpss_reset_grp:重置一个VPSS Group。

  • ss_mpi_vpss_get_chn_attr:获取VPSS物理通道属性。

  • ss_mpi_vpss_set_chn_attr:设置VPSS物理通道属性。

  • ss_mpi_vpss_enable_chn:启用VPSS通道。

  • ss_mpi_vpss_disable_chn:禁用VPSS通道。

  • ss_mpi_vpss_set_grp_crop:设置VPSS组CROP参数。

  • ss_mpi_vpss_get_grp_crop:获取VPSS组CROP参数。

  • ss_mpi_vpss_send_frame:用户向VPSS Group发送数据。

  • ss_mpi_vpss_get_grp_frame:用户从VPSS Group获取一帧原始图像。

  • ss_mpi_vpss_release_grp_frame:用户释放一帧原始图像。

  • ss_mpi_vpss_get_chn_frame:用户获取一帧通道图像。

  • ss_mpi_vpss_release_chn_frame:用户释放一帧通道图像。

  • ss_mpi_vpss_get_grp_rgn_luma:获取输入图像指定区域的亮度总和。

  • ss_mpi_vpss_get_chn_rgn_luma:获取通道图像指定区域的亮度总和。

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

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

  • ss_mpi_vpss_enable_backup_frame:使能backup帧。

  • ss_mpi_vpss_disable_backup_frame:不使能backup帧。

  • ss_mpi_vpss_set_chn_sharpen:设置通道Sharpen属性。

  • ss_mpi_vpss_get_chn_sharpen:获取通道Sharpen属性。

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

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

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

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

  • ss_mpi_vpss_set_grp_sizer:设置VPSS Group Sizer属性。

  • ss_mpi_vpss_get_grp_sizer:获取VPSS Group Sizer属性。

  • ss_mpi_vpss_set_mod_param:设置VPSS模块参数。

  • ss_mpi_vpss_get_mod_param:获取VPSS模块参数。

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

  • ss_mpi_vpss_close_fd:关闭设备和通道的文件描述符。

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

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

  • ss_mpi_vpss_set_ldci_attr:设置VPSS LDCI属性。

  • ss_mpi_vpss_get_ldci_attr:获取VPSS LDCI属性。

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

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

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

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

  • ss_mpi_vpss_set_chn_fisheye:设置VPSS物理通道鱼眼属性。

  • ss_mpi_vpss_get_chn_fisheye:获取VPSS物理通道鱼眼属性。

  • ss_mpi_vpss_fisheye_pos_query_dst_to_src:根据鱼眼矫正输出图像坐标点查找源图像坐标点。

  • ss_mpi_vpss_set_chn_ldc_attr:设置VPSS镜头畸变矫正(LDC)属性。

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

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

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

  • ss_mpi_vpss_set_chn_spread_attr:设置VPSS物理通道展宽属性。

  • ss_mpi_vpss_get_chn_spread_attr:获取VPSS物理通道展宽属性。

  • ss_mpi_vpss_set_chn_crop:设置VPSS通道CROP参数。

  • ss_mpi_vpss_get_chn_crop:获取VPSS通道CROP参数。

  • ss_mpi_vpss_set_low_delay_attr:设置VPSS通道低延时属性。

  • ss_mpi_vpss_get_low_delay_attr:获取VPSS通道低延时属性。

  • ss_mpi_vpss_set_chn_align:设置VPSS通道stride对齐。

  • ss_mpi_vpss_get_chn_align:获取VPSS通道stride对齐。

  • ss_mpi_vpss_set_ext_chn_attr:设置扩展通道属性。

  • ss_mpi_vpss_get_ext_chn_attr:获取扩展通道属性。

  • ss_mpi_vpss_enable_quick_send:启用VPSS快速发送模式,提前发送 VO。

  • ss_mpi_vpss_disable_quick_send:不使能VPSS通道快速发送功能。

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

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

  • ss_mpi_vpss_set_chn_cfg:设置VPSS通道上的静态配置。

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

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说明。

  • SS928V100 VI_ONLINE_VPSS_ONLINE模式仅支持创建组0和组号在\OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM - 1]范围内的组。

【举例】

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.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当前任务处理结束才会真正销毁。

【举例】

请参考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_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_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必须已创建。

  • grp_param各成员取值功能限制及3DNR调试指导请参考[ot_vpss_grp_param 结构说明。

  • 请务必先调用ss_mpi_vpss_get_grp_param获取当前参数,再进行设置操作。

【举例】

无。

【相关主题】

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必须已创建。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_param

ss_mpi_vpss_set_grp_nrx_adv_param

【描述】

设置VPSS Group 参数。

【语法】

td_s32 ss_mpi_vpss_set_grp_nrx_adv_param(ot_vpss_grp grp, const ot_vpss_nrx_adv_param *nrx_adv_param)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

nrx_adv_param

组3DNR高级参数设置。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码

【需求】

头文件:ot_common_vpss.h、ss_mpi_vpss.h

库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • grp_adv_param 为3DNR高级参数,成员取值及调试指导参考ot_vpss_nrx_adv_param结构说明。

  • 请务必先调用ss_mpi_vpss_get_grp_nrx_adv_param获取当前参数,再进行设置操作。

  • SS928V100/SS626V100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_grp_nrx_adv_param

ss_mpi_vpss_get_grp_nrx_adv_param

【描述】

获取VPSS Group 参数。

【语法】

td_s32 ss_mpi_vpss_get_grp_nrx_adv_param(ot_vpss_grp grp, ot_vpss_nrx_adv_param *nrx_adv_param)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

nrx_adv_param

组3DNR高级参数设置。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码

【需求】

头文件:ot_common_vpss.h、ss_mpi_vpss.h

库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • SS928V100/SS626V100不支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_nrx_adv_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结构体说明。

  • 仅SS626V100支持此接口。

【举例】

无。

【相关主题】

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

【注意】

  • Group必须已创建。

  • 仅SS626V100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_cfg

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

输入

chn_attr

VPSS通道属性。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

Group必须已创建。

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

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)

输入

chn_attr

VPSS通道属性

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 具体成员取值及功能限制参考ot_vpss_chn_attr结构体说明。

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_get_chn_attr

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)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • 多次使能返回成功。

  • Group必须已创建。

【举例】

请参考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)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • 重复禁用返回成功。

  • Group必须已创建。

【举例】

请参考ss_mpi_vpss_create_grp。

【相关主题】

ss_mpi_vpss_enable_chn

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支持的最大输入高度。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100裁剪区域超出图像范围,丢弃超出部分图像,优先保证裁剪坐标与所设置的参数相同。

  • SS928V100裁剪区域超出图像范围,裁剪坐标向原点方向移动,优先保证裁剪出的宽高与所设置的参数相同。

  • 仅离线模式支持此接口。

【举例】

请参考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_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硬件未处理完毕的图像。

  • 如果开启了通道低延时,获取的帧不是完整帧,需设置合理的低延时行号以保证读取的图像不出现异常。

【举例】

无。

【相关主题】

无。

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

【注意】

此接口需与ss_mpi_vpss_get_chn_frame配对使用。

【举例】

无。

【相关主题】

无。

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帧,否则获取的是当前帧。

  • 仅离线模式支持此功能。

【举例】

无。

【相关主题】

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_rgn_luma

【描述】

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

【语法】

td_s32 ss_mpi_vpss_get_grp_rgn_luma(ot_vpss_grp grp, td_u32 num,  const ot_rect *rgn, ot_vpss_luma_result *luma_result, td_s32 milli_sec)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

num

统计区域个数。

输入

rgn

统计区域的区域属性,即起始位置、宽、高。

输入

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之后的图像区域。

  • 输入图像是紧凑段压缩时,SS528V100/SS625V100不支持获取输入图像亮度和宽高信息。

  • SS928V100不支持此接口。

【举例】

无。

【相关主题】

ot_vpss_luma_result

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, td_u32 num, const ot_rect *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)

输入

num

统计区域个数。

输入

rgn

统计区域的区域属性,即起始位置、宽、高。

输入

luma_data

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

输出

milli_sec

超时参数milli_sec设置:

  • 设为-1时为阻塞模式;
  • SS528V100/SS625V100/SS524V100/SS522V101设置milli_sec等于0时为非阻塞模式,SS928V100/SS626V100设置milli_sec等于0时为阻塞模式;
  • 大于0时为超时等待模式。超时时间的单位为毫秒(ms)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 此接口针对的是VPSS通道的输出图像。获取亮度统计信息的时机是这些图像被用户获取或被发送到后端模块之前。

  • 统计区域的数量范围为[1, 64]。

  • 统计区域坐标和宽高要求2像素对齐。

  • 统计区域宽高最小为2x2,SS528V100/SS625V100/SS524V100/SS522V101/SS626V100统计区域宽高最大为16384x8192,SS928V100统计区域宽高最大为8192x8192。

  • 亮度和区域不得超出图像。

【举例】

无。

【相关主题】

无。

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度时仅支持非压缩输出。SS528V100/SS625V100/SS524V100/SS522V101/SS626V100旋转180度时支持紧凑段压缩和非紧凑段压缩输出,不支持行压缩输出。SS928V100固定角度旋转180度时仅支持非压缩输出,用户可通过开启通道mirror和flip实现旋转180度,此时通道可以支持压缩输出。

  • SS528V100/SS625V100/SS524V100/SS522V101只支持固定角度旋转。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100开启90度/270度固定角度旋转时,物理通道像素格式不能设置为semi-planar422。

  • SS928V100开启旋转功能时,物理通道像素格式不能设置为semi-planar422,通过开启mirror和flip实现180度旋转时,可以设置像素格式为semi-planar422。

  • 固定角度旋转仅支持0度、90度、180度、270度的旋转。

  • 固定角度旋转仅支持OT_VIDEO_FORMAT_LINEAR格式输出。

  • 通道AUTO模式下不支持旋转。

  • 相关使用注意事项请参考“系统控制”章节ot_rotation_attr结构体。

  • SS928V100/SS626V100 VPSS同时开启任意角度旋转/高精度任意角度旋转和通道非紧凑段压缩时,会自适应关闭VPSS硬件压缩,旋转后压缩写出;

    • SS928V100开启任意角度旋转/高精度任意角度旋转时物理通道压缩模式不能设置为紧凑段压缩;

    • SS626V100开启任意角度旋转/高精度任意角度旋转时物理通道压缩模式不能设置为紧凑段压缩和行压缩。

【举例】

无。

【相关主题】

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_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。

【举例】

无。

【相关主题】

无。

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必须已创建。

  • 仅离线模式支持此功能。

【举例】

无。

【相关主题】

无。

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必须已创建。

  • SS528V100/SS625V100/SS524V100/SS522V101通道3不支持设置Sharpen处理。

  • SS626V100通道2和通道3不支持设置Sharpen处理。

  • SS928V100不支持此接口。

【举例】

无。

【相关主题】

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必须已创建。

  • SS928V100不支持此接口。

【举例】

无。

【相关主题】

ot_vpss_chn_sharpen_param

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必须已创建。

  • 只有离线模式支持此接口。

【举例】

无。

【相关主题】

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必须已创建。

  • 只有离线模式支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_delay

ss_mpi_vpss_enable_user_frame_rate_ctrl

【描述】

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

【语法】

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接收图像时,使能用户自己做帧率控制,如果VPSS通道工作在AUTO模式绑定到VO,此时VO的通道帧率控制不生效。

  • VPSS通过接口ss_mpi_vpss_send_frame接收图像时,默认使能用户自己做帧率控制。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_disable_user_frame_rate_ctrl

【描述】

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

【语法】

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接收图像时,禁止用户自己做帧率控制,此时VO的通道帧率控制生效。

  • 禁止用户自己做帧率控制时,VO通道帧率控制仅在VPSS为AUTO模式下生效,如果VPSS为USER模式,要求VPSS通道要绑定到某个模块,或者及时取走通道队列中的图像,否则VPSS接收图像会失败。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_set_grp_sizer

【描述】

设置VPSS尺寸筛选信息,即满足筛选信息的图像会继续进行后续处理,不满足便丢帧。

【语法】

td_s32 ss_mpi_vpss_set_grp_sizer(ot_vpss_grp grp, const ot_vpss_sizer_info *sizer_info)

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

sizer_info

尺寸筛选信息。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group 必须已创建。

  • 尺寸筛选主要应用于前端混合采集场景。

  • 尺寸筛选位于VPSS处理的最前端,影响后续所有处理。

  • 采用ss_mpi_vpss_send_frame接口用户送图时,不受影响。

  • SS928V100/SS626V100不支持此接口。

【举例】

【相关主题】

ot_vpss_sizer_info

ss_mpi_vpss_get_grp_sizer

【描述】

获取VPSS尺寸筛选信息。

【语法】

td_s32 ss_mpi_vpss_get_grp_sizer(ot_vpss_grp grp, ot_vpss_sizer_info *sizer_info);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

sizer_info

尺寸筛选信息。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • SS928V100/SS626V100不支持此接口。

【举例】

无。

【相关主题】

ot_vpss_sizer_info

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获取当前参数,再进行设置操作。

【举例】

无。

【相关主题】

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_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_close_fd

【描述】

关闭设备和通道的文件描述符。

【语法】

td_s32 ss_mpi_vpss_close_fd(td_void)

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

此接口不能与其他MPI接口同时调用,用户必须保证此接口与其他接口在时间上是串行调用的。

【相关主题】

ss_mpi_vpss_get_chn_fd

ss_mpi_vpss_attach_vb_pool

【描述】

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

【语法】

td_s32 ss_mpi_vpss_attach_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

【注意】

  • 必须保证组已创建。

  • 用户必须调用接口ss_mpi_vb_create_pool创建一个视频缓存VB池,再通过调用本接口把当前组的通道绑定到固定pool id的VB池中。

  • 支持多个组的多个通道绑定到同一个VB池中。

  • 当要切换当前组绑定的VB池时,只需再调一次本接口正确配置需要绑定到的VB池即可。

  • vb_pool必须保证是已创建VB池的有效Pool Id。

  • 只对USER模式的通道有效,AUTO模式的通道不受影响。

  • 在调用ss_mpi_vpss_detach_vb_pool后,销毁创建的VB之前,需要保证VB没有被VPSS后端绑定的模块使用,可以通过sleep或清除后端模块通道缓存的方式先把VB都释放,再销毁缓存VB池。

  • UserVB大小根据VPSS通道输出图像计算,具体计算公式参考ot_buffer.h。

  • 绑定后,通道申请的VB均是从此VB池中获取,解绑后从公共VB池中获取。

  • buffer share和attach vb pool功能同时开启时,buffer share优先级更高,通道使用的VB为输入VB。

  • 对于SS928V100,先开启低延时单buffer再开启attach vb pool,低延时单buffer优先级更高,通道使用的VB为低延时buffer。如果先attach vb pool,然后开启低延时单buffer,再detach vb pool,通道依然使用用户VB池中的VB,如果要释放USER VB,需要先关闭低延时单buffer,然后再detach vb pool。

  • 对于SS928V100,开启mcf_en的组仅通道0支持绑定/解绑VB池。

  • 绑定VB池和创建VPSS组的操作,需要在同一个进程中执行。

【举例】

无。

【相关主题】

ss_mpi_vpss_detach_vb_pool

ss_mpi_vpss_detach_vb_pool

【描述】

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

【语法】

td_s32 ss_mpi_vpss_detach_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

失败,请参考错误码

【需求】

  • 头文件:mpi_vpss.h、ot_common_vpss.h

  • 库文件:libss_mpi.a

【注意】

必须保证组已创建。

【举例】

无。

【相关主题】

ss_mpi_vpss_attach_vb_pool

ss_mpi_vpss_set_ldci_attr

【描述】

设置VPSS LDCI属性。

【语法】

td_s32 ss_mpi_vpss_set_ldci_attr(ot_vpss_grp grp, const ot_vpss_ldci_attr *ldci_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

ldci_attr

LDCI参数设置。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码

【需求】

头文件:ot_common_vpss.h、ss_mpi_vpss.h

库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • ldci_attr各成员取值功能限制请参考ot_vpss_ldci_attr结构说明。

  • 请务必先调用ss_mpi_vpss_get_ldci_attr获取当前参数,再进行设置操作。

  • LDCI功能支持的最大图像宽度是7680,紧凑段压缩下是2688。

  • 开启LDCI功能后,如果实际输入宽度超过7680,VPSS会自适应开关LDCI功能。

  • 开启LDCI功能时,会分配属性功能需要的内存,当关闭属性开关时,相应的内存会被释放。

  • 该接口仅SS524V100/SS522V101支持。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_ldci_attr

ss_mpi_vpss_get_ldci_attr

【描述】

获取VPSS LDCI属性。

【语法】

td_s32 ss_mpi_vpss_get_ldci_attr(ot_vpss_grp grp, ot_vpss_ldci_attr *ldci_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

ldci_attr

LDCI参数设置。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码

【需求】

头文件:ot_common_vpss.h、ss_mpi_vpss.h

库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 该接口仅SS524V100/SS522V101支持。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_ldci_attr

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必须已创建。

  • 仅SS928V100/SS626V100支持此接口。

【举例】

无。

【相关主题】

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必须已创建。

  • 仅SS928V100/SS626V100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_fisheye_cfg

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。

  • 仅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所示。

  • 仅SS928V100支持此接口。

  • early_line用于设置VPSS硬件采集多少行后上报延时中断。

表 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之后调用。

  • 仅SS928V100支持此接口。

  • 默认为OT_FRAME_INTERRUPT_START模式,延时行号为0;销毁组后会将帧中断中断属性重置为默认状态。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_grp_frame_interrupt_attr

ss_mpi_vpss_set_chn_fisheye

【描述】

设置VPSS物理通道鱼眼属性。

【语法】

td_s32 ss_mpi_vpss_set_chn_fisheye(ot_vpss_grp grp, ot_vpss_chn chn, const ot_fisheye_correction_attr *correction_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

correction_attr

VPSS物理通道的鱼眼属性结构体指针,具体描述请参考“几何畸变矫正子系统”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 仅SS928V100/SS626V100支持此接口。

  • 通道号必须为VPSS物理通道。

  • 配置鱼眼属性前必须先配置对应物理通道的属性。

  • 物理通道开启了鱼眼矫正后,不支持动态改变通道Crop属性、通道旋转属性以及通道宽高属性。

  • 如果物理通道非紧凑段压缩和鱼眼功能同时开启,会自适应关闭VPSS硬件压缩,鱼眼矫正后压缩输出。

  • 如果物理通道非紧凑段压缩和鱼眼功能同时开启,只有当校正区域数为1,且该区域可完全覆盖输出范围时,可不打背景色,其他情况必须打上背景色,即bg_color_en参数必须设置为TD_TRUE。

  • 开启鱼眼功能时,物理通道像素格式不能设置为semi-planar422,压缩模式仅支持非压和非紧凑段压缩。

  • 开启鱼眼功能时,仅支持OT_VIDEO_FORMAT_LINEAR格式输出。

  • SS928V100通道输出VIDEO_FORMAT_TILE_16x8格式时,不支持鱼眼。

  • SS928V100鱼眼仅支持低延时输入,不支持低延时输出,VPSS物理通道开启低延时和鱼眼,后端模块收到的是非低延时帧。

  • SS626V100鱼眼不支持低延时,VPSS物理通道开启低延时和鱼眼,低延时不生效。

  • 通道AUTO模式下不支持鱼眼。

  • 鱼眼矫正有最小的输入输出宽高限制:OT_FISHEYE_MIN_IN_IMAGE_HEIGHT等请参考“几何畸变矫正子系统”章节。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_fisheye

ss_mpi_vpss_get_chn_fisheye

【描述】

获取VPSS物理通道鱼眼属性。

【语法】

td_s32 ss_mpi_vpss_get_chn_fisheye(ot_vpss_grp grp, ot_vpss_chn chn, ot_fisheye_correction_attr *correction_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

correction_attr

VPSS物理通道的鱼眼属性结构体指针,ot_fisheye_correction_attr具体描述请参考几何畸变矫正子系统章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 仅SS928V100/SS626V100支持此接口。

  • 通道号必须为VPSS物理通道。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_fisheye

ss_mpi_vpss_fisheye_pos_query_dst_to_src

【描述】

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

【语法】

td_s32 ss_mpi_vpss_fisheye_pos_query_dst_to_src(ot_vpss_grp grp, ot_vpss_chn chn, td_u32 region_index, const ot_point *dst_point, ot_point *src_point);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

region_index

鱼眼矫正区域号。

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

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

输入

dst_point

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

输入

src_point

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

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 仅SS928V100/SS626V100支持此接口。

  • 通道号必须为VPSS物理通道。

  • 调用此接口前必须先开启鱼眼矫正功能。

  • 启动鱼眼矫正后,如果需要变动参数,要遵循参数变动、获取校正图像和启动坐标点查询的先后原则。如果在鱼眼参数变动之前就获取了矫正图像,可能导致查找到错误的坐标点。

  • 多区域时,每个区域的坐标点按照每个区域单独计算,不能按照拼接之后的图像来计算。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_ldc_attr

【描述】

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

【语法】

td_s32 ss_mpi_vpss_set_chn_ldc_attr(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

LDC属性结构体指针,具体描述请参考“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 仅SS928V100支持此接口。

  • 通道号必须为VPSS物理通道。

  • 配置LDC属性前必须先配置对应物理通道的属性。

  • 如果物理通道非紧凑段压缩和LDC功能同时开启,会自适应关闭VPSS硬件压缩,LDC处理后压缩输出。

  • 开启LDC功能时,物理通道像素格式不能设置为semi-planar422,压缩模式仅支持非压和非紧凑段压缩。

  • 通道输出VIDEO_FORMAT_TILE_16x8格式时,不支持LDC。

  • 启用LDC时,VPSS的COVER可能会变形,此时建议使用COVEREX来代替COVER。

  • 当开启展宽时,OT_LDC_V1的distortion_ratio取值范围只能为 [0, 500],即只支持LDC的桶形模式。

  • 由于LDC会对图像进行几何拉伸或几何压缩,当输入图像存在明显噪声,在桶型矫正过后,可能存在图像四周噪声颗粒变大(四周被拉伸)的现象,可将LDC配置于之后改善此现象。噪声较大的场景建议在VPSS模块配置LDC,不建议在VI模块配置LDC。

  • OT_LDC_V3的参数需使用标定工具的参数,不能用随意配置的参数。

  • LDC矫正有最小的宽高限制:OT_LDC_MIN_IMAGE_WIDTH,OT_LDC_MIN_IMAGE_HEIGHT请参考“几何畸变矫正子系统”章节。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_ldc_attr

ss_mpi_vpss_get_chn_ldc_attr

【描述】

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

【语法】

td_s32 ss_mpi_vpss_get_chn_ldc_attr(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

LDC属性结构体指针,具体描述请参考“系统控制”章节。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 仅SS928V100支持此接口。

  • 通道号必须为VPSS物理通道。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_ldc_attr

ss_mpi_vpss_ldc_pos_query_dst_to_src

【描述】

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

【语法】

td_s32 ss_mpi_vpss_ldc_pos_query_dst_to_src(ot_vpss_grp grp, ot_vpss_chn chn, const ot_point *dst_point, ot_point *src_point);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

dst_point

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

输入

src_point

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

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h、ot_common_video.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 仅SS928V100支持此接口。

  • 通道号必须为VPSS物理通道。

  • 该接口仅支持OT_LDC_V1版本的LDC矫正。

  • 必须LDC使能之后再调用,否则会返回失败。

  • 使能LDC后,如果需要变动参数,要遵循参数变动、获取校正图像和启动坐标点查询的先后原则。如果在LDC参数变动之前就获取了矫正图像,可能导致查找到错误的坐标点。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_ldc_attr

ss_mpi_vpss_ldc_pos_query_src_to_dst

【描述】

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

【语法】

td_s32 ss_mpi_vpss_ldc_pos_query_src_to_dst(ot_vpss_grp grp, ot_vpss_chn chn, const ot_point *src_point, ot_point *dst_point);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

src_point

镜头畸变校正输入图像上需要查找映射关系的坐标点。ot_point具体描述请参考“系统控制”章节。

输入

dst_point

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

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h、ot_common_video.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 仅SS928V100支持此接口。

  • 通道号必须为VPSS物理通道。

  • 该接口仅支持OT_LDC_V1版本的LDC矫正。

  • 必须LDC使能之后再调用,否则会返回失败。

  • 使能LDC后,如果需要变动参数,要遵循参数变动、获取校正图像和启动坐标点查询的先后原则。如果在LDC参数变动之前就获取了矫正图像,可能导致查找到错误的坐标点。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_ldc_attr

ss_mpi_vpss_set_chn_spread_attr

【描述】

设置VPSS物理通道展宽属性。

【语法】

td_s32 ss_mpi_vpss_set_chn_spread_attr(ot_vpss_grp grp, ot_vpss_chn chn, const ot_spread_attr *spread_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

spread_attr

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 仅SS928V100支持此接口。

  • 通道号必须为VPSS物理通道。

  • 配置展宽属性前必须先配置对应物理通道的属性。

  • 如果物理通道非紧凑段压缩和展宽功能同时开启,会自适应关闭VPSS硬件压缩,展宽处理后压缩输出。

  • 开启展宽功能时,物理通道像素格式不能设置为semi-planar422,压缩模式仅支持非压和非紧凑段压缩。

  • 通道输出VIDEO_FORMAT_TILE_16x8格式时,不支持展宽。

  • 当开启展宽时,OT_LDC_V1的distortion_ratio取值范围只能为 [0, 500],即只支持LDC的桶形模式。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_chn_spread_attr

ss_mpi_vpss_get_chn_spread_attr

【描述】

获取VPSS物理通道展宽属性。

【语法】

td_s32 ss_mpi_vpss_get_chn_spread_attr(ot_vpss_grp grp, ot_vpss_chn chn, ot_spread_attr *spread_attr);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

spread_attr

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

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 仅SS928V100支持此接口。

  • 通道号必须为VPSS物理通道。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_spread_attr

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结构体说明。

  • 仅SS928V100支持此接口。

  • 物理通道先做缩放后做裁剪;扩展通道先做裁剪后做缩放。

  • 如果裁剪区域超出图像范围,丢弃超出部分图像,优先保证裁剪坐标与所设置的参数相同。

  • 分块处理时,通道0不支持裁剪。

  • 设置通道裁剪前必须先设置通道属性。

  • 通道AUTO模式与通道裁剪功能互斥。

  • 通道开启任意角度旋转、LDC、展宽、鱼眼时不支持通道裁剪。

【举例】

无。

【相关主题】

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

【注意】

仅SS928V100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_crop

ss_mpi_vpss_set_low_delay_attr

【描述】

设置VPSS通道低延时参数。

【语法】

td_s32 ss_mpi_vpss_set_low_delay_attr(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

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

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • Group必须已创建。

  • 具体成员取值参考ot_low_delay_info结构体说明。

  • 仅SS928V100/SS626V100支持此接口。

  • 设置低延时参数前必须先设置通道属性。

  • 扩展通道低延时不支持单buffer。

  • 低延时单buffer仅支持送VENC,送其他模块时可能由于处理不及时,导致VPSS处理失败。

  • SS626V100不支持低延时单buffer。

  • 低延时不支持Flip。

  • SS626V100低延时不支持旋转180度。

  • SS928V100低延时通道绑编码场景下,当有多个码流时,若设置编码通道优先级,此时低延时通道行数设置不能过小,建议设置128行以上,否则可能会引起非低延时通道阻塞不编码。

  • SS928V100在低延时通道绑编码场景下,编码不支持软件抽场。在低延时单buffer绑定编码场景下,编码不支持去呼吸效应,不能开启重复编码的功能,包含增帧模式、超大帧重编码、码率波动导致的重编码,用户应把最大重编码次数设置为0。

  • SS626V100 VPSS通道USER模式时,后端绑定模块如果不是VPSS/VO,则自适应关闭通道低延时;VPSS通道AUTO模式时,后端绑定模块如果不是VO,或者绑定了VO,但VO不是Single模式,则自适应关闭通道低延时。

  • 低延时行号不能小于16,不能大于图像高度;如果是物理通道且开启了通道裁剪,则不能大于裁剪高度。

  • SS928V100 OT_FRAME_INTERRUPT_EARLY模式物理通道不支持低延时,推荐使用OT_FRAME_INTERRUPT_EARLY_END模式开启低延时,以节省内存,降低通路延时。

  • SS928V100 VPSS物理通道开启低延时,再开启固定角度旋转/MosaicEx/CoverEx/OverlayEx/Corner_rectEx/Line,会自适应关闭VPSS物理通道低延时。

  • SS626V100 VPSS物理通道开启低延时,再开启鱼眼/旋转/MosaicEx/CoverEx/OverlayEx/Line,会自适应关闭VPSS物理通道低延时。

  • SS928V100 VPSS通道1输出OT_VIDEO_FORMAT_TILE_16x8时不支持开启低延时。

【举例】

无。

【相关主题】

ss_mpi_vpss_get_low_delay_attr

【描述】

获取VPSS通道低延时参数。

【语法】

td_s32 ss_mpi_vpss_get_low_delay_attr(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必须已创建。

  • 仅SS928V100/SS626V100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_low_delay_attr

ss_mpi_vpss_set_chn_align

【描述】

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

【语法】

td_s32 ss_mpi_vpss_set_chn_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必须已创建。

  • 仅SS928V100支持此接口。

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

ss_mpi_vpss_get_chn_align

【描述】

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

【语法】

td_s32 ss_mpi_vpss_get_chn_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必须已创建。

  • 仅SS928V100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_attr

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必须已创建。

  • 仅SS928V100支持此接口。

  • 具体成员取值及功能限制参考ot_vpss_ext_chn_attr结构体说明。

  • 扩展通道的图像来源属性设置为OT_EXT_CHN_SRC_TYPE_HEAD时,被绑定的物理通道不支持做Coverex/Mosaicex/Line/Overlayex/Corner_rectex处理,即使设置Coverex/Mosaicex/Line/Overlayex/Corner_rectex也不会生效。

【举例】

无。

【相关主题】

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必须已创建。

  • 仅SS928V100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_ext_chn_attr

ss_mpi_vpss_enable_quick_send

【描述】

启用VPSS快速发送模式,提前发送VO。

【语法】

td_s32 ss_mpi_vpss_enable_quick_send(ot_vpss_grp grp, ot_vpss_chn chn);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • 仅SS528V100/SS625V100/SS524V100/SS522V101/SS626V100支持此接口。

  • Group必须已创建。

  • 需在通道未使能时设置。

  • 必须先调用SYS接口ss_mpi_sys_set_schedule_mode(具体请参考“系统控制”章节)并设置参数为OT_SCHEDULE_QUICK(具体请参考“系统控制”章节),VPSS快速发送模式才会生效。

  • VPSS通道绑定VO时,VPSS快速发送模式才会生效。

  • SS528V100/SS625V100/SS524V100/SS522V101不建议做Aspect Ratio、Flip、超过15倍的缩小以及通道后处理(coverex/mosaicex/line/overlayex)功能,否则可能存在VO闪屏风险。

  • SS626V100 不建议做Aspect Ratio、Flip、超过15倍的缩小以及通道后处理(鱼眼/coverex/mosaicex/line/overlayex)功能,否则可能存在VO闪屏风险。

  • 不建议做获取通道亮度和功能,否则获取的亮度和可能不准确。

  • SS528V100/SS625V100/SS524V100/SS522V101不支持VPSS的通道旋转功能。

  • SS626V100 不建议开启通道旋转功能,旋转不生效。

  • SS626V100 开启快速发送模式,通道低延时功能不生效。

  • SS528V100/SS625V100/SS524V100/SS522V101 VPSS后16组(OT_VPSS_VGS_GRP_NO~OT_VPSS_MAX_GRP_NUM - 1)不支持快速发送模式,设置不生效。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100 建议输入图像宽度不超过3840,否则可能设置不生效。

  • 具体使用方法及场景约束请参考《MPP 媒体处理软件 V5.0 FAQ》。

【举例】

无。

【相关主题】

无。

ss_mpi_vpss_disable_quick_send

【描述】

不使能VPSS通道快速发送功能。

【语法】

td_s32 ss_mpi_vpss_disable_quick_send(ot_vpss_grp grp, ot_vpss_chn chn);

【参数】

参数名称

描述

输入/输出

grp

VPSS Group号。

取值范围:[0, OT_VPSS_MAX_GRP_NUM)

输入

chn

VPSS 通道号。

取值范围:[0, OT_VPSS_MAX_PHYS_CHN_NUM)

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参考错误码

【需求】

  • 头文件:ot_common_vpss.h、ss_mpi_vpss.h

  • 库文件:libss_mpi.a

【注意】

  • 仅SS528V100/SS625V100/SS524V100/SS522V101/SS626V100支持此接口。

  • Group必须已创建。

  • 需在通道未使能时设置。

【举例】

无。

【相关主题】

无。

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_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_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_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

【注意】

  • Group必须已创建。

  • 必须在ss_mpi_vpss_enable_chn接口之前调用。

  • 具体成员取值及功能限制参考ot_vpss_chn_cfg结构体说明。

  • 仅SS626V100支持此接口。

【举例】

无。

【相关主题】

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必须已创建。

  • 仅SS626V100支持此接口。

【举例】

无。

【相关主题】

ss_mpi_vpss_set_chn_cfg

数据类型

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

  • OT_VPSS_MAX_GRP_NUM:定义VPSS Group的最大个数。

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

  • OT_VPSS_IP_NUM:定义VPSS IP个数。

  • OT_VPSS0:定义VPSS IP0。

  • OT_VPSS1:定义VPSS IP1。

  • OT_VPSS2:定义VPSS IP2。

  • OT_VPSS_MAX_CHN_NUM:定义VPSS通道的最大个数。

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

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

  • OT_VPSS_MIN_IMG_WIDTH:定义VPSS图像的最小宽度。

  • OT_VPSS_MIN_IMG_HEIGHT:定义VPSS图像的最小高度。

  • OT_VPSS_MAX_IMG_WIDTH:定义VPSS图像的最大宽度。

  • OT_VPSS_MAX_DEI_WIDTH:定义DEI模式时VPSS图像的最大输入宽度。

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

  • OT_VPSS_MAX_IMG_HEIGHT:定义VPSS图像的最大高度。

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

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

  • ot_vpss_grp:定义VPSS组号。

  • ot_vpss_chn:定义VPSS通道号。

  • ot_vpss_sizer_info:定义尺寸筛选功能所需信息。

  • ot_vpss_crop_info:定义CROP功能所需信息。

  • ot_vpss_nr_type:NR类型枚举。

  • ot_vpss_nr_motion_mode:NR的运动矢量模式。

  • ot_vpss_nr_attr:定义VPSS GRP的3DNR属性。

  • ot_vpss_dei_mode:定义DEI的模式。

  • ot_vpss_grp_attr:定义VPSS Group属性。

  • ot_vpss_chn_attr:定义VPSS物理通道属性。

  • ot_vpss_chn_mode:定义VPSS CHN工作模式。

  • ot_vpss_ext_chn_attr:定义扩展通道属性。

  • ot_vpss_luma_result:定义VPSS 的组亮度和获取结果。

  • ot_vpss_chn_sharpen_param:定义VPSS 的通道Sharpen参数。

  • ot_vpss_nr_version:NR版本枚举。

  • ot_vpss_nrx_norm_param_v1:定义3DNR标准参数。

  • ot_vpss_nrx_param_manual_v2:定义3DNR手动参数。

  • ot_vpss_nrx_param_auto_v2:定义3DNR自动参数。

  • ot_vpss_nrx_norm_param_v2:定义3DNR标准参数。

  • ot_vpss_nrx_adv_param:定义3DNR高级参数。

  • ot_vpss_grp_nrx_param:定义3DNR参数及版本。

  • ot_vpss_grp_param:定义VPSS Group参数。

  • ot_vpss_grp_ip_type:VPSS组使用的硬件IP类型枚举。

  • ot_vpss_grp_cfg:定义VPSS 组cfg配置信息。

  • ot_vpss_mod_param:通过接口设置模块参数。

  • ot_vpss_color_range:定义色域的量化范围类型。

  • ot_vpss_ldci_gauss_coef_attr:定义LDCI的GAUSS分布属性参数。

  • ot_vpss_ldci_he_weight_attr:定义LDCI的直方图均衡与原图融合权重属性参数。

  • ot_vpss_ldci_attr:定义LDCI属性。

  • ot_vpss_chn_cfg:定义通道配置结构体。

  • ot_vpss_nrx_adv_mode:定义ot_vpss_nrx_adv_param的参数模式。

OT_VPSS_MAX_GRP_NUM

【说明】

定义VPSS Group的最大个数。

【定义】

SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:

#define OT_VPSS_MAX_GRP_NUM     256

SS928V100:

#define OT_VPSS_MAX_GRP_NUM     128

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_VGS_GRP_NO

【说明】

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

【定义】

SS528V100/SS625V100/SS524V100/SS522V101:

#define OT_VPSS_VGS_GRP_NO     240

SS928V100:

#define OT_VPSS_VGS_GRP_NO     100

SS626V100:

#define OT_VPSS_VGS_GRP_NO     256

【注意事项】

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

【相关数据类型及接口】

无。

OT_VPSS_IP_NUM

【说明】

定义VPSS IP个数。

【定义】

SS528V100/SS625V100/SS626V100:

#define OT_VPSS_IP_NUM                     3

SS524V100/SS522V101/SS928V100:

#define OT_VPSS_IP_NUM                     1

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS0

【说明】

定义VPSS IP0。

【定义】

SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:

#define OT_VPSS0                           0

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS1

【说明】

定义VPSS IP1。

【定义】

SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:

#define OT_VPSS1                           1

SS928V100:

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS2

【说明】

定义VPSS IP2。

【定义】

SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:

#define OT_VPSS2                           2

SS928V100:

无。

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_CHN_NUM

【说明】

定义VPSS通道的最大个数。

【定义】

SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:

#define OT_VPSS_MAX_CHN_NUM     4

SS928V100:

#define OT_VPSS_MAX_CHN_NUM     12

【注意事项】

  • 对于不支持扩展通道的解决方案,VPSS最大通道数为物理通道数;

  • 对于支持扩展通道的解决方案,最大通道数为物理通道数加扩展通道数。

【相关数据类型及接口】

无。

OT_VPSS_MAX_PHYS_CHN_NUM

【说明】

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

【定义】

#define OT_VPSS_MAX_PHYS_CHN_NUM     4

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_EXT_CHN_NUM

【说明】

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

【定义】

#define OT_VPSS_MAX_EXT_CHN_NUM     8

【注意事项】

仅SS928V100支持扩展通道。

【相关数据类型及接口】

无。

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_IMG_WIDTH

【说明】

定义VPSS图像的最大宽度。

【定义】

#define OT_VPSS_MAX_IMG_WIDTH    16384

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_DEI_WIDTH

【说明】

定义VPSS去隔行(DEI)时,支持的最大图像宽度。

【定义】

SS625V100/SS522V101:

#define OT_VPSS_MAX_DEI_WIDTH    960

SS524V100/SS528V100:

#define OT_VPSS_MAX_DEI_WIDTH    1920

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_SEG_COMPACT_WIDTH

【说明】

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

【定义】

SS528V100/SS625V100/SS524V100/SS522V101:

#define OT_VPSS_MAX_SEG_COMPACT_WIDTH    2688

SS928V100:

#define OT_VPSS_MAX_SEG_COMPACT_WIDTH    4096

SS626V100:

#define OT_VPSS_MAX_SEG_COMPACT_WIDTH    3072

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_IMG_HEIGHT

【说明】

定义VPSS图像的最大高度。

【定义】

#define OT_VPSS_MAX_IMG_HEIGHT   8192

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_ZOOMIN

【说明】

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

【定义】

#define OT_VPSS_MAX_ZOOMIN     16

【注意事项】

无。

【相关数据类型及接口】

无。

OT_VPSS_MAX_ZOOMOUT

【说明】

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

【定义】

#define OT_VPSS_MAX_ZOOMOUT     15

【注意事项】

  • SS528V100/SS625V100/SS524V100/SS522V101输入宽度大于2688且压缩输出时,物理通道的最大缩小倍数OT_VPSS_MAX_ZOOMOUT为10。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100缩小倍数超过OT_VPSS_MAX_ZOOMOUT的时候,则会调用VGS进行再缩小,VGS最大再缩小2倍,即最大缩小倍数为OT_VPSS_MAX_ZOOMOUT*2。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100调用VGS进行再缩小时,不支持幅形比。

【相关数据类型及接口】

无。

ot_vpss_grp

【说明】

定义VPSS组号。

【定义】

typedef   td_s32  ot_vpss_grp;

【注意事项】

  • SS528V100/SS625V100/SS524V100/SS522V101最后16组提交给VGS硬件处理。

  • SS928V100最后28个组提交给VGS硬件处理。

【相关数据类型及接口】

无。

ot_vpss_chn

【说明】

定义VPSS通道号。

【定义】

typedef   td_s32  ot_vpss_chn;

【注意事项】

无。

【相关数据类型及接口】

无。

ot_vpss_sizer_info

【说明】

定义VPSS 尺寸筛选属性。

【定义】

typedef struct {
    td_bool enable;
    ot_size  size;
} ot_vpss_sizer_info;

【成员】

成员名称

描述

enable

尺寸筛选功能开关。

size

筛选的尺寸尺寸范围

宽度:[OT_VPSS_MIN_IMG_WIDTH, OT_VPSS_MAX_IMG_WIDTH]

高度:[OT_VPSS_MIN_IMG_HEIGHT, OT_VPSS_MAX_IMG_HEIGHT]

【注意事项】

无。

【相关数据类型及接口】

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],计算完成后会进行取整操作和对齐操作。公式同样适用于纵坐标计算。

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

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

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

    • 对于grp_crop, Crop区域的宽高不能小于VPSS最小输入宽高,不能大于VPSS最大输入宽高;起始坐标不能超出最大输入宽高。

    • 对于chn_crop, Crop区域的宽高不能小于VPSS最小输出宽高,不能大于VPSS最大输出宽高;起始坐标不能超出最大输出宽高。

    • 如果Crop区域超出图像范围,则自动裁剪到图像有效范围。

  • 裁剪区域起始点不支持负坐标。

  • 裁剪区域起始点坐标和宽高要求2像素对齐。

  • SS528V100/SS625V100/SS524V100/SS522V101 VPSS 3DNR打开时,裁剪宽度自动向下4像素对齐,裁剪高度自动向下2像素对齐,当DEI开启时,裁剪宽高自动向下4像素对齐。

  • SS928V100 VPSS开启3DNR时,裁剪宽高自动向下4像素对齐。

【相关数据类型及接口】

ot_coord

ot_vpss_nr_type

【说明】

NR类型枚举。

【定义】

typedef enum {
    OT_VPSS_NR_TYPE_VIDEO_NORM = 0,
    OT_VPSS_NR_TYPE_SNAP_NORM,
    OT_VPSS_NR_TYPE_VIDEO_SPATIAL,
    OT_VPSS_NR_TYPE_VIDEO_ENHANCED,
    OT_VPSS_NR_TYPE_BUTT
} ot_vpss_nr_type;

【成员】

成员名称

描述

OT_VPSS_NR_TYPE_VIDEO_NORM

视频NR类型。

OT_VPSS_NR_TYPE_SNAP_NORM

抓拍NR类型。

OT_VPSS_NR_TYPE_VIDEO_SPATIAL

视频纯空域NR类型。

OT_VPSS_NR_TYPE_VIDEO_ENHANCED

视频NR增强类型。

【注意事项】

  • SS528V100/SS625V100/SS524V100/SS522V101只支持OT_VPSS_NR_TYPE_VIDEO_NORM类型。

  • SS928V100仅支持OT_VPSS_NR_TYPE_VIDEO_NORM、OT_VPSS_NR_TYPE_SNAP_NORM和OT_VPSS_NR_TYPE_VIDEO_SPATIAL。

  • 用户送帧处理场景,如果不是持续送画面内容连续的YUV,建议使用3DNR OT_VPSS_NR_TYPE_VIDEO_SPATIAL模式。此模式仅做空域处理,不分配参考帧内存。

  • 抓拍场景,建议使用OT_VPSS_NR_TYPE_SNAP_NORM模式。此模式仅做空域处理,不分配参考帧内存,VPSS仅处理ss_mpi_snap_trigger_pipe触发的抓拍帧,抓拍相关描述参考《抓拍 使用指南》。

  • SS928V100 3DNR设置为视频模式时,如果开启时域去噪,会导致端到端延时增加一帧时间(例如sensor时序为每秒30帧,端到端延时会增加33ms),可通过开启nr_low_delay_en模块参数消除此延时。nr_low_delay_en关闭时,关闭3DNR使能或者关闭参考帧使能,会丢弃一帧图像。

【相关数据类型及接口】

ot_vpss_nr_attr

ot_vpss_nr_motion_mode

【说明】

NR的运动矢量模式。

【定义】

typedef enum {
    OT_VPSS_NR_MOTION_MODE_NORM = 0,
    OT_VPSS_NR_MOTION_MODE_COMPENSATION,
    OT_VPSS_NR_MOTION_MODE_BUTT
} ot_vpss_nr_motion_mode;

【成员】

成员名称

描述

OT_VPSS_NR_MOTION_MODE_NORM

普通模式。

OT_VPSS_NR_MOTION_MODE_COMPENSATION

带运动补偿的运动矢量模式。

【注意事项】

SS528V100/SS625V100/SS524V100/SS522V101/SS928V100只支持OT_VPSS_NR_MOTION_MODE_NORM类型。

【相关数据类型及接口】

ot_vpss_nr_attr

ot_vpss_nr_attr

【说明】

定义VPSS GRP的3DNR属性。

【定义】

typedef struct {
    ot_vpss_nr_type     nr_type;
    ot_compress_mode    compress_mode;
    ot_vpss_nr_motion_mode   nr_motion_mode;
} ot_vpss_nr_attr;

【成员】

成员名称

描述

nr_type

NR类型。

compress_mode

重构帧压缩类型。详细请参考“系统控制”章节。

nr_motion_mode

NR运动矢量模式。

【注意事项】

  • 开3DNR时,压缩格式只支持帧压缩和非压,而且压缩方式不能动态改变。

  • nr_type是静态属性,不支持动态修改。

【相关数据类型及接口】

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             nr_en;
    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_vpss_nr_attr     nr_attr;
    ot_frame_rate_ctrl  frame_rate;
    ot_dynamic_range    dynamic_range;
} ot_vpss_grp_attr;

【成员】

成员名称

描述

nr_en

NR使能开关。

ie_en

IE使能开关。

dci_en

Dci使用开关。

buf_share_en

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

mcf_en

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

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

max_width

最大输入图像宽度。

取值范围请参考VPSS输入分辨率表。

对于SS524V100/SS528V100为动态属性;其他情况下为静态属性,创建Group时设定,不可更改。

max_height

最大输入图像高度。

取值范围请参考VPSS输入分辨率表。

对于SS524V100/SS528V100为动态属性;其他情况下为静态属性,创建Group时设定,不可更改。

max_dei_width

最大DEI图像宽度。

取值范围:[OT_VPSS_MIN_IMG_WIDTH, OT_VPSS_MAX_DEI_WIDTH]

静态属性,创建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)

nr_attr

NR属性。

frame_rate

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

dynamic_range

保留参数。

【注意事项】

  • 无效参数无需设置,不做异常参数检查。

  • max_width、max_height用于分配3DNR参考帧、重构帧buffer,分配使用的内存大小是按16对齐后的宽高来计算的。

    • 对于SS528V100/SS625V100/SS524V100/SS522V101,当VPSS分块处理时,输入图像宽度不能大于组属性最大宽度,开启3DNR时,对齐后的输入图像面积(宽*高)不能大于对齐后计算的max_width*max_height。

    • 对于SS928V100,当VPSS分块处理且开启3DNR时,输入图像宽度不能大于组属性最大宽度,开启3DNR时,buffer大小是否足够以运行时校验为准。VI_ONLINE_VPSS_ONLINE模式,组属性最大宽高必须与VPSS实际输入图像分辨率一致。

  • nr_attr中的重构帧压缩类型也是静态属性,创建Group时设定,不可更改。

  • 离线模式时,pixel_format用于分配3DNR、IE 等参考帧buffer,使能nr\ie\dei时,也表示当前组支持输入的最大像素格式(如果设置为semi-planar 420则不支持输入semi-planar 422图像);VI_ONLINE_VPSS_ONLINE模式,组属性像素格式需要设置成实际输入像素格式。

  • 组帧率控制只有VPSS工作在离线模式时,并且通过系统绑定送图像到VPSS时才会生效,通过ss_mpi_vpss_send_frame接口送图像到VPSS组帧率控制不生效。

  • 对于SS528V100/SS625V100/SS524V100/SS522V101/SS928V100如下因素会导致当前处理的图像3DNR功能暂时关闭:

    • VPSS输入图像的宽高改变

    • VPSS输入图像的压缩模式改变

    • 组裁剪宽高改变

    • 输入压缩图像时组裁剪x坐标改变

    • 分块场景,通道0输出图像宽度改变

    • 分块场景,对于支持幅形比的解决方案,通道0幅形比参数改变(模式、x坐标、宽度、高度)

    • 分块场景,通道0压缩模式改变

    • 分块场景,通道0输出压缩时 mirror使能改变

  • 当配置nr_en使能时,SS528V100/SS625V100/SS524V100/SS522V101 输入压缩图像要求宽4像素对齐,SS928V100输入压缩图像要求宽高4像素对齐。

  • SS528V100/SS625V100/SS524V100/SS522V101 3DNR开启时只支持输入OT_VIDEO_FORMAT_LINEAR,不支持OT_VIDEO_FORMAT_TILE_64x16格式。

  • DEI开启时,max_dei_width不能超过max_width,max_width不能超过OT_VPSS_MAX_DEI_WIDTH,max_dei_height不能超过4096。

    DEI开启时需要额外申请MMZ的内存,包括参考帧内存(ref)和DEI内存(dei)。DEI内存的大小会根据max_dei_width、max_dei_height设置的值来计算。

  • 输入输出复用buffer功能有以下约束或注意事项:

    • 只有USER模式的通道支持;

    • 必须开启3DNR;

    • 对于SS528V100/SS625V100/SS524V100/SS522V101,不支持宽度超过4096的图像,输入宽度超过2688的图像时不支持宽高缩小和放大不一致(即宽放大同时高缩小;或者宽缩小同时高放大),也不支持像素格式转换;当宽度超过2688时,VI需要的VB大小会比不开启复用时更大,用于计算VB大小的宽度需加一个修正值width_adjust,最终VB大小也需加一个修正值vb_adjust。具体如下:

      • 当输入图像为压缩且输出图像为非压时,width_adjust为(320), vb_adjust为(16 * (vi_height + vpss_ height)+640); 计算公式如下:(以semi-planar 420为例) vb_size = 1.5 *ALIGN(((Max(vi_width, vpss_width) + width_adjust) , 16) * Max(vi_height, vpss_ height) + 16 * vi_height )+ 2 * width_adjust;

      • 当输入图像为压缩且输出图像也为压缩时,width_adjust为(256),vb_adjust为(16 * (vi_height + vpss_ height)+512) 计算公式如下:(以semi-planar 420为例) vb_size = 1.5 *ALIGN(((Max(vi_width, vpss_width) + width_adjust) , 16) * Max(vi_height, vpss_ height) + 16 * (vi_height + vpss_ height) )+ 2 * width_adjust;

      • 当输入图像为非压且输出图像为压缩时,width_adjust为(256),vb_adjust为(16 * (vi_height + vpss_ height)+512), 计算公式如下:(以semi-planar 420为例) vb_size = 1.5 *ALIGN(( (Max(vi_width, vpss_width) + width_adjust) , 16) * Max(vi_height, vpss_ height) + 16 * vpss_ height )+ 2 * width_adjust;

      • 当输入输出均为非压图像时:width_adjust为(64),vb_adjust为(640),计算公式如下:(以semi-planar 420为例) vb_size = 1.5 *ALIGN((Max(vi_width, vpss_width) + width_adjust) , 16) * Max(vi_height, vpss_ height)+ 2 * width_adjust。

      注意:当vpss_width> vi_width,且差值不是16对齐时,width_adjust需要增加16,因此,建议此差值确保16对齐。

    • 对于SS528V100/SS625V100/SS524V100/SS522V101,如果开启组裁剪,则输出图像宽度不能大于组裁剪后的宽度,对齐后的总分辨率不能大于组裁剪后的总分辨率;

    • 开启flip的通道不支持复用buffer;

    • 开启幅形比的通道,不支持复用buffer;

    • 对于SS528V100/SS625V100/SS524V100/SS522V101,输入semi-planar 420,通道输出semi-planar 422时,不支持复用buffer;

    • 对于SS528V100/SS625V100/SS524V100/SS522V101,压缩模式与输入图像压缩模式不同或有缩放时,输入VB需要按输入输出压缩模式占用VB中大的值来申请;

    • 对于SS528V100/SS625V100/SS524V100/SS522V101,旋转180度的通道不支持复用buffer;

    • 紧凑段压缩时不支持复用buffer。

    • SS528V100/SS625V100/SS524V100/SS522V101,用户送图像场景下不支持输出图像分辨率大于输入图像分辨率。

    • 用户送图像的VB 每帧都需重写输入数据,否则会因为输入数据被重复改写导致图像异常。

    • 多个组绑定同一个输入源时不支持复用buffer。

    • VPSS和其它模块一起绑定同一个输入源时不支持复用buffer。

    • 使能此功能后,调用获取组亮度和接口获取的亮度和可能不准确,建议不要获取组亮度和。

    • VI 插入用户图片场景下,由于用户图片VB 是一块固定的VB,如果VPSS 使能此功能后会导致用户图片VB 被频繁改写,此时VPSS 组不要开启Crop、IE 功能,并且输出通道不要开启压缩、缩放等。

    • 对于SS528V100/SS625V100/SS524V100/SS522V101,通道的格式,压缩发生变化,放大时,如果需要申请的VB发生变化,则在切换过程中会有几帧无法共用而导致丢帧。

    • 对于SS528V100/SS625V100/SS524V100/SS522V101,针对输入输出图像占用VB大小不同(如有缩放、压缩转换等)、输入图像宽度大于2688等情况,前端输入模块需要为VI,否则可能会出现输出VB大小不够而复用失败。

    • 输入输出复用buffer会对输入图像进行改写,场景上需要考虑改写影响。

    • SS928V100仅离线模式物理通道支持复用buffer。

    • SS928V100 只有在输入输出分辨率、压缩模式、像素格式、视频格式一致时才支持复用buffer。

    • SS928V100开启mcf_en、组裁剪、分块处理、同时开启输入输出低延时、低延时单buffer、flip不支持复用buffer。

  • 开启输入输出复用buffer功能后,除3DNR外,如上述约束条件相关参数改变,VPSS会自适应开关复用buffer功能。

  • NR/DCI/IE/DEI 等属性开关打开,会分配属性功能需要的内存,当关闭属性开关时,相应的内存会被释放。

  • SS524V100/SS528V100可通过ss_mpi_vpss_set_grp_attr接口动态设置max_width和max_height,若nr/dei/ie等功能在修改最大宽高之前已经开启,那么会先释放掉已经申请的参考帧内存(ref)与DEI内存(dei),再根据当前设置属性重新分配。

  • SS928V100不支持IE、DEI、DCI功能,相关参数无效。

  • SS928V100仅离线模式支持mcf_en设置为TD_TRUE。

  • SS928V100 mcf_en使能后,仅支持以下接口:

    ss_mpi_vpss_create_grp

    ss_mpi_vpss_destroy_grp

    ss_mpi_vpss_start_grp

    ss_mpi_vpss_stop_grp

    ss_mpi_vpss_reset_grp

    ss_mpi_vpss_get_grp_attr

    ss_mpi_vpss_set_grp_attr

    ss_mpi_vpss_get_grp_param

    ss_mpi_vpss_set_grp_param

    ss_mpi_vpss_attach_vb_pool

    ss_mpi_vpss_detach_vb_pool

    ss_mpi_vpss_set_mod_param

    ss_mpi_vpss_get_mod_param

    ss_mpi_vpss_get_chn_fd

    ss_mpi_vpss_close_fd

  • SS626V100不支持NR、IE、DEI以及输入输出复用buffer功能,相关参数无效(max_width, max_height, max_dei_width, max_dei_height, pixel_format, buf_share_chn, nr_attr等),不做异常参数检查。

【相关数据类及接口】

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

取值范围请见VPSS物理通道输出分辨率表。

height

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

取值范围请见VPSS物理通道输出分辨率表。

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模式下通道帧率控制不生效。

  • 目标帧率不能大于源帧率。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100通道紧凑段压缩写出且接收端不是编码时,不支持mirror/flip。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100通道行压缩写出时,不支持Mirror。

  • 通道低延时与flip不能同时开启。

  • 幅形比处理时,先做缩放,再加黑边,缩放比例越大,处理时间越长,可能会导致帧率下降。

  • 支持通过设置通道输出像素格式实现UV反转。

  • SS528V100/SS625V100通道为紧凑段压缩写出时不支持CoverEx、OverlayEx、MosaicEx、Line和亮度和统计。

  • SS524V100/SS522V101/SS626V100通道为紧凑段压缩写出时不支持CoverEx、OverlayEx、MosaicEx和Line。

  • SS928V100通道为紧凑段压缩写出时不支持CoverEx、OverlayEx、MosaicEx、Line和Corner_rectEx。

  • AUTO模式如query到不支持的压缩时会强制改为非压输出。

  • chn_mode为AUTO模式时,width、height、aspect_ratio、compress_mode、pixel_format、frame_rate、video_format设置不生效,相应设置由后端模块确定,depth不生效,图像不会进入通道队列。

  • SS928V100不支持border和幅形比。

  • SS528V100/SS625V100/SS524V100/SS522V101当前输入宽超过2688且压缩输出时,不支持mirror和幅形比同时开启。

  • SS626V100当前输入宽超过3840且压缩输出时,不支持mirror和幅形比同时开启。

  • 幅形比参数在通道属性中设置。只有在VPSS通道设置为USER模式时才生效,AUTO模式下幅形比参数由VO设置。

    • 设定为OT_ASPECT_RATIO_MANUAL模式时,用户手动设置图像的起始坐标和宽高,VPSS会根据用户的设置来输出图像并添加黑边。图像显示的区域不允许超过输出图像的宽高。

    • 设定为OT_ASPECT_RATIO_AUTO模式时,VPSS会保持输出画面的宽高比和输入宽高比一致,自动在画面上下或者左右加上黑边。

  • 保留参数无需设置,不做异常参数检查。

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

  • 由于缩放算法本身的限制,部分特殊图像(如黑白条纹)放大后,边缘可能会出现像素复制的情况,此时可使用ss_mpi_vpss_set_chn_scale_coef_type接口设置双线性缩放系数来削弱此影响。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100 VPSS物理通道最大支持30倍缩小16倍放大。

  • SS928V100 VPSS在线模式:

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

    • 输出OT_VIDEO_FORMAT_TILE_16x8格式时最大支持3倍缩小。

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

    • 输出linear格式时最大支持30倍缩小,最大支持16倍放大,分块场景通道0开启压缩时,最大支持缩小28倍;

    • 输出OT_VIDEO_FORMAT_TILE_16x8格式时最大支持3倍缩小2倍放大。

  • SS928V100 VPSS工作在OT_VI_OFFLINE_VPSS_ONLINE模式分块处理时,通道0不支持水平缩放,不支持mirror和压缩同时开启。

  • SS528V100/SS625V100/SS524V100/SS522V101/SS626V100 VPSS通道视频格式为无效参数。

  • SS928V100 VPSS通道视频格式支持OT_VIDEO_FORMAT_LINEAR和OT_VIDEO_FORMAT_TILE_16x8,组号在\OT_VPSS_VGS_GRP_NO, OT_VPSS_MAX_GRP_NUM - 1]范围内的组不支持输出OT_VIDEO_FORMAT_TILE_16x8。分块处理时不支持输出OT_VIDEO_FORMAT_TILE_16x8。

  • SS928V100 VPSS通道1开启低延时不支持输出OT_VIDEO_FORMAT_TILE_16x8。

  • SS928V100 VPSS通道1输出OT_VIDEO_FORMAT_TILE_16x8时,像素格式只能设置为OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420。

  • SS928V100 VPSS通道1输出OT_VIDEO_FORMAT_TILE_16x8时,不支持CoverEx、OverlayEx、MosaicEx、Line、Corner_rectEx以及获取通道亮度和。

  • VPSS工作在OT_VI_ONLINE_VPSS_ONLINE模式时,不支持放大。

  • SS928V100 VPSS工作在OT_FRAME_INTERRUPT_EARLY模式时,通道0压缩和flip不能同时开启。

  • 通道AUTO模式与通道裁剪功能互斥。

  • 物理通道开启了LDC/ROTATION_FREE/SPREAD功能后,不支持动态改变通道宽高属性。

【相关数据类型及接口】

ss_mpi_vpss_set_chn_attr

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_USER

用户设置模式。

OT_VPSS_CHN_MODE_AUTO

自动模式。

【注意事项】

  • 通道设置为AUTO模式时,支持与VO、VENC或PCIV模块绑定。VO设置为Single模式时,也支持,但不推荐VO为Single模式下使用AUTO模式。

  • 通道设置为AUTO模式时,只能与一个接收者绑定。

  • 只有工作在离线模式下,通道才支持AUTO模式。

【相关数据类型及接口】

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

取值范围请见VPSS扩展通道输出分辨率表。

height

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

取值范围请见VPSS扩展通道输出分辨率表。

depth

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

取值范围:[0, 8]

video_format

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

dynamic_range

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

pixel_format

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

compress_mode

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

frame_rate

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

【注意事项】

  • 源帧率与目标帧率都为-1,则不进行帧率控制。

  • 目标帧率不能大于源帧率。

  • 支持通过设置通道输出像素格式实现UV反转。

  • 支持通过设置通道输出像素格式实现输出OT_PIXEL_FORMAT_VY1UY0_PACKAGE_422格式的图像。

  • 扩展通道最大支持30倍缩小,最大支持16倍放大

  • 绑定源物理通道必须合法,范围为[0, OT_VPSS_MAX_PHYS_CHN_NUM)。

  • 绑定源物理通道必须工作在USER模式。

【相关数据类型及接口】

ss_mpi_vpss_set_ext_chn_attr

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_nr_version

【说明】

3DNR版本枚举。

【定义】

typedef enum {
    OT_VPSS_NR_V1 = 1,
    OT_VPSS_NR_V2 = 2,
    OT_VPSS_NR_BUTT
} ot_vpss_nr_version;

【成员】

对于3DNR接口:

成员名称

描述

OT_VPSS_NR_V1

用于SS528V100/SS625V100/SS524V100/SS522V101的NR标准参数。

OT_VPSS_NR_V2

用于SS928V100的NR标准参数。

【注意事项】

无。

【相关数据类型及接口】

ot_vpss_grp_param

ot_vpss_nrx_norm_param_v1

【说明】

定义SS528V100/SS625V100/SS524V100/SS522V101的3DNR标准参数。

【定义】

typedef struct {
    td_u32                   sf_strength;
    td_u32                   tf_strength;
    td_u32                   csf_strength;
    td_u32                   ctf_strength;
    td_u32                   cvbs_strength;
} ot_vpss_nrx_norm_param_v1;

【成员】

成员名称

描述

sf_strength

亮度空域去噪强度。

取值范围:[0, 255]

用以设定Vpss空域亮度去噪强度。本值设定越高则画面噪声越小,但是画面锐利程度会下降,建议默认值为24。本值设定越低则画面噪声变大。

tf_strength

亮度时域去噪强度

取值范围:[0, 63]

用以设定Vpss时域亮度去噪强度。本值设定越高则画面噪声越小,但是运动区域的拖尾会变严重,建议默认值为12。

csf_strength

色度空域去噪强度。

取值范围:[0, 255]

用以设定Vpss空域色度去噪强度。本值设定越高则画面中残留的色噪越轻微,但是同样画面的锐利程度会有一定损失,建议默认值为12。

ctf_strength

色度时域去噪强度。

取值范围:[0, 32]

用以设定Vpss时域色度去噪强度。本值设定越高则画面中残路的色噪越轻微,但在运动区域会造成较严重的色彩拖尾。建议默认值为16。

cvbs_strength

处理输入时产生亮串色现象的能力强度。

取值范围:[0, 32]

用以设定处理CVBS输入时画面产生的亮串色现象的能力的强度。该值设定越高则亮串色处理能力越强,但是对AHD画面会在强边缘处造成比较严重的色彩残留。建议默认值设置为24。

【注意事项】

  • 去噪相关的四项参数的值越大,则画面越安静,tf_strength 对平坦区域的去噪效果非常明显。建议如果出现了比较强的运动拖尾和画面残影时,需要将时域相关参数降低(tf_strength 以及 ctf_strength)。

  • sf_strength (后简称 SFS)直接影响画面运动区域的噪声表现 tf_strength(后简称 TFS)直接影响画面静止区域的噪声表现,例如大片平坦区域的噪声表现。

    • SFS 强度过高会导致整体画面边缘模糊,细节丢失。而 TFS 强度过高会导致运动时的拖尾明显。调试时建议策略是优先提高 SFS,如果画面细节丢失严重而静止区域的噪声依然无法有效消除,则在保清晰度的基础上适当增强 TFS 效果。以达到拖尾和画面安静程度平衡为最佳。

    • csf_strength(简称CSFS)与ctf_strength(简称CTFS)两个参数用来调节去色噪能力。调试策略为优先调节CSFS强度,如果CSFS无法抑制色噪则调节CTFS,以画面平坦区域色噪较安静并无明显颜色拖尾残留为最佳

  • cvbs_strength 相对功能比较独立。cvbs_strength 用以处理标清输入时产生的亮色串 扰现象。处理强度为设定越高则亮串色处理能力越强。但是在高清输入时会在画面的强边缘处造成比较严重的色彩残留。因此在高清输入时如果调整 CTFS 为最小值时仍然会有明显残留,则请调节该参数。

【相关数据类型及接口】

ot_vpss_grp_param

ot_vpss_nrx_param_manual_v2

【说明】

定义SS928V100的3DNR手动模式参数。

【定义】

typedef struct {
    ot_vpss_nrx_v2 nrx_param;
} ot_vpss_nrx_param_manual_v2;

【成员】

成员名称

描述

nrx_manual

3DNR接口的标准参数。ot_vpss_nrx_v2的定义见《SS928V100/SS927V100 3DNR参数配置说明》。

【注意事项】

此结构体仅用于SS928V100。

【相关数据类型及接口】

ot_vpss_nrx_norm_param_v2

ot_vpss_nrx_param_auto_v2

【说明】

定义SS928V100的3DNR自动模式参数。

【定义】

typedef struct {
    td_u32 param_num;
    td_u32 ATTRIBUTE *iso;
    ot_vpss_nrx_v2 ATTRIBUTE *nrx_param;
} ot_vpss_nrx_param_auto_v2;

【成员】

成员名称

描述

param_num

NR自动模式配置标准参数个数。

取值范围:[1, 16]

iso

NR自动模式ISO数组指针。

ISO值的取值范围:[100, 3276800],且数组中的ISO值是递增的。

设置时,表示存放iso参数的内存指针。

获取时,表示接收iso参数的内存指针,该内存大小应该大于等于sizeof(td_u32)*param_num(注意:这里param_num表示设置时的param_num)。

nrx_param

NR自动模式标准参数数组指针。ot_vpss_nrx_v2的定义见《SS928V100/SS927V100 3DNR参数配置说明》。

设置时,表示存放nrx_param参数的内存指针。

获取时,表示接收nrx_param参数的内存指针,该内存大小应该大于等于sizeof(ot_vpss_nrx_v2)*param_num(注意:这里param_num表示设置时的param_num)。

【注意事项】

  • 此结构体仅用于SS928V100。

  • iso和nrx_param指向的数组成员个数都必须与param_num一致。

  • iso与nrx_param存在一一对应关系。param_num、ISO值与nrx_param参数为动态,用户可根据需求自由配置,其中最大组合数目不得大于16,ISO值必须从小到大配置,范围为[100, 3276800]。

  • 如图像实际ISO值超出用户配置的ISO边界值,按边界值计算。

  • 使用自动模式时,用户必须根据NR自动模式配置标准参数的个数申请相应大小的内存。

  • 业务运行过程中,如果VPSS获取的ISO值处于某一区间内,实际配置的NR参数为该区间左值对应的标准参数与右值对应的标准参数进行差值运算所得。

【相关数据类型及接口】

ot_vpss_nrx_norm_param_v2

ot_vpss_nrx_norm_param_v2

【说明】

定义SS928V100的3DNR标准参数。

【定义】

typedef struct {
    ot_op_mode op_mode;
    ot_vpss_nrx_param_manual_v2 nrx_manual;
    ot_vpss_nrx_param_auto_v2 nrx_auto;
} ot_vpss_nrx_norm_param_v2;

【成员】

成员名称

描述

op_mode

NR选择模式。详细请参考“系统控制”章节。

nrx_manual

NR手动模式的标准参数。

nrx_auto

NR自动模式的标准参数。

【注意事项】

此结构体仅用于SS928V100。

【相关数据类型及接口】

ot_vpss_grp_param

ot_vpss_nrx_adv_param

【说明】

定义SS528V100/SS625V100/SS524V100/SS522V101的3DNR高级设置参数。

【定义】

适用于SS625V100/SS522V101:

typedef struct {
    td_u32                   mdz;
    td_u32                   hard_tf_strength;
    td_u32                   edz;
    td_u32                   weak_tf_strength;
} ot_vpss_nrx_adv_param;

适用于SS524V100/SS528V100:

typedef struct {
    ot_vpss_nrx_adv_mode     mode; /* V0/V1模式选择 */
    td_u32                   mdz;
    td_u32                   hard_tf_strength;
    td_u32                   edz;
    td_u32                   weak_tf_strength;
    td_u32                   sf_ex;  /* V1参数 */
    td_u32                   mdz_ex;  /* V1参数 */
    td_u32                   eg_prot_ex0;  /* V1参数 */
    td_u32                   eg_prot_ex1;  /* V1参数 */
    td_u32                   eg_prot;  /* V1参数 */
    td_u32                   c_eg_prot;  /* V1参数 */
    td_u32                   cmad;  /* V1参数 */
} ot_vpss_nrx_adv_param;

【成员】

成员名称

描述

mdz

取值范围:[0, 63]

用以表示算法判断区域是否运动的阈值。算法认为低于该阈值的区域都是静止的,高于该阈值的画面都是运动的。因此该值设定越高,则画面被判断为静止的可能性越大,则时域去噪能力会越强。画面会变得比较安静,但是运动拖尾会有显著提高。建议默认值为6。

hard_tf_strength

取值范围:[0, 96]

用以表示强去噪通道中时域滤波结果和空域滤波结果的混合比重。该值越大则结果越偏向时域滤波结果,平坦区域的噪声变小,但是运动拖尾严重。该值越小则结果越偏向空域滤波结果,静止区域以及画面细节损失严重。建议默认值为52。

另由于强去噪通道的结果会用于编码保存,因此如果强去噪通道的去噪强度较弱(即过分选择偏向空域滤波结果),会给编码器造成一定的编码压力,并使得码率增大。

edz

取值范围:[0, 63]

用以表示算法判断区域是否是强边缘的阈值。算法认低于该阈值的区域为弱边缘,而高于该阈值的区域为强边缘。对强边缘区域算法会减弱时域去噪效果增强空域去噪效果。因此该值设定越高,则画面被判断为弱边缘的可能性越大,此时空域去噪能力会越强。设定越小则时域去噪能力会提高,但是画面拖尾、运动模糊等副作用会体现。建议默认值设定为63,且不建议客户修改。

weak_tf_strength

取值范围:[0, 63]

用以表示弱去噪通道中时域滤波结果和空域滤波结果的混合比重。该值越大则结果越偏向时域滤波结果,平坦区域的噪声变小,但是运动拖尾严重。该值越小则结果越偏向空域滤波结果,静止区域以及画面细节损失严重。建议默认值为36。

weak_tf_strength的值不能大于hard_tf_strength的值。

mode

OT_VPSS_NRX_ADV_MODE_V0:使用mdz,hard_tf_strength,edz,weak_tf_strength等参数,V1参数不生效;

OT_VPSS_NRX_ADV_MODE_V1:使用全部参数。

sf_ex

取值范围:[0, 255]

附加空域滤波器强度。

mdz_ex

取值范围:[0, 63]

前景背景分割阈值,用于确定接口egx0和egx1的作用范围。值越大,越多区域判断成背景。

eg_prot_ex0

取值范围:[0, 16]

附加空域滤波器保边强度,作用于前景。值越大越保边,但同时噪声会增加。

eg_prot_ex1

取值范围:[0, 16]

附加空域滤波器保边强度,作用于背景。值越大越保边,但同时噪声会增加。

eg_prot

取值范围:[0, 63]

空域滤波器的保边强度,配合sf接口使用。

c_eg_prot

取值范围:[0, 63]

色度防拖尾系数,调大可以抑制色度的拖尾,配合cmdz调试。

cmad

取值范围:[0, 63]

色度动静判断阈值,值越大色噪越安静,但有拖尾的风险,需配合c_eg_prot接口调试。

【注意事项】

  • hard_tf_strength(简称 HTFR)与weak_tf_strength (简称 WTFR)分别表示强去噪通道以及弱去噪通道的时域去噪结果和空域去噪结果的融合比例。使用时需根据当前应用场景进行调节。该参数设定越大,则画面拖尾越严重,但去噪效果越好。SS528V100/SS625V100/SS524V100/SS522V101不支持weak_tf_strength,设置weak_tf_strength不会生效。

  • 当前强去噪通道结果主要用于编码输出。可以使得编码的码率得到有效控制。而弱去噪通道结果主要用于预览画面输出,考虑画面整体图像质量优先。因此强去噪通道的值一般设定会比弱去噪通道的值大。两者设定相等时画面图像质量表现相当。

  • mdz 用以判断画面是否为运动判决。算法会认定高于该阈值的判决均为运动区域,主要采用空域滤波结果,而低于该阈值的判决为静止区域,主要采用时域滤波结果。因此如果在确定了之前的强度值的前提下,画面拖尾不重但是静止区域的噪声依然不能令人满意,可以考虑适当提高该参数 以无明显拖尾为最佳。

  • edz 用以判断画面是否为强边缘。高于该阈值的判决为边缘区域,此时该区域的空域去噪能力会有提高,画面会变模糊。该值如果设定过小会在强边缘区域出现较明显的锯齿,且时域去噪造成的拖尾也会增加。因此建议设定值为63,无需做太大改变。

【相关数据类型及接口】

ot_vpss_grp_nrx_param

【说明】

定义3DNR标准参数属性。

【定义】

typedef struct {
    ot_vpss_nr_version        nr_version;
    union {
        ot_vpss_nrx_norm_param_v1  nrx_norm_param_v1;
        ot_vpss_nrx_norm_param_v2  nrx_norm_param_v2;
    };
} ot_vpss_grp_nrx_param;

【成员】

成员名称

描述

nr_version

NR接口版本枚举。

nrx_norm_param_v1

SS528V100/SS625V100/SS524V100/SS522V101的NR标准参数。

nrx_norm_param_v2

SS928V100的NR标准参数。

【注意事项】

无。

【相关数据类型及接口】

ot_vpss_grp_param

ot_vpss_grp_param

【说明】

定义VPSS组属性,包括3DNR参数。

【定义】

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

【成员】

成员名称

描述

contrast

取值范围:[0, 63]

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

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

ie_strength

取值范围:[0, 63]

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

nrx_param

3DNR标准参数。

【注意事项】

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

  • contrast和ie_strength对于SS928V100无效,不做异常检查。

  • ie_strength和nrx_param对于SS626V100无效,不做异常检查。

【相关数据类型及接口】

ot_vpss_grp_ip_type

【说明】

VPSS组使用的硬件IP类型枚举。

【定义】

typedef enum {
    OT_VPSS_GRP_IP_TYPE_VPSS = 0,
    OT_VPSS_GRP_IP_TYPE_VGS,
    OT_VPSS_GRP_IP_TYPE_BUTT
} ot_vpss_grp_ip_type;

【成员】

成员名称

描述

OT_VPSS_GRP_IP_TYPE_VPSS

VPSS IP类型。

OT_VPSS_GRP_IP_TYPE_VGS

VGS IP类型。

【注意事项】

  • 仅SS626V100支持设置IP类型。

  • 设置为VGS IP的组不支持DCI,Mosaic,Overlay,LTI/CTI。支持Crop,缩放,Cover,AR,Border,mirror,flip,且只能输出一个通道。

  • 设置为VGS IP的组使能的第一个物理通道作为输出通道,其他物理通道使能时则会在logmpp报错。

  • 设置为VGS IP的组只做Crop和缩放相关的任务时,所有VGS IP支持,否则只有VGS IP0支持。

  • 使用ss_mpi_vpss_set_grp_cfg接口设置IP类型时,接口内部会等待上一帧完成,以避免同一个软件组前后帧提交到不同IP时,帧出现乱序。

【相关数据类型及接口】

ot_vpss_grp_cfg

【说明】

定义VPSS 组cfg配置信息。

【定义】

typedef struct {
    ot_vpss_grp_ip_type ip_type;
} ot_vpss_grp_cfg;

【成员】

成员名称

描述

ip_type

VPSS组处理使用的硬件ip类型。默认值为OT_VPSS_GRP_IP_TYPE_VPSS 。

【注意事项】

无。

【相关数据类型及接口】

ot_vpss_mod_param

【说明】

通过接口设置模块参数。

【定义】

typedef struct {
    td_u32                  split_node_num;
    td_bool                 coverex_ratio_support;
    td_bool                 nr_low_delay_en;
    td_bool                 multi_task_one_grp_en;
    td_bool                 chain_weight_threshold;
    td_bool                 output_low_delay_support;
    td_bool                 cal_cost_time_en;
} ot_vpss_mod_param;

【成员】

成员名称

描述

split_node_num

分块节点数量。取值范围:[1, 16],默认值为3。无需分块时可设置为1,以节省模板内存。

coverex_ratio_support

是否支持Coverex相对坐标。默认值为TD_FALSE。如果Coverex需要支持相对坐标,使能此开关以支持。否则,Coverex中设置相对坐标无效。Coverex相对坐标只支持矩形实心Cover。

nr_low_delay_en

3DNR低延时使能。默认值为TD_FALSE。

  • 赋值为TD_FALSE时,开启3DNR视频模式时VPSS输出图像会增加一帧延时,去噪效果最好;
  • 赋值为TD_TRUE时,开启3DNR视频模式时VPSS输出图像延时最低,去噪效果稍差。

    注:nr_low_delay_en值为TD_TRUE时,3DNR模块中的N3b参数不生效,仅N3a参数生效;值为TD_FALSE 时,3DNR模块中的N3a和N3b都生效。

multi_task_one_grp_en

组的多任务开关。默认值为TD_FALSE。

  • 赋值为TD_FALSE时,关闭组的多任务功能,组内的任务串行提交给硬件。
  • 赋值为TD_TRUE时,开启组的多任务功能,组内的任务并行提交给硬件(仅在一定情况下,比如单个组的性能超过单个IP的性能)。

chain_weight_threshold

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

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

output_low_delay_support

VPSS是否支持输出低延时开关。默认值为TD_TRUE。

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

cal_cost_time_en

VPSS proc统计处理时间数据开关。默认为TD_TRUE。

涉及proc信息:cost_time、max_cost_time、proc_time、中断工作时间等。在grp路数多的场景关闭时间统计可降低CPU消耗。

【注意事项】

  • SS528V100/SS625V100/SS524V100/SS522V101分块节点数量可按如下估算:

    • 非压缩输出时:

      split_node_num = input_width_align / 2580

      input_width_align为输入图像宽度按2580向上对齐后的计算值。即:

      input_width_align = OT_ALIGN_UP(input_width, 2580)

    • 压缩输出时:

      需要的节点数量由输入输出宽度共同决定,可按如下计算估算最大需要节点数(min,max)。

      split_node_num [min] = input_width_align / 2580。

      split_node_num [max] = (2 * input_width_align / 2580) – 1。

      • 如输入宽度为3840时,split_node_nun需要数量范围[2, 2],具体取值由输出宽度变化而变化。

      • 如输入宽度为5120时,split_node_num需要数量范围[2, 3],具体取值由输出宽度变化而变化。

  • SS928V100分块节点数量可按如下公式估算:split_node_num = 2 * input_width / 3712 + 1。

  • SS626V100分块节点数量可按如下估算:

    • 非压缩输出时:

      split_node_num = input_width_align / 3328

      input_width_align为输入图像宽度按3328向上对齐后的计算值。即:

      input_width_align = align_up(input_width, 3328)

    • 压缩输出时:

      需要的节点数量由输入输出宽度共同决定,可按如下计算估算最大需要节点数(min,max)。

      split_node_num [min] = input_width_align / 3328。

      split_node_num [max] = (2 * input_width_align / 3328) – 1。

  • 分块数量不够时,请通过ss_mpi_vpss_set_mod_param接口设置合理的分块节点数量。

  • nr_low_delay_en仅对SS928V100有效,其他解决方案不做异常检查。

  • 当SS524V100/SS528V100开启DEI,且宽度超过960时,需要进行分块,分块节点数量可按如下估算:split_node_num = input_width / 832 + 1。

【相关数据类型及接口】

ot_vpss_color_range

【说明】

定义色域的量化范围类型。

【定义】

typedef enum {
    OT_VPSS_COLOR_RANGE_LIMITED = 0,
    OT_VPSS_COLOR_RANGE_FULL,
    OT_VPSS_COLOR_RANGE_BUTT
} ot_vpss_color_range;

【成员】

成员名称

描述

OT_VPSS_COLOR_RANGE_LIMITED

YUV色域的量化范围是16~235。

OT_VPSS_COLOR_RANGE_FULL

YUV色域的量化范围是0~255。

【注意事项】

无。

【相关数据类及接口】

ot_vpss_ldci_attr

ot_vpss_ldci_gauss_coef_attr

【说明】

定义LDCI的GAUSS分布属性参数。

【定义】

typedef struct {
    td_u8 weight;
    td_u8 sigma;
    td_u8 mean;
} ot_vpss_ldci_gauss_coef_attr;

【成员】

成员名称

描述

weight

取值范围:[0, 255]

Gauss分布曲线权重。

sigma

取值范围:[1, 255]

Gauss分布曲线标准差。

mean

取值范围:[0, 255]

Gauss分布曲线数学期望。

【注意事项】

无。

【相关数据类型及接口】

ot_vpss_ldci_he_weight_attr

【说明】

定义LDCI的直方图均衡与原图融合权重属性参数。

【定义】

typedef struct {
    ot_vpss_ldci_gauss_coef_attr positive_attr;
    ot_vpss_ldci_gauss_coef_attr negative_attr;
} ot_vpss_ldci_he_weight_attr;

【成员】

成员名称

描述

positive_attr

直方图均衡结果与原图融合权重曲线,可根据原图亮度控制提亮程度;曲线呈高斯分布,横坐标为亮度。建议weight默认值为40,sigma默认值为72,mean默认值为0。

negative_attr

直方图均衡结果与原图融合权重曲线,可根据原图亮度控制减暗程度;曲线呈高斯分布,横坐标为亮度。建议weight默认值为45,sigma默认值为80,mean默认值为128。

【注意事项】

无。

【相关数据类型及接口】

ot_vpss_ldci_attr

【说明】

定义LDCI属性。

【定义】

typedef struct {
    td_bool enable;
    ot_vpss_color_range color_range;
    td_u16 black_ctrl_strength;
    ot_vpss_ldci_he_weight_attr he_weight_attr;
} ot_vpss_ldci_attr;

【成员】

成员名称

描述

enable

LDCI使能开关。默认关闭。

color_range

输入YUV图像的量化范围。默认值是OT_VPSS_COLOR_RANGE_LIMITED;如果输入YUV图像的量化范围是full range,应该修改该变量值为OT_VPSS_COLOR_RANGE_FULL。

black_ctrl_strength

取值范围:[0, 511]

暗区增益控制强度,用于抑制暗区噪声。建议默认值为50。

he_weight_attr

控制直方图均衡结果与原图融合权重曲线,可根据原图亮度分开控制提亮减暗程度;曲线呈高斯分布,横坐标为亮度。

【注意事项】

无。

【相关数据类型及接口】

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消耗。

【注意事项】

无。

【相关数据类型及接口】

ot_vpss_nrx_adv_mode

【说明】

定义ot_vpss_nrx_adv_param的参数模式。

【定义】

typedef enum {
    OT_VPSS_NRX_ADV_MODE_V0 = 0,
    OT_VPSS_NRX_ADV_MODE_V1 = 1,
    OT_VPSS_NRX_ADV_MODE_BUTT
} ot_vpss_nrx_adv_mode;

【成员】

成员名称

描述

OT_VPSS_NRX_ADV_MODE_V0

ot_vpss_nrx_adv_param使用mdz,hard_tf_strength,edz,weak_tf_strength等参数,新增参数不生效。

OT_VPSS_NRX_ADV_MODE_V1

ot_vpss_nrx_adv_param使用全部参数。

【注意事项】

仅SS524V100/SS528V100生效。

【相关数据类型及接口】

错误码

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

表 1 VPSS API错误码

错误代码

宏定义

描述

0xa0078001

OT_ERR_VPSS_INVALID_DEV_ID

VPSS Group号无效

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块大小不够