我有一个YUY2像素格式的视频流,我想将它显示给用户。如果我要在Qt5的QLable中显示它,我需要先将它转换为RGB,这是非常慢的(除非你使用ffmpeg / libav系列库,我猜)。
所以我认为使用OpenGL / OpenGLES进行GPU加速转换到RGB24 / RGB32(如果它甚至需要)并显示它会快得多。但是我该怎么做?据我所知,编写起来并不容易,特别是对于不太熟悉OpenGL,着色器和纹理的人。您可以假设我有char* pixelData
和size_t bytes, width, height
。
答案 0 :(得分:1)
一般的想法是使用3个纹理,1个(全部res)用于Y分量,2个(半个宽度)用于Cb和Cr。
然后你编写一个片段着色器,在同一个标准化坐标上对所有3个纹理进行采样,并使用矩阵here将YUV转换为RGB。