CTransformFilter-Klasse

ctransformfilter-Klassenhierarchie

Die CTransformFilter -Klasse ist eine Basisklasse zum Implementieren von Transformationsfiltern. Diese Klasse ist für die Implementierung eines Transformationsfilters mit einem Eingabepin und einem Ausgabepin konzipiert. Es werden separate Zuweisungen für den Eingabepin und den Ausgabepin verwendet. Um einen Filter zu erstellen, der Daten direkt verarbeitet, verwenden Sie die CTransInPlaceFilter-Klasse.

Dieser Filter verwendet die CTransformInputPin-Klasse für den Eingabepin und die CTransformOutputPin-Klasse für den Ausgabepin. In der Regel müssen Sie diese Pinklassen nicht überschreiben. Die meisten pin-Methoden rufen entsprechende Methoden für die -Klasse CTransformFilter auf, sodass Sie die Filtermethoden bei Bedarf überschreiben können. Der Filter erstellt beide Pins in der CTransformFilter::GetPin-Methode. Wenn Sie die Pinklassen überschreiben, müssen Sie GetPin überschreiben, um Ihre benutzerdefinierten Pins zu erstellen.

Um diese Klasse zu verwenden, leiten Sie eine neue Klasse von ab CTransformFilter und implementieren die folgenden Methoden:

Abhängig von den Anforderungen Ihres Filters müssen Sie möglicherweise auch andere Methoden überschreiben.

Medientypen

Der Eingabepin dieses Filters schlägt keine Medientypen vor. es basiert auf dem Upstreamfilter, um die Medientypen für die Verbindung vorzuschlagen. Der Grund für diesen Entwurf ist, dass der Upstreamfilter in den meisten Fällen weitere Informationen zum Format bereitstellen kann. Bei Videoformaten kennt der Upstreamfilter beispielsweise die Videodimensionen und die Bildfrequenz, während der Transformationsfilter keine Möglichkeit hat, diese Informationen zu bestimmen. Wenn Sie dieses Verhalten ändern möchten, überschreiben Sie die GetMediaType-Methode des Eingabepins. Wenn der Upstreamfilter einen Medientyp vorschlägt, ruft der Eingabepin die CheckInputType-Methode des Filters (rein virtuell) auf.

Solange der Eingabepin nicht verbunden ist, verweigert der Ausgabepin alle Verbindungen und gibt keine bevorzugten Medientypen zurück. Nachdem der Eingabepin verbunden wurde, gibt der Ausgabepin eine Liste der bevorzugten Typen zurück, indem die GetMediaType-Methode des Filters aufruft. Die Ausgabetypen für die Verbindung werden über die CheckTransform-Methode des Filters überprüft. (Beide Methoden sind rein virtuell.) In der Regel bestimmt der Eingabetyp teilweise die zulässigen Ausgabetypen.

Je nach Filter können Sie einige der vom Filter unterstützten Medientypen registrieren, damit das Filterzuordnungsobjekt ihren Filter finden kann. Weitere Informationen finden Sie unter Registrieren von DirectShow-Filtern.

Streaming

Diese Klasse stellt die Ausgabedaten nicht in die Warteschlange. Jedes Ausgabebeispiel wird innerhalb der IMemInputPin::Receive-Methode übermittelt. Die Receive-Methode ruft die Transformationsmethode des Filters (auch rein virtuell) auf, um die Daten zu verarbeiten.

Weitere Informationen zur Verwendung dieser Klasse finden Sie unter Writing Transform Filters ( Schreiben von Transformationsfiltern).

Geschützte Membervariablen Beschreibung
m _ bEOSDelivered Flag, das angibt, ob der Filter eine Benachrichtigung zum Streamende gesendet hat.
m _ bSampleSkipped Flag, das angibt, ob das letzte Beispiel gelöscht wurde.
m _ bQualityChanged Flag, das angibt, ob sich die Qualität geändert hat.
m _ csFilter Kritischer Abschnitt, der den Filterzustand schützt.
m _ csReceive Abschnitt "Kritisch", der den Streamingzustand schützt.
m _ pInput Zeiger auf den Eingabepin.
m _ pOutput Zeiger auf den Ausgabepin.
Öffentliche Methoden Beschreibung
CTransformFilter Konstruktormethode.
~ CTransformFilter Destruktormethode.
GetPinCount Ruft die Anzahl der Stecknadeln im Filter ab. Virtuellen.
GetPin Ruft eine Stecknadel ab. Virtuellen.
Transform Transformiert ein Eingabebeispiel, um ein Ausgabebeispiel zu erzeugen. Virtuellen.
StartStreaming Wird aufgerufen, wenn der Filter in den angehaltenen Zustand wechselt. Virtuellen.
StopStreaming Wird aufgerufen, wenn der Filter in den Zustand "Beendet" wechselt. Virtuellen.
AlterQuality Benachrichtigt den Filter, dass eine Qualitätsänderung angefordert wird. Virtuellen.
SetMediaType Wird aufgerufen, wenn der Medientyp an einem der Pins des Filters festgelegt wird. Virtuellen.
CheckConnect Bestimmt, ob eine Stecknadelverbindung geeignet ist. Virtuellen.
BreakConnect Gibt eine Stecknadel aus einer Verbindung frei. Virtuellen.
CompleteConnect Schließt eine Stecknadelverbindung ab. Virtuellen.
Erhalten Empfängt ein Medienbeispiel, verarbeitet es und übergibt ein Ausgabebeispiel an den Downstreamfilter. Virtuellen.
InitializeOutputSample Ruft ein neues Ausgabebeispiel ab und initialisiert es.
EndOfStream Benachrichtigt den Filter, dass keine zusätzlichen Daten vom Eingabepin erwartet werden. Virtuellen.
BeginFlush Startet einen Leerungsvorgang. Virtuellen.
EndFlush Beendet einen Leerungsvorgang. Virtuellen.
NewSegment Benachrichtigt den Filter, dass medienbeispiele, die nach diesem Aufruf empfangen wurden, als Segment gruppiert werden. Virtuellen.
Rein virtuelle Methoden Beschreibung
CheckInputType Überprüft, ob ein angegebener Medientyp für die Eingabe akzeptabel ist.
CheckTransform Überprüft, ob ein Eingabemedientyp mit einem Ausgabemedientyp kompatibel ist.
DecideBufferSize Legt die Pufferanforderungen des Ausgabepins fest.
GetMediaType Ruft einen bevorzugten Medientyp für den Ausgabepin ab.
IMediaFilter-Methoden Beschreibung
Beenden Beendet den Filter.
Anhalten Hält den Filter an.
IBaseFilter-Methoden Beschreibung
FindPin Ruft den Pin mit dem angegebenen Bezeichner ab.

Anforderungen

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