CSource-Klasse

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

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 sind. Jeder Ausgabepin erstellt einen Workerthread, der Medienbeispiele nach unten pusht.

Hinweis

Die CSource-Klasse wurde entwickelt, um das Pushmodell für den Datenfluss zu unterstützen. Diese Klasse wird nicht zum Erstellen von Dateilesefiltern empfohlen. Dateileser sollten das Pullmodell über die IAsyncReader-Schnittstelle unterstützen. Weitere Informationen finden Sie unter Datenfluss für Filterentwickler.

Geschützte Membervariablen BESCHREIBUNG
m_iPins Anzahl der Pins auf dem Filter.
m_paStreams Array von Pins.
m_cStateLock Kritisches Abschnittsobjekt, das den Filterzustand schützt.
Öffentliche Methoden BESCHREIBUNG
CSource Konstruktormethode.
~CSource Destruktormethode.
GetPinCount Ruft die Anzahl der Pins für den 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 Ausgabestift hinzu.
RemovePin Entfernt eine angegebene Pin aus dem Filter.
FindPinNumber Ruft die Nummer eines angegebenen Pins im Filter ab.
IBaseFilter-Methoden BESCHREIBUNG
FindPin Ruft die Pin mit dem angegebenen Bezeichner ab.

Bemerkungen

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 sind. Die Pins fügen sich in ihren Konstruktormethoden automatisch dem Filter hinzu und entfernen sich selbst in ihren Destruktormethoden.

Um den Filterstatus zwischen mehreren Threads zu synchronisieren, rufen Sie die CSource::p StateLock-Methode auf. Diese Methode gibt einen Zeiger auf den abschnitt filter-state critical zurück. Verwenden Sie die CAutoLock-Klasse , um den kritischen Abschnitt zu speichern. Über eine Pin können Sie wie folgt über die CBasePin::m_pFilter-Membervariable des Pins auf pStateLock zugreifen:

CAutoLock lock(m_pFilter->pStateLock());

Anforderungen

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

Siehe auch

Schreiben von Quellfiltern