Multiple Graphs in DirectShow
Applications sometimes need to start and stop some filters independently of others, and to switch connections dynamically. GMFBridge is a multi-graph toolkit that shows how to use multiple DirectShow graphs to solve these problems. There are two example applications (in C++ and VB6)
In this article, Geraint Davies shows how to solve these problems using multiple, related graphs of filters. The accompanying source code includes GMFBridge: GMFPlay shows how to view multiple clips as a single movie, and GMFPreview demonstrates how to keep showing the preview stream from a video capture device while starting and stopping capture into different files.
Published: November 2004. Latest update May 2012.
- Don’t forget to register the DLLs with regsvr32.
- The project files are for VS2010 or VS2008. For the sample apps, you’ll need WTL 8.0 which you can download here.
- With VC6, if you see an error with LONG_PTR in building GMFBridge_h.h from the idl file, make sure that your DirectX 9 SDK include files are higher on the include path than the VC98 include files.
- If you want to view the graphs used, re-enable the Running Object Table code in BridgeSink::JoinFilterGraph and BridgeSource::JoinFilterGraph and then use GraphEdt’s Connect To Remote Graph feature. This is disabled by default as it can lead to refcount leaks.
- If you want to debug problems, a good first step is to create an empty text file "gmfbridge.txt" in My Documents. If this file is present, GMFBridge will write log text to this file during execution.