您尚未登录。

楼主 #1 2020-10-27 17:03:57

vip888888
会员
注册时间: 2020-07-16
已发帖子: 141
积分: 138

F1c200s display engine 通过layer将YUV转RGB系数配置问题

如下图这是200s手册上写的将YUV转换为RGB的算法。 这个东西改怎么配置才能正常的将YUV转为RGB呢?这里每个系数的值都是可以配置的,就是不知道该设置成什么值导致LCD上显示的图有色差。
yuv1.png
下图中左上角是layer1层YUV转RGB的图 右下角是我通过网上查找的算法转的RGB显示在layer0的图。
yuv2.jpg

下面是网上找的将YUYV转RGB的算法转换后得到上图右下角的图。请大佬出手算下参数。
yuv3.png

离线

楼主 #3 2020-10-27 22:30:33

vip888888
会员
注册时间: 2020-07-16
已发帖子: 141
积分: 138

Re: F1c200s display engine 通过layer将YUV转RGB系数配置问题

逸俊晨晖 说:

你标题上写个DE我还要以为你要用硬件转呢 一点进来发现是软件转
软件转很慢的 f1c的话还是操作libdrm使的fb直接显示yuv吧

你可能没注意看,我就是要用硬件的display engine转,左上角就是硬件yuv转的rgb但是明显变色了,转换系数不对,右下角是软件转的,只是看下有没有大佬会算,给出来参考下。

然后linux上f1c的有实现硬件yuv转rgb吗?能否给个链接,非常感谢。之前看别人说用过libdrm没效果可能sdk不对。

最近编辑记录 vip888888 (2020-10-27 22:31:50)

离线

楼主 #5 2020-10-29 14:18:21

vip888888
会员
注册时间: 2020-07-16
已发帖子: 141
积分: 138

Re: F1c200s display engine 通过layer将YUV转RGB系数配置问题

通过上面公式拆解,可以得到rgb和yuv的直接公式如下:
r = (y + (359 * v)) >> 8;  = y/256 + (359*(V-128))/256 = y + (359*V - 45952)/256 = y+ 1.40234375*v - 179.5
g = (y - (88 * u) - (183 * v)) >> 8;  =y/256 -(88*(u-128))/256 - (183*(v-128))/256   = y -(88*u-11264)/256 - (183*v-23424)/256=y -0.34375u+44 -0.71484375*v + 91.5 = y-0.34375u-0.71484375*v + 135.5
b = (y + (454 * u)) >> 8;  = y/256 + (454*(u-128))/256 = y + (454u-58112)/256 = y + 1.7734375u - 227

统一下就是:
r =y+ 1.40234375*v - 179.5
g =y-0.34375u-0.71484375*v + 135.5
b =y + 1.7734375u - 227
yuv1.png
但是和这个公式一配比的话,他这个系数无法变为负数,最后那个常量也无法变为负数了。所以此公式也对应不上呀。

要么就用已知的YUV 和RGB的值套上全志手册的公式解12次一元一次方矩阵?以此得到系数?或者有没有大佬已经有系统跑通了的可以读取下0x01E60950 - 0x01E60980的值给来参考下。

离线

楼主 #7 2020-10-29 22:44:59

vip888888
会员
注册时间: 2020-07-16
已发帖子: 141
积分: 138

Re: F1c200s display engine 通过layer将YUV转RGB系数配置问题

f1c100_ 说:

你用的硬件转rgb速度怎么样?代码能分享下看看么

这不是还没成功嘛。转的不对呀,还没搞定呢。

最近编辑记录 vip888888 (2020-10-29 22:45:15)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn