转换流媒体类型,而使用IMFSourceReader



我正在编写一个相机驱动程序上面的应用程序,我使用IMFSourceReader以同步的方式从驱动程序中提取IMFSamples。我能够配置每个流的SourceReader媒体类型,并以我的相机驱动程序支持的NV12和YUY2两种视频格式生成样本。我想要的是一种视频格式,我可以像RGB一样轻松显示,所以我正在寻找一个可以转换这些媒体类型的MFT,但我不确定我可以将它连接到SourceReader,因为我从媒体基础文档中了解到,IMFSourceReader可以加载解码器,但解码器不是转换器…

我想知道将视频源输出媒体类型转换为RGB等不同媒体类型的最佳方法是什么(除了自己进行转换),同时仍然使用IMFSourceReader?

在Windows 8上,您可以设置MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING属性以获得GPU加速的YUV到RGB转换。

在早期版本的Windows上,您可以使用DXVA2与D3D9,只需使用IDirect3DDevice9::StretchRect()在YUV表面之间复制到RGB表面。如果图形驱动程序支持,这将在复制期间进行转换。你应该调用ID3D9::CheckDeviceFormatConversion()来检查驱动程序是否支持你正在做的颜色转换,然后再依赖它。

最新更新