我正在搜索基于硬件加速(GPU)的视频缩放。我在以下线程中找到了广泛的讨论
How to use hardware video scalers? 和
Hardware Accelerated Image Scaling in windows using C++
我尝试坚持使用基于 MFT 的缩放,因为我还在我的应用程序中使用了 H.264 Encoder MFT。
对于基于 MFT 的解决方案,我们有两种选择-
1. Video Resizer DSP
2. Video Processor MFT
但是这两种方法都使用了 MF_SA_D3D_AWARE 。如下所述:
视频 MFT 具有属性 MF_SA_D3D_AWARE .aspx 可用于查询它是否支持 DirectX 3D 硬件加速,这可以通过向其发送 MFT_MESSAGE_SET_D3D_MANAGER 消息来启用。
Windows 8 及以上版本支持 MF_SA_D3D_AWARE。
他们是否有任何 MFT 用于在 Windows 7 中使用硬件加速的缩放?
我还没有研究 How to use hardware video scalers? 中提到的其他两个选项(MFCreateVideoRenderer 和 IDirectXVideoProcessor::VideoProcessBlt)是否支持 Windows 7。但我正在积极寻找优先的 MFT 选项。
最佳答案
在 Windows 7 下,我会推荐你使用 IDXVAHD_VideoProcessor
你在这里有一个样本:DXVA-HD Sample
但我认为,如果您使用带有 DirectXTexture9 的简单 DirectXDevice9,缩放结果将是相同的。专用缩放处理没有理由只适用于视频文件处理。我认为它们对于(游戏和视频文件)都是相同的。
我看到的孤独之处在于,您可以设置收缩模式: DXVAHD_BLT_STATE_CONSTRICTION_DATA ,适用于缩小,而不是真正的放大。
关于c++ - windows7中的硬件加速缩放MFT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35620728/