使用IMFSourceReader时转换流媒体类型

时间:2013-05-14 08:12:15

标签: colors converter directshow rgb ms-media-foundation

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

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

1 个答案:

答案 0 :(得分:0)

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

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