Toybrick

标题: RGA从解码出来的NV12转换到BGR格式后,发现明显颜色不对 [打印本页]

作者: whx_huxin    时间: 2020-10-16 13:42
标题: RGA从解码出来的NV12转换到BGR格式后,发现明显颜色不对
本帖最后由 whx_huxin 于 2020-10-16 13:44 编辑

在成功硬件解码一路RTSP H264流后,调用FFMPEG sws_scale可成功完成到BGR的格式转换,转换后的BGR帧正常,但是A72 单核CPU占用率高达90%,时延达到85ms一帧,为了降低CPU占用率和时延,替换FFMPEG代码为下面RGA代码,发现转换出来的BGR帧明显颜色不对(请看附件chn0-0-RGA.jpg),不知道问题出来哪里,感觉是RGA库存在问题(基于samples-toybrick-rga-master.zip编译的静态库),麻烦答复确认:               
{
                        RockchipRga *rga = RgaCreate();
                        if (!rga)
                        {
                            IPC_LOG_ERR(pstHandle->iChannelIndex,"create rga failed (FrameIndex=%u)!\n",pstHandle->uiFrameIndex);
                                iRet = IPC_ERRCODE_NOK;
                                goto failed;
                        }
                        rga->ops->initCtx(rga);
                        rga->ops->setSrcFormat(rga, V4L2_PIX_FMT_NV12, width, height);  //注意图像格式需要用RGA本身的枚举RockchipRgaCheckFormat
                        rga->ops->setDstFormat(rga, V4L2_PIX_FMT_BGR24, pstImage->uiWidth, pstImage->uiHeight);

                        rga->ops->setSrcBufferPtr(rga, base);
                        rga->ops->setDstBufferPtr(rga, (RK_U8 *)pstImage->ulAddr_virt);

                        rga->ops->go(rga);               
                        RgaDestroy(rga);
                }


作者: jefferyzhang    时间: 2020-10-17 11:51
你这个是UV反了,请把NV12改成NV21就好了。
这个UV反了的最新的kernel应该是和最新的rga库匹配的,除非你kernel是旧的,rga库是新的可能会出这个问题。
作者: whx_huxin    时间: 2020-10-19 09:25
谢谢。换成NV21后,rga运行直接报错,因为rga里面检查不支持NV21格式,我先刷新一下kernel吧
作者: whx_huxin    时间: 2020-10-26 11:17
不使用samples-toybrick-rga-master.zip编译的静态库,切换为使用单板自带的librga.so库(/usr/lib),这个问题已经解决,尺寸和格式转换后颜色正常,单路解码和转换时延没有问题




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3