directshow“色彩空间转换器”滤镜配置问题(VMR无窗口渲染器)

时间:2011-06-21 18:00:02

标签: com directshow

我正在使用VMR将位图与视频流混合。我在无窗口模式下运行渲染器。

由于我需要在渲染器上有多个流,我首先将渲染器添加到图形中,然后将IFilterGraph2 :: RenderEx与AM_RENDEREX_RENDERTOEXISTINGRENDERERS一起使用。

大部分时间都可以正常工作,但我有一个.avi文件可以使用RenderFile进行渲染,但在我的图表中渲染时最终会显示所有黑色。我用graphedit比较了这两个图,它们是相同的:

capture.avi -> AVI Splitter -> Color Space Converter -> Video Renderer

图表之间的唯一区别是Color Space Renderer的设置不同:graphedit显示图表中的以下设置有效:

Input:
    Major Type:  Video
    Sub Type: ARGB32
    ...
XForm Out:
    Major Type: Video
    Sub Type: RGB32

在我的图表中显示:

Input:  (same)
XForm Out:
    Major Type: Video
    Sub Type: ARGB32

所以看起来转换器基本上什么都不做。我环顾四周,无法找到Color Space Converter过滤器的任何配置界面。我还在VMR输入引脚和色彩空间转换器输出引脚上尝试使用IPin :: QueryAccept和IFilterGraph2 :: ReconnectEx进行不同的操作,尝试强制将Converter转换器的输出转换为RGB32,但我运气不好。希望有人能指出我正确的方向!

1 个答案:

答案 0 :(得分:1)

据我所知,Color Space Converter过滤器没有接口,但您也不需要它。您可以通过插入仅接受RGB32的过滤器强制Color Space Converter过滤器转换为RGB32。 RGBFilters示例中的TransNull32确实显示了这一点。您的图表将如下所示:

capture.avi -> AVI Splitter -> Color Space Converter -> TransNull32 -> Video Renderer

另请参阅Regarding the scope of Sample Grabber in DirectShow,其中我解释了如何使用TransNull24过滤器。