RV1126的RGA模块讲解
一.本章节介绍
本章节主要是介绍视觉项目的RGA模块的讲解,RGA模块是视频处理模块,这个模块可以对VI视频数据进行缩放、裁剪、格式转换、图片叠加等的功能。
在这个项目里面RGA模块最重要的功能是把1920 * 1080的分辨率转换成1280 * 720的分辨率。RGA模块的配置在源文件rkmedia_module_function.cpp里面。
二.RGA模块设置的思维导图
上面思维导图是RGA设置的大体流程,RGA设置需要对RGA_ATTR_S结构体进行参数设置,设置完之后调用RK_MPI_RGA_CreateChn设置RGA模块。若成功则打印RGA Set Success,失败则打印RGA Set Failed。
三.RGA模块设置的代码截图
RGA_ATTR_S结构体里面包含了两个重要的结构体,分别是stImgIn和stImgOut。
stImgIn是视频输入的结构体,stImgOut是处理后的视频结构体。除了这两个重要的结构体外,还有公共参数需要设置。
stImgIn结构体的设置:
stImgIn.u32Width:视频输入的分辨率宽度,这里使用的是1920
stImgIn.u32Height:视频输入的分辨率宽度,这里使用的是1080
stImgIn.u32Width:视频输入的分辨率宽度,这里使用的是1920
stImgIn.u32Height:视频输入的分辨率宽度,这里使用的是1080
stImgIn.u32HorStride:视频输入的分辨率虚宽,虚宽的数值跟分辨率宽度数值一致都是1920
stImgIn.u32VirStride:视频输入的分辨率虚高,虚高的数值跟分辨率高度数值一致都是1080
stImgIn.imgType:视频输入的格式,这里设置的是NV12也就是IMAGE_TYPE_NV12
stImgIn.u32X:设置stImgIn的X坐标
stImgIn.u32Y:设置stImgIn的Y坐标
stImgOut结构体的设置:
stImgOut.u32Width:视频输入的分辨率宽度,这里使用的是1280
stImgOut.u32Height:视频输入的分辨率宽度,这里使用的是720
stImgOut.u32Width:视频输入的分辨率宽度,这里使用的是1280
stImgOut.u32Height:视频输入的分辨率宽度,这里使用的是720
stImgOut.u32HorStride:视频输入的分辨率虚宽,虚宽的数值跟分辨率宽度数值一致都是1280
stImgOut.u32VirStride:视频输入的分辨率虚高,虚高的数值跟分辨率高度数值一致都是720
stImgOut.imgType:视频输入的格式,这里设置的是NV12也就是IMAGE_TYPE_NV12
stImgIn.u32X:设置stImgOut的X坐标
stImgIn.u32Y:设置stImgOut的Y坐标
RGA公共参数
u16BufPoolCnt:缓冲区计数,默认是3
u16Rotation:旋转角度,这里填0,没有旋转角度
enFlip:镜像控制,这里选择RGA_FLIP_H,水平镜像处理
bEnBufPool:使能缓冲池
设置完上述的参数后,调用RK_MPI_RGA_CreateChn设置RGA模块,这块内容在之前的课程已经详细说过,这里不做说明