Stecknadelverbindungen
Filter stellen über die IPin-Schnittstelle eine Verbindung an ihren Stecknadeln her. Ausgabepins stellen eine Verbindung mit Eingabepins her. Jede Pinverbindung verfügt über einen Medientyp, der von der AM _ MEDIA _ TYPE-Struktur beschrieben wird.
Eine Anwendung verbindet Filter durch Aufrufen von Methoden im Filter-Graph-Manager, niemals durch Aufrufen von Methoden für die Filter oder Stecknadeln selbst. Die Anwendung kann direkt angeben, welche Filter eine Verbindung herstellen sollen, indem sie die Methode IFilterGraph::ConnectDirect oder IGraphBuilder::Verbinden aufruft. Oder filtert indirekt mithilfe einer Grapherstellungsmethode wie IGraphBuilder::RenderFile.
Damit die Verbindung erfolgreich hergestellt werden kann, müssen beide Filter im Filterdiagramm angezeigt werden. Die Anwendung kann dem Diagramm einen Filter hinzufügen, indem sie die IFilterGraph::AddFilter-Methode aufruft. Der Filter Graph-Manager kann dem Diagramm ebenfalls Filter hinzufügen. Wenn ein Filter hinzugefügt wird, ruft der Filter Graph Manager die IBaseFilter::JoinFilterGraph-Methode des Filters auf, um den Filter zu benachrichtigen.
Die allgemeine Übersicht über den Verbindungsprozess lautet wie folgt:
- Der Filter Graph Manager ruft IPin::Verbinden auf dem Ausgabepin auf und übergibt einen Zeiger auf den Eingabepin.
- Wenn der Ausgabepin die Verbindung akzeptiert, ruft er IPin::ReceiveConnection auf dem Eingabepin auf.
- Wenn der Eingabepin auch die Verbindung akzeptiert, ist der Verbindungsversuch erfolgreich, und die Pins sind verbunden.
Einige Pins können getrennt und erneut verbunden werden, während der Filter aktiv ist. Diese Art der erneuten Verbindung wird als dynamische Erneute Verbindung bezeichnet. Weitere Informationen finden Sie unter Dynamic Graph Building. Die meisten Filter unterstützen jedoch keine dynamische Wiederherstellung der Verbindung.
Filter werden in der Regel in downstreamer 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 – ausgabepins first, gefolgt von Eingabepins. Beispielsweise kann es möglich sein, den Ausgabepin eines MUX-Filters mit dem Dateiwriterfilter zu verbinden, bevor Sie die Eingabepins des MUX-Filters verbinden.
Wenn die Verbinden- 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. Die gängigsten Aufgaben umfassen Folgendes:
- Überprüfen Sie, ob der Medientyp akzeptabel ist.
- Aushandeln einer Zuweisung
- Fragen Sie den anderen Pin nach erforderlichen Schnittstellen ab.