enter code here
我必须动态停止和启动Video Renderer Filter。在不创建新图表的情况下,使用“普通”直接展示架构是不可能的。但是使用 GMFBridge 似乎是可能的。
但我不知道如何使用它。(是的,我在http://www.gdcl.co.uk/gmfbridge/index.htm阅读了这篇论文)
我的图表是:
SourceFilter ---> MyCustomTransformFilter ---> Video Rendrer Filter
那么 GMFBridge 适合在哪里呢?
i) I can devide my graph two pieces
[ Source Filter + MyCustomFilter ] + Video Rendere
ii) Then how to add my filters to graph, and stop start Video Rendrere without
affecting the rest of my grapg using GMFBridge?
更新:
谢谢威梅尔
我只是困惑...让我清楚我的理解
i) 一开始我只有一张图
(SingleGraph) SourceFilter ---> MyCustomTransformFilter ---> Video Rendrer Filter
ii)为了使用 GMFBridge,我将我的单个图表分为两个单独的图表
First Graph : SourceFilter ---> MyCustomTransformFilter --> GMFBridgeSinkFilter
Second Graph : GMFBridgeSourceFilter ---> Video Renderer Filter
那么, GMFBridgeSinkFilter 和 GMFBridgeSourceFilter ?这些是什么?他们的班级类型?
iii)然后我创建 IGMFBridgeControllerPtr 的实例并进行必要的初始化...
IGMFBridgeControllerPtr bridgeController = ......
.....
bridgeController->AddStream(true, eUncompressed, true);
bridgeController->AddStream(false, eUncompressed, true);
iv)桥控制器向源图添加一个接收器过滤器并连接它:
bridgeController->InsertSinkFilter(sourceGraph, sourceGraphSinkFilter);
什么是 sourceGraph、sourceGraphSinkFilter ?
// now connect it like this:
// SourceFilter ---> MyCustomTransformFilter ---> SourceGraphSinkFilter
您的意思是在源图中以编程方式连接这些过滤器?
iv) 在第二个图中,让控制器添加一个源过滤器,并将其连接到渲染器:
bridgeController->InsertSourceFilter(sinkFilter, renderGraph, renderGraphSourceFilter);
什么是 sinkFilter、renderGraphSourceFilter 等?
// now connect it like this:
// RenderGraphSourceFilter ---> Video Renderer Filter
你 的意思是在源图中以编程方式连接这些过滤器?