在VPSS之前,是通过VI模块从sensor获取数据并处理,这部分之前跑通过例程,然后我现在希望跑通文件域8k编码,无需VI处理,就跳过了,VO模块也一样,我只要编完的码流,不需要显示到设备,所以也跳过了,就从VPSS继续。
VPSS(Video Process Sub-System)是视频处理子系统,支持的具体图像处理功能包括FRC(Frame Rate Control)、CROP、Sharpen、3DNR、Scale、像素格式转换、LDC、Spread、固定角度旋转、任意角度旋转、鱼眼校正、Cover/Coverex、Overlayex、Mosaic、Mirror/Flip、HDR、Aspect Ratio、压缩解压等。
基本概念
下面是对VPSS中一些基本概念的介绍:
组(GROUP):VPSS对用户提供组的概念,各GROUP分时复用VPSS硬件,硬件依次处理各个组提交的任务。
通道(CHANNEL): 通道分为物理通道和扩展通道两种。VPSS硬件提供多个物理通道,每个通道具有缩放、裁剪等功能。扩展通道具备裁剪、缩放功能,它通过绑定物理通道,将物理通道输出作为自己的输入,把图像裁剪、缩放成用户设置的目标分辨率输出。
PIPE:VPSS组的管道,取值只能为0。
FRC:帧率控制,分为组帧率控制和通道帧率控制两种。组帧率控制用于控制各GROUP对输入图像的处理,通道帧率控制用于控制各个物理通道和扩展通道图像的处理。
CROP:裁剪,分为组裁剪、物理通道裁剪以及扩展通道裁剪三种。组裁剪,VPSS 对输入图像进行裁剪;物理通道裁剪,VPSS 对各个物理通道的输出图像进行裁剪;扩展通道裁剪,VPSS 调用 VGS 对扩展通道的输出图像进行裁剪。
Sharpen:锐化,对图像进行锐化处理。仅Hi3559AV100、Hi3519AV100支持。
像素格式转换:支持输入输出图像的数据格式转换,其中3559AV100仅离线模式下支持semi-planar 422 转 semi-planar 420。
Scale:缩放,物理通道水平、垂直最大支持15倍的缩小和16倍的放大;扩展通道水平、垂直最大支持30倍的缩小和16倍的放大。
Mirror/Flip:Mirror 即水平镜像,Flip 即上下翻转,可使用 Mirror+Flip 实现 180°旋转。
Mosaic:对VPSS输出的图像填充马赛克块,Hi3559AV100ES/Hi3559AV100通道0和通道1共用一个Mosaic逻辑,马赛克效果相同,使用时只需将REGION属性绑定到通道0;通道2和通道3共用一个Mosaic逻辑,马赛克效果相同,使用时只需将REGION属性绑定到通道 2;其他芯片所有通道共用一个Mosaic逻辑,马赛克效果相同, 使用时只需将 REGION属性绑定到通道0。
Cover:视频遮挡区域,对VPSS的输出图像填充纯色块,Hi3559AV100ES/Hi3559AV100通道0和通道1共用一个Cover逻辑,遮挡效果相同,使用时只需将REGION属性绑定到通道0;通道2和通道3共用一个 Cover逻辑,遮挡效果相同,使用时只需将REGION属性绑定到通道2;其他芯片所有通道共用一个Cover逻辑,遮挡效果相同, 使用时只需将REGION属性绑定到通道0。
Coverex:视频遮挡区域,调用VGS对VPSS通道的输出图像填充纯色块。
Overlayex:视频叠加区域,调用VGS对VPSS通道的输出图像叠加位图,支持位图格式ARGB4444、ARGB1555、ARGB8888、2BPP(仅Hi3516EV200/Hi3516EV300)。
3DNR:去噪,通过参数配置,把图像中的高斯噪声去除,使得图像变得平滑,有助于降低编码码率。Hi3559AV100ES/Hi3559AV100不支持。
固定角度旋转:支持0度、90度、180度以及270度固定角度的旋转功能。
HDR输出:VPSS支持的HDR类型包括HDR10和HLG。Hi3559AV100ES/Hi3559AV100 VPSS 通道0或通道1输出 HDR 时,动态范围配置需保持一致;通道2或通道3输出HDR时,动态范围配置需保持一致;Hi3559AV100ES 通道2和通道3不支持非 SDR 转 SDR。注意:VPSS 输出HDR图像时,需要从ISP获取色温参数,如果是用户送图像给VPSS 则无法获取色温,HDR效果无法保证,因此不建议这样使用。
任意角度旋转、LDC(镜头畸变矫正)、Spread(展宽处理)、鱼眼矫正Hi3559AV100均不支持。
功能描述
VPSS在系统中的上下文关系如下:
通过调用 SYS 模块的绑定接口,可与 AVS/USER/VDEC/VI和 VO/VENC/SVP 等模块进行绑定,其中前者为 VPSS 的输入源,后者为 VPSS 的接收者。用户可通过 MPI 接口对 GROUP 进行管理,每个 GROUP 仅可与一个输入源绑定。GROUP 的物理通道有两种工作模式: AUTO 和 USER,两种模式间可动态切换。AUTO 模式下各通道仅可与一个接收者绑定,主要用于预览和回放场景下做播放控制。USER 模式下各通道可与多个接收者绑定。需要特别注意的是,USER模式主要用于对同一通道图像进行多路编码的场景,此模式下播放控制不生效,因此回放场景下不建议使用USER模式。VPSS 只有工作在离线模式下才支持 AUTO 模式。
芯片处理流程
3559AV100中VPSS的数据处理流程如下图:
输入输出特性
Hi3559AV100支持8/10bit的YUV,支持动态范围SDR8/SDR10/HDR10/XDR,输入像素格式仅包含PIXEL_FORMAT_YVU_SEMIPLANAR_422、PIXEL_FORMAT_YVU_SEMIPLANAR_420、PIXEL_FORMAT_YUV_400、PIXEL_FORMAT_YUV_SEMIPLANAR_422和PIXEL_FORMAT_YUV_SEMIPLANAR_420,这里一个是YUV一个是YVU哈,输出像素格式仅PIXEL_FORMAT_YVU_SEMIPLANAR_422、PIXEL_FORMAT_YVU_SEMIPLANAR_420、PIXEL_FORMAT_YUV_400、PIXEL_FORMAT_YUV_SEMIPLANAR_422和PIXEL_FORMAT_YUV_SEMIPLANAR_420。
VPSS物理通道特性如下:
VPSS扩展通道特性如下:
注意:VPSS调用GDC做LDC、展宽、任意角度旋转或者调用VGS做旋转时,需要额外申请一块临时buffer,用于存放处理后的图像,因此也需要一次额外读写DDR;VPSS物理通道调用VGS做亮度和、COVER、OSD时,无需额外申请buffer,需要读写DDR;VPSS扩展通道调用VGS做裁剪、缩放时,需要额外申请一块临时buffer,用于存放处理后的图像,因此也需要一次额外读写DDR。
API参考
在VPSS中,与用户从外部输入有关的API是下面这个:
HI_S32 HI_MPI_VPSS_SendFrame(VPSS_GRP VpssGrp, VPSS_GRP_PIPE VpssGrpPipe,
const VIDEO_FRAME_INFO_S *pstVideoFrame, HI_S32 s32MilliSec);
参数解释如下:
虽然这里也可以从外部输入,但是VPSS的功能我也是不需要的,所以从下一节的VENC模块输入数据编码。
祝大家平安健康。