CTransformFilter-Klasse

ctransformfilter class hierarchy

Die CTransformFilter Klasse ist eine Basisklasse für die Implementierung von Transformationsfiltern. Diese Klasse ist für die Implementierung eines Transformationsfilters mit einer Eingabehefte und einer Ausgabehefte konzipiert. Es verwendet separate Allocatoren für die Eingabehefte und den Ausgabeheften. Um einen Filter zu erstellen, der Daten an Ort verarbeitet, verwenden Sie die CTransInPlaceFilter-Klasse .

Dieser Filter verwendet die CTransformInputPin-Klasse für seine Eingabehefte und die CTransformOutputPin-Klasse für den Ausgabeheft. Normalerweise müssen Sie diese Pinklassen nicht außer Kraft setzen. Die meisten Pinmethoden rufen entsprechende Methoden auf der CTransformFilter Klasse auf, sodass Sie die Filtermethoden bei Bedarf außer Kraft setzen können. Der Filter erstellt beide Pins in der CTransformFilter::GetPin-Methode . Wenn Sie die Pinklassen außer Kraft setzen, müssen Sie GetPin außer Kraft setzen, um Ihre benutzerdefinierten Pins zu erstellen.

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

Möglicherweise müssen Sie auch andere Methoden außer Kraft setzen, abhängig von den Anforderungen Ihres Filters.

Medientypen

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

Bis die Eingabehefte verbunden sind, verweigert die Ausgabehefte alle Verbindungen und gibt keine bevorzugten Medientypen zurück. Nachdem die Eingabehefte verbunden sind, gibt die Ausgabehefte eine Liste der bevorzugten Typen zurück, indem sie die GetMediaType-Methode des Filters aufrufen. Sie überprüft Ausgabetypen für die Verbindung über die CheckTransform-Methode des Filters. (Beide Methoden sind rein virtual.) In der Regel bestimmt der Eingabetyp teilweise die zulässigen Ausgabetypen.

Je nach Filter möchten Sie möglicherweise einige der unterstützten Medientypen des Filters registrieren, sodass das Filterzuordnungsobjekt Ihren Filter suchen kann. Weitere Informationen finden Sie unter Registrieren von DirectShow-Filtern.

Streaming

Diese Klasse warteschlange die Ausgabedaten nicht an. Jedes Ausgabebeispiel wird innerhalb der IMemInputPin::Receive-Methode bereitgestellt. Die Empfangen-Methode ruft die Transform-Methode des Filters (auch reine virtuelle) auf, um die Daten zu verarbeiten.

Weitere Informationen zur Verwendung dieser Klasse finden Sie unter Schreiben von Transformationsfiltern.

Geschützte Membervariablen BESCHREIBUNG
m_bEOSDelivered Flag, das angibt, ob der Filter eine End-of-Stream-Benachrichtigung gesendet hat.
m_bSampleSkipped Flag, das angibt, ob das neueste 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 Kritischer Abschnitt, der den Streamingstatus schützt.
m_pInput Zeiger auf die Eingabehefte.
m_pOutput Zeiger auf die Ausgabehefte.
Öffentliche Methoden BESCHREIBUNG
CTransformFilter Konstruktormethode.
~ CTransformFilter Destructor-Methode.
GetPinCount Ruft die Anzahl der Pins auf dem Filter ab. Virtuellen.
GetPin Ruft eine Pin ab. Virtuellen.
Transform Transformiert ein Eingabebeispiel, um ein Ausgabebeispiel zu erstellen. Virtuellen.
StartStreaming Wird aufgerufen, wenn der Filter zum angehaltenen Zustand wechselt. Virtuellen.
StopStreaming Wird aufgerufen, wenn der Filter zum beendeten Zustand wechselt. Virtuellen.
AlterQuality Benachrichtigt den Filter, dass eine Qualitätsänderung angefordert wird. Virtuellen.
SetMediaType Wird aufgerufen, wenn der Medientyp auf einer der Pins des Filters festgelegt ist. Virtuellen.
CheckConnect Bestimmt, ob eine Pinverbindung geeignet ist. Virtuellen.
BreakConnect Gibt eine Pin aus einer Verbindung ab. Virtuellen.
CompleteConnect Schließt eine Pinverbindung ab. Virtuellen.
Erhalten Empfängt ein Medienbeispiel, verarbeitet es und liefert ein Ausgabebeispiel für den nachgelagerten Filter. Virtuellen.
InitializeOutputSample Ruft ein neues Ausgabebeispiel ab und initialisiert es.
EndOfStream Benachrichtigt den Filter, dass keine zusätzlichen Daten aus der Eingabehefte erwartet werden. Virtuellen.
BeginFlush Beginnt einen Spülvorgang. Virtuellen.
EndFlush Beendet einen Spülvorgang. Virtuellen.
NewSegment Benachrichtigt den Filter, den Medienbeispiele nach diesem Aufruf als Segment gruppiert haben. Virtuellen.
Reine virtuelle Methoden BESCHREIBUNG
CheckInputType Überprüft, ob ein angegebener Medientyp für die Eingabe zulässig ist.
CheckTransform Überprüft, ob ein Eingabemedientyp mit einem Ausgabemedientyp kompatibel ist.
DecideBufferSize Legt die Pufferanforderungen der Ausgabehefte fest.
GetMediaType Ruft einen bevorzugten Medientyp für die Ausgabehefte ab.
IMediaFilter-Methoden BESCHREIBUNG
Beenden Beendet den Filter.
Anhalten Hält den Filter an.
IBaseFilter-Methoden BESCHREIBUNG
FindPin Ruft die Pin mit dem angegebenen Bezeichner ab.

Requirements (Anforderungen)

Anforderung Wert
Header
Transfrm.h (enthalten Streams.h)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)