GPU YUV到RGB。 值得努力?

我必须将几个完整的PAL视频(720x576 @ 25)从YUV 4:2:2实时转换为RGB,并且可能会为每个视频自定义调整大小。 我曾想过使用GPU,因为我已经看到一些例子可以做到这一点(除了它是4:4:4,所以bpp在来源和命运上都是一样的) - http://www.fourcc.org/源极/ YUV420P的OpenGL-GLSLang.c

但是,我没有使用GPU的经验,我不确定可以做什么。 这个例子,据我了解,只是将视频帧转换为YUV并将其显示在屏幕上。

是否有可能获得处理的框架呢? 将它发送给GPU,将其转换并再次发送到主内存,或者是否会导致性能下降,是否值得付出努力?

假设我在Windows上工作,有点特定于平台,是否可以从窗口获取OpenGL或DirectDraw表面,以便GPU可以直接绘制它?


真正的问题是,你希望从中得到什么?

按照您接收视频的帧速率,您可以使用英特尔性能基元等功能来完成您需要的几项操作,并轻松跟上流。

如果你想学习如何做gpu编程,这是一个很容易实现的简单问题。

可以通过从GPU读回内存来获得处理后的帧。 实际的机制将取决于你使用的API(OpenGL,DirectX,CUDA,OpenCL)。 我用更高分辨率的视频完成了它,并且仍然保持25fps的流。 但是,这一切都取决于您将使用的硬件。

DirectX和OpenGL都有关于使用Windows表面作为渲染目标的很好的教程。


我已经用C语言为CUDA编写了这个程序,用C语言编写了一个Pthreads程序(尽管只是为了好玩,但请注意)。我发现GPU的工作速度非常快,您可以花50-80%的时间发回数据即使你每次都完全填满了GPU的内存。 由于这个原因,CPU几乎可以像GPU一样快速完成这项工作。 这个问题是非常线程友好的,因为你可能已经想通了,所以对于现代硬件来说,内存带宽是最大的问题。

我用酷睿i7作为CPU测试了这款产品,并将GeForce 8800GT / GTX 285作为显卡进行了测试。 GTX285处理1920×1080的afaik 1500fps视频,因此无论您选择什么,事情都会非常快速。

链接地址: http://www.djcxy.com/p/65901.html

上一篇: GPU YUV to RGB. Worth the effort?

下一篇: >YUV conversion in C/C++?