21

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

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

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

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

4

3 回答 3

5

gStreamer 库具有良好的去隔行扫描模块。 您可以使用 directshow 模块在窗口中显示结果,或者通过挂钩各种事件自己处理帧。我们目前在工作中使用它来满足我们所有的视频处理需求。

于 2012-03-20T17:08:13.480 回答
3

根据您明确的要求,看起来VDPAU与您的期望最接近。复杂性:它适用于基于 Unix 的操作系统,而不是 Windows。

如果您被锁定到 Windows,DXVA是您的最佳选择。如果您在跨平台环境中操作,OpenMAX是您的最佳选择。如果您愿意接受超出您在问题中已经给出的建议,那么其余的建议都值得追求。

于 2012-03-23T07:41:19.073 回答
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

于 2012-05-11T13:23:52.023 回答