如何调用ICaptureGraphBuilder2-> RenderStream两次?

时间:2012-08-19 05:49:37

标签: directshow

我已在msdn RenderStream中读到,我们可以多次调用RenderStream来制作长过滤器链。我有以下过滤链:

Capture Filter -> Sample Grabber -> Transformation Filter -> Video Mixing Renderer9

我正在尝试以编程方式使用RenderStream执行相同操作。

pBuid->RenderStream(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,pCap,pSampleGrabber,pTransformFilter);

pBuid->RenderStream(NULL,NULL,pTransformFilter,NULL,pVMRender);

但是,上面的代码不起作用。执行后,首先RenderStream显示控制台窗口(win32)并且什么都不做。 请帮助我如何呈现Capture->Sample Grabber->Transform Filter->Renderer

2 个答案:

答案 0 :(得分:0)

如果您使用Pin_Category_preview,则需要使用videoRenderer。请尝试以下方法:

pBuid->RenderStream(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,pCap,pSampleGrabber,pTransformFilter);

pBuid->RenderStream(&PIN_CATEGORY_PREVIEW,&MEDIATYPE_Video,pCap,null,null); //the preview pin automatically connects to the renderer.

答案 1 :(得分:0)

解决了这个问题: @CPlusSharp, 你是对的,这是媒体类型的问题。我为AM_MEDIATYPE设置了适当的媒体提示。 感谢所有人的帮助:)