使用 OpenGL 显示 YUY2 (Y'UV422)
Posted
技术标签:
【中文标题】使用 OpenGL 显示 YUY2 (Y\'UV422)【英文标题】:Display YUY2 (Y'UV422) using OpenGL使用 OpenGL 显示 YUY2 (Y'UV422) 【发布时间】:2015-09-06 09:39:43 【问题描述】:我有一个 YUY2 像素格式帧的视频流,我想将它显示给用户。如果我要在 Qt5 的 QLable 中显示它,我需要先将其转换为 RGB,这很慢(除非你使用 ffmpeg/libav 系列库,我想)。
所以我认为使用 OpenGL/OpenGLES 将 GPU 加速转换为 RGB24/RGB32(如果甚至需要)并显示它会快得多。但是我该怎么做呢?据我了解,编写起来并不容易,尤其是对于不太熟悉 OpenGL、着色器和纹理的人来说。你可以假设我有一个char* pixelData
和size_t bytes, width, height
。
【问题讨论】:
【参考方案1】:总体思路是使用 3 个纹理,1 个(全分辨率)用于 Y 分量,2 个(半宽)用于 Cb 和 Cr。
然后您编写一个片段着色器,在同一归一化坐标处对所有 3 个纹理进行采样,并使用矩阵 here 将 YUV 转换为 RGB。
【讨论】:
以上是关于使用 OpenGL 显示 YUY2 (Y'UV422)的主要内容,如果未能解决你的问题,请参考以下文章