我有一个YUY2像素格式帧的视频流,我想把它显示给用户。如果我要在Qt5的QLable中显示它,我需要先将它转换为RGB,这是相当慢的(除非你使用ffmpeg/libav家族的库,我想)。
所以我认为使用OpenGL/OpenGLES进行gpu加速转换到RGB24/RGB32(如果需要的话)并显示它会快得多。但我该怎么做呢?据我所知,这不是那么容易编写,特别是对于不太熟悉OpenGL,着色器和纹理的人。你可以假设我有一个char* pixelData
和size_t bytes, width, height
一般的想法是使用3个纹理,1(全分辨率)用于Y组件,2(半宽度)用于Cb和Cr。
然后你写一个片段着色器,在相同的标准化坐标下采样所有3个纹理,并使用这里的矩阵从YUV转换到RGB。