现代显卡具有硬件视频缩放器,例如作为 AMD Avivo、NVIDIA PureVideo 或 Intel ClearVideo 的一部分。例如,AMD 的Avivo 白皮书说:
“图像输出缩放器支持多达 6 个垂直滤波器抽头和多达 10 个水平滤波器抽头。这些缩放器是高度可编程的高精度多相缩放器;它们适用于几乎任何比例的放大,或最多 4 个缩小:1。”
问题: 如何在 Windows 程序中使用视频缩放器硬件?
假设已经存在解码的视频帧,例如在 aIDirect3DSurface9
中,目标是使用硬件缩放器在屏幕上显示该视频帧。如果可能,我想使用像 Media Foundation 或 DirectShow 这样的 Windows API,而不是供应商特定的 API。我主要对以1.5-3倍左右的相当大的因子进行升级感兴趣。
第二个问题是,如何控制视频缩放器的硬件参数?(例如上面提到的多相滤波器中的滤波器系数)
编辑:赏金开始了。请提供在视频卡中使用视频缩放器硬件的任何方式的示例(这可能是特定于供应商的,或使用任何版本的 DirectX/DirectShow/Media Foundation API)。
编辑:更新:使用视频缩放器硬件的一些程序示例:WinDVD、PowerDVD、madVR。我想知道如何完成他们的工作,即使用 GPU 的内置视频硬件缩放器,而不是使用 D3D 着色器和纹理采样器实现的缩放器。