YUV(UYVY)图像(C ++)上的高性能图形叠加

时间:2015-05-26 04:34:01

标签: c++ rendering yuv

我的要求:尽可能快地将图形(带alpha /抗锯齿)叠加到UYVY图像上。渲染必须在UYVY中进行,因为我需要渲染和编码(H.264 with ffmpeg)。

我应该使用什么框架(完全可以跨平台,但只有Windows可以)来渲染图像以便以后渲染/编码?

我查看了openvc,看起来绘图发生在BGR中,这需要将每个帧从UYVY(2通道)转换为BGR(3通道),然后再返回。

我看了SDL,它使用硬件加速。它支持具有不同颜色空间的多个纹理。但是,方法SDL_RenderReadPixels,我需要得到合成的合成图像,在文档中提及"警告这是一个非常慢的操作,不应经常使用。"

是否有框架可以绘制到YUV的BYTE数组,可能使用alpha混合/消除锯齿?

1 个答案:

答案 0 :(得分:2)

您也可以将YUV转换为BGRA。然后使用格式执行绘图操作。 BGRA比BGR更方便绘图,因为它的每个像素都等于32位整数。绘制后,你必须将BGRA向后转换为YUV。

有一个快速的跨平台C ++ library可以执行这些操作。