RGA模块的讲解

  • RGA模块的作用

由于网页显示的图像是RGB的彩色图像,所以我们需要使用RGA模块把NV12的灰度图像转换成RGB的彩色图像。然后再把彩色图像赋值到ShareMemory共享内存里面。这节课主要的内容是RGA模块的初始化和如何获取经过RGA处理的RGB数据。

  • RGA数据的获取

2.1. RGA模块的初始化

上面是RGA模块初始化的代码,这里使用的结构体是RGA_ATTR_S。RGA_ATTR_S结构体里面包含了两个重要的结构体,分别是stImgIn和stImgOut。stImgIn是视频输入的结构体,stImgOut是处理后的视频结构体。除了这两个重要的结构体外,还有公共参数需要设置

stImgIn结构体的设置:

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:视频输出的分辨率宽度,这里使用的是1920

stImgOut.u32Height:视频输出的分辨率高度,这里使用的是1080

stImgOut.u32HorStride:视频输出的分辨率虚宽,虚宽的数值跟分辨率宽度数值一致都是1920

stImgOut.u32VirStride:视频输出的分辨率虚高,虚高的数值跟分辨率高度数值一致都是1080

stImgOut.imgType:视频输出的格式这里设置的是RGB格式,IMAGE_TYPE_RGB888。

stImgOut.u32X:设置stImgOut的X坐标

stImgOut.u32Y:设置stImgOut的Y坐标

RGA公共参数
u16BufPoolCnt:缓冲区计数,默认是3

u16Rotation:旋转角度,这里填0,没有旋转角度

enFlip:镜像控制,这里选择RGA_FLIP_H,水平镜像处理

bEnBufPool:使能缓冲池

设置完上述的参数后,调用RK_MPI_RGA_CreateChn设置RGA模块,第一个参数是RGA的通道号:0,第二个参数是RGA_ATTR_S结构体指针。

2.2. 创建get_vi_rga_thread线程获取RGA码流数据

需要调用pthread_create创建get_vi_rga_thread线程,我们来看get_vi_rga_thread线程里面的内容。在这个线程里面,需要调用RK_MPI_SYS_GetMediaBuffer获取RGA模块的数据。而RGA数据的来源是上节课我们讲解的get_camera_vi_thread线程发送的每一帧NV12数据(具体的流程如下图),最后把RGA的数据赋值到共享内存里面,代码是(共享内存的内容下节课讲解)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈~~哈~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值