Informationen zum Capture Graph Builder
Ein Filterdiagramm, das eine Video- oder Audioaufnahme durchführt, wird als Erfassungsdiagramm bezeichnet. Erfassungsdiagramme sind häufig komplizierter als Dateiwiedergabediagramme. Um Anwendungen das Erstellen von Erfassungsdiagrammen zu erleichtern, stellt DirectShow ein Hilfsobjekt namens Capture Graph Builder bereit. Der Capture Graph Builder macht die ICaptureGraphBuilder2-Schnittstelle verfügbar, die Methoden zum Erstellen und Steuern eines Erfassungsdiagramms enthält. Das folgende Diagramm veranschaulicht den Capture Graph Builder und die ICaptureGraphBuilder2-Schnittstelle.

Rufen Sie zunächst CoCreateInstance auf, um neue Instanzen von Capture Graph Builder und filter Graph Manager zu erstellen. Initialisieren Sie dann den Capture Graph Builder, indem Sie ICaptureGraphBuilder2::SetFiltergraph mit einem Zeiger auf die IGraphBuilder-Schnittstelle von Filter Graph Manager aufrufen. Dieser Prozess wird anhand des folgenden Diagramms veranschaulicht.

Der folgende Code zeigt eine Hilfsfunktion zum Ausführen dieser Schritte:
HRESULT InitCaptureGraphBuilder(
IGraphBuilder **ppGraph, // Receives the pointer.
ICaptureGraphBuilder2 **ppBuild // Receives the pointer.
)
{
if (!ppGraph || !ppBuild)
{
return E_POINTER;
}
IGraphBuilder *pGraph = NULL;
ICaptureGraphBuilder2 *pBuild = NULL;
// Create the Capture Graph Builder.
HRESULT hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL,
CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void**)&pBuild );
if (SUCCEEDED(hr))
{
// Create the Filter Graph Manager.
hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void**)&pGraph);
if (SUCCEEDED(hr))
{
// Initialize the Capture Graph Builder.
pBuild->SetFiltergraph(pGraph);
// Return both interface pointers to the caller.
*ppBuild = pBuild;
*ppGraph = pGraph; // The caller must release both interfaces.
return S_OK;
}
else
{
pBuild->Release();
}
}
return hr; // Failed
}
In diesem Abschnitt zur Videoaufnahme wird davon ausgegangen, dass Sie den Capture Graph Builder verwenden, um den Erfassungsgraphen zu erstellen. Es ist jedoch möglich, Erfassungsdiagramme vollständig mithilfe von IGraphBuilder-Methoden zu erstellen. Dies gilt jedoch als erweitertes Thema, und die Capture Graph Builder-Methoden werden bevorzugt. Weitere Informationen finden Sie unter Advanced Capture Topics.