windows – 如何使用硬件视频缩放器?

前端之家收集整理的这篇文章主要介绍了windows – 如何使用硬件视频缩放器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
现代图形卡具有硬件视频缩放器,例如作为AMD Avivo,NVIDIA PureVideo或Intel ClearVideo的一部分.例如,AMD的 Avivo whitepaper说:

“The image output scalers support up to 6 vertical filter taps and up
to 10 horizontal filter taps. These scalers are high-precision
polyphase scalers that are highly programmable; they are suitable for
upscaling by practically any ratio,or for downscaling by up to 4:1.”

问题:如何从Windows程序中使用视频缩放器硬件?

假设已经存在解码的视频帧,例如在IDirect3DSurface9中,并且目标是使用硬件缩放器在屏幕上显示该视频帧.我想使用像Media Foundation或DirectShow这样的Windows API,而不是使用特定于供应商的API.我主要对1.5-3x左右的相当大的因素进行升级感兴趣.

第二个问题是,如何控制视频缩放器硬件参数? (例如,上面提到的多相滤波器中的滤波器系数)

编辑:赏金开始了.请提供在视频卡中使用视频缩放器硬件的任何方式的示例(这可能是特定于供应商的,或使用任何版本的DirectX / DirectShow / Media Foundation API).

编辑:更新:使用视频缩放器硬件的程序的一些示例:WinDVD,PowerDVD,madVR.我想知道如何完成他们的工作,即使用GPU的内置视频硬件缩放器,而不是使用D3D着色器和纹理采样器实现的缩放器.

要只访问硬件 – Direct2D(Direct3D可能是更好的选择)很好.但要访问视频缩放器,您需要使用DirectShow或Windows Media Foundation(我还没有真正使用过它).

AFAIK – “Resizer DMO”过滤器将访问正确的硬件并为您执行视频大小调整. Here是使用此过滤器的代码示例.

编辑:如果您正在使用MFT,Video Processor Filter也应该同样有效.如文档中所示,“视频处理器支持使用Microsoft Direct3D 11进行GPU加速视频处理.有关详细信息,请参阅MF_SA_D3D11_AWARE.”

另外 – 请参阅this有关硬件MFT属性的部分,尤其是MFT_ENUM_HARDWARE_URL_Attribute,它允许您检查MFT是否在硬件中实现. Note that DXVA与Media Foundation集成,并将其功能公开为MFT.因此,在硬件中实现的MFT最有可能使用底层硬件,并且是Windows本身使用的方法.

希望这可以帮助!

猜你在找的Windows相关文章