我正在寻找可以将RGB帧(比如像素格式为ARGB)转换为YUV(比如YUV420)的样本GLSL片段着色器代码。
想象一下尺寸为1920x1080的RGB帧。我喜欢使用片段着色器将其转换为YUV帧。
您能指出我可以在UBuntu盒上编译和运行的代码吗?
答案 0 :(得分:5)
为了将来参考,可以在Gstreamer gst-plugins-gl codebase中找到GLSL着色器中的一系列色彩空间转换:)
答案 1 :(得分:2)
首先,您应该知道您的问题措辞不当。没有人会给你写样本代码。您可以使用搜索引擎(甚至搜索此站点)获取从RGB转换为YUV的代码。
我写了一个类似于你正在寻找的答案here。它从RGB转换为YIQ,进行一些色调偏移并转换回来。您可以使用Y'CbCr矩阵进行颜色转换,而不是YIQ,如果这是您需要的。
但它不会下转换为4:2:0。但这应该很容易做到。一旦它采用Y'CbCr格式,您可以根据需要对适当的通道进行下采样。我建议首先在这些通道上进行低通滤波,以避免出现锯齿现象。
我不使用Linux,所以没有在Ubuntu上测试过。祝你好运。
答案 2 :(得分:0)
此链接使用计算着色器GLSL具有YUV 4:2:2 v210到RGB实现。 YUV 4:2:2 v210 --> RGB GLSL source code