Verbindungen anheften
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
Filter werden an ihren Pins über die IPin-Schnittstelle verbunden. Ausgabepins werden mit Eingabenadeln verbunden. Jede Pinverbindung verfügt über einen Medientyp, der durch die AM_MEDIA_TYPE-Struktur beschrieben wird.
Eine Anwendung verbindet Filter durch Aufrufen von Methoden im Filter Graph-Manager, nie durch Aufrufen von Methoden für die Filter oder durch Anheften selbst. Die Anwendung kann direkt angeben, welche Filter eine Verbindung herstellen sollen, indem die IFilterGraph::ConnectDirect - oder IGraphBuilder::Connect-Methode aufgerufen wird. Oder es kann Filter indirekt mit einer Graph-Building-Methode wie IGraphBuilder::RenderFile verbinden.
Damit die Verbindung erfolgreich hergestellt werden kann, müssen sich beide Filter im Filterdiagramm enthalten. Die Anwendung kann dem Diagramm einen Filter hinzufügen, indem sie die IFilterGraph::AddFilter-Methode aufruft. Der Filter graph-Manager kann dem Diagramm auch Filter hinzufügen. Wenn ein Filter hinzugefügt wird, ruft der Filtergraph-Manager die IBaseFilter::JoinFilterGraph-Methode des Filters auf, um den Filter zu benachrichtigen.
Die allgemeine Gliederung des Verbindungsprozesses ist wie folgt:
- Der Filter Graph-Manager ruft IPin::Connect am Ausgabenadel auf und übergibt einen Zeiger auf den Eingabenadel.
- Wenn der Ausgabepin die Verbindung akzeptiert, wird IPin::ReceiveConnection am Eingabenadel aufgerufen.
- Wenn der Eingabestift auch die Verbindung akzeptiert, ist der Verbindungsversuch erfolgreich, und die Pins sind verbunden.
Einige Pins können getrennt und wieder verbunden werden, während der Filter aktiv ist. Diese Art der Erneutverbindung wird als dynamische Wiederverbindung bezeichnet. Weitere Informationen finden Sie unter Dynamische Grapherstellung. Die meisten Filter unterstützen jedoch keine dynamische Wiederherstellung der Verbindung.
Filter werden normalerweise in nachgeschalteter Reihenfolge verbunden, d. h. die Eingabepins des Filters werden vor den Ausgabepins verbunden. Ein Filter sollte diese Verbindungsreihenfolge immer unterstützen. Einige Filter unterstützen auch Verbindungen in umgekehrter Reihenfolge– zuerst Ausgabepins, gefolgt von Eingabestiften. Beispielsweise kann es möglich sein, den Ausgabepin eines MUX-Filters mit dem Dateischreiberfilter zu verbinden, bevor die Eingabepins des MUX-Filters verbunden werden.
Wenn die Connect - oder ReceiveConnection-Methode eines Pins aufgerufen wird, muss der Pin überprüfen, ob er die Verbindung unterstützen kann. Die Details hängen vom jeweiligen Filter ab. Zu den am häufigsten verwendeten Aufgaben gehören die folgenden:
- Überprüfen Sie, ob der Medientyp akzeptabel ist.
- Aushandeln eines Zuteilungsobjekts
- Fragen Sie den anderen Pin nach erforderlichen Schnittstellen ab.