“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着色器和纹理采样器实现的缩放器.
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本身使用的方法.
希望这可以帮助!