CSource-Klasse

csource-Klassenhierarchie

Die CSource-Klasse ist eine Basisklasse zum Implementieren von Quellfiltern. Ein von CSource abgeleiteter Filter enthält einen oder mehrere Ausgabepins, die von der CSourceStream-Klasse abgeleitet wurden. Jeder Ausgabepin erstellt einen Arbeitsthread, der Medienbeispiele nachgeschaltet pusht.

Hinweis

Die CSource-Klasse ist für die Unterstützung des Pushmodells für den Datenfluss konzipiert. Diese Klasse wird nicht zum Erstellen von Dateilesefiltern empfohlen. Dateileser sollten das Pullmodell über die IAsyncReader-Schnittstelle unterstützen. Weitere Informationen finden Sie unter Data Flow for Filter Developers.

Geschützte Membervariablen BESCHREIBUNG
m _ iPins Anzahl der Stecknadeln im Filter.
m _ paStreams Array von Stecknadeln.
m _ cStateLock Kritisches Abschnittsobjekt, das den Filterzustand schützt.
Öffentliche Methoden BESCHREIBUNG
CSource Konstruktormethode.
~CSource Destruktormethode.
GetPinCount Ruft die Anzahl der Stecknadeln im Filter ab.
GetPin Ruft eine Stecknadel ab.
pStateLock Ruft einen Zeiger auf das kritische Abschnittsobjekt des Filters ab.
AddPin Fügt dem Filter einen neuen Ausgabepin hinzu.
RemovePin Entfernt einen angegebenen Pin aus dem Filter.
FindPinNumber Ruft die Nummer eines angegebenen Pins für den Filter ab.
IBaseFilter-Methoden BESCHREIBUNG
FindPin Ruft den Pin mit dem angegebenen Bezeichner ab.

Hinweise

Gehen Sie wie folgt vor, um einen Ausgabepin zu implementieren:

Gehen Sie wie folgt vor, um den Filter zu implementieren:

  • Leiten Sie eine Klasse von CSource ab.
  • Erstellen Sie im Konstruktor einen oder mehrere Ausgabepins, die von CSourceStream abgeleitet wurden. Die Pins fügen sich in ihren Konstruktormethoden automatisch dem Filter hinzu und entfernen sich selbst in ihren Destruktormethoden.

Um den Filterzustand zwischen mehreren Threads zu synchronisieren, rufen Sie die CSource::p StateLock-Methode auf. Diese Methode gibt einen Zeiger auf den kritischen Abschnitt für den Filterzustand zurück. Verwenden Sie die CAutoLock-Klasse, um den kritischen Abschnitt zu halten. Über eine Stecknadel können Sie wie folgt über die Membervariable CBasePin::m _ pFilter des Pins auf pStateLock zugreifen:

CAutoLock lock(m_pFilter->pStateLock());

Anforderungen

Anforderung Wert
Header
Source.h (include Streams.h)
Bibliothek
Strmbase.lib (Einzelhandels-Builds);
Strmbasd.lib (Debugbuilds)

Weitere Informationen

Schreiben von Quellfiltern