CSource-Klasse

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:
- Leiten Sie eine Klasse von CSourceStream ab.
- Überschreiben Sie die CSourceStream::GetMediaType-Methode und möglicherweise die CSourceStream::CheckMediaType-Methode, die Medientypen für den Pin überprüft.
- Implementieren Sie die CBaseOutputPin::D ecideBufferSize-Methode, die die Pufferanforderungen des Pins zurückgibt.
- Implementieren Sie die CSourceStream::FillBuffer-Methode, die einen Medienbeispielpuffer mit Daten füllt.
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 |
|
| Bibliothek |
|