GPU去隔行扫描

时间:2012-03-15 17:55:05

标签: c++ windows opengl openmax dxva

我有一个应用程序可以使用OpenGL进行颜色变换,缩放和翻译等视频处理。我主要使用BGRA(1xGL_BGRA)或YUVA(4xGL_R)视频,包括alpha。

现在我还想做一些高质量的去隔行扫描。我注意到Nvidia通过其“PureVideo”功能支持高质量的硬件加速去隔行扫描。基本上我想做的是发送带有x个颜色通道的隔行扫描OpenGL纹理,然后输出两个渐进纹理。

我的问题是如何最简单,最有效地访问此功能(可能与OpenGL互操作)?

我一直在关注DXVA和OpenMax,但两者似乎都专注于播放(不是去隔行处理,即需要设置帧速率之类的非相关选项等等)和无alpha格式。 ..

3 个答案:

答案 0 :(得分:5)

gStreamer libraries have good de-interlacing modules.您可以使用directshow模块在窗口中显示结果,或通过挂钩到各种事件来自行处理帧。我们目前正在使用此功能来满足我们的所有视频处理需求。

答案 1 :(得分:3)

根据您澄清的要求,VDPAU似乎与您想要的最匹配。复杂性:它适用于基于Unix的操作系统,而不是Windows。

如果您已锁定Windows,DXVA即可。如果您在跨平台环境中运行,OpenMAX是可行的方法。如果你对你在问题中已经提出的建议持开放态度,the rest of these值得追求。

答案 2 :(得分:0)

要点1:如果您希望硬件加速去隔行扫描并且质量良好,则必须通过DirectX。

第2点:除了其他人命名的选项(DXVA和OpenMAX)之外,至少还有用于Quicksync的英特尔媒体SDK加速去隔行(尚未命名),并通过其VPP视频预处理过滤器提供逐帧反隔行扫描

第3点:在NVidia上从DirectX转到OpenGL:http://developer.download.nvidia.com/opengl/specs/WGL_NV_DX_interop.txt