CTransformFilter-Klasse
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
Die CTransformFilter
-Klasse ist eine Basisklasse zum Implementieren von Transformationsfiltern. Diese Klasse ist für die Implementierung eines Transformationsfilters mit einem Eingabe- und einem Ausgabestift konzipiert. Es verwendet separate Zuteilungen für den Eingabenadel und den Ausgabenadel. Verwenden Sie die CTransInPlaceFilter-Klasse , um einen Filter zu erstellen, der Daten direkt verarbeitet.
Dieser Filter verwendet die CTransformInputPin-Klasse als Eingabenadel und die CTransformOutputPin-Klasse für den Ausgabepin. In der Regel müssen Sie diese Pinklassen nicht außer Kraft setzen. Die meisten Pinmethoden rufen entsprechende Methoden für die CTransformFilter
-Klasse 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 Sie die folgenden Methoden:
- CTransformFilter::CheckInputType
- CTransformFilter::CheckTransform
- CTransformFilter::D ecideBufferSize
- CTransformFilter::GetMediaType
- CTransformFilter::Transform
Abhängig von den Anforderungen Ihres Filters müssen Sie möglicherweise auch andere Methoden außer Kraft setzen.
Medientypen
Der Eingabenadel dieses Filters schlägt keine Medientypen vor. Es basiert auf dem Upstream-Filter, um die Medientypen für die Verbindung vorzuschlagen. Der Grund für diesen Entwurf ist, dass der Upstream-Filter in den meisten Fällen weitere Informationen zum Format bereitstellen kann. Bei Videoformaten kennt der Upstream-Filter beispielsweise die Videodimensionen und die Bildrate, 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 Eingabenadel. Wenn der Upstream-Filter einen Medientyp vorschlägt, ruft der Eingabenadel die CheckInputType-Methode des Filters auf (rein virtuell).
Bis der Eingabepin verbunden ist, lehnt der Ausgabepin alle Verbindungen ab und gibt keine bevorzugten Medientypen zurück. Nachdem der Eingabepin verbunden ist, gibt der Ausgabepin eine Liste der bevorzugten Typen zurück, indem die GetMediaType-Methode des Filters aufgerufen wird. Es überprüft ausgabetypen auf die Verbindung über die CheckTransform-Methode des Filters. (Beide Methoden sind rein virtuell.) In der Regel bestimmt der Eingabetyp teilweise die zulässigen Ausgabetypen.
Abhängig vom Filter können Sie einige der unterstützten Medientypen des Filters 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 Transform-Methode (ebenfalls rein virtuell) des Filters 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 Streamendebenachrichtigung 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 Filterstatus schützt. |
m_csReceive | Kritischer Abschnitt, der den Streamingstatus schützt. |
m_pInput | Zeiger auf den Eingabenadel. |
m_pOutput | Zeiger auf den Ausgabenadel. |
Öffentliche Methoden | Beschreibung |
CTransformFilter | Konstruktormethode. |
~ CTransformFilter | Destruktormethode. |
GetPinCount | Ruft die Anzahl der Pins für den Filter ab. Virtuellen. |
GetPin | Ruft einen Pin ab. Virtuellen. |
Transform | Transformiert ein Eingabebeispiel, um ein Ausgabebeispiel zu erstellen. 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 auf einer der Pins des Filters festgelegt ist. Virtuellen. |
CheckConnect | Bestimmt, ob eine Pinverbindung geeignet ist. Virtuellen. |
BreakConnect | Gibt einen Pin von einer Verbindung frei. Virtuellen. |
CompleteConnect | Schließt eine Pinverbindung ab. Virtuellen. |
Empfangen | Empfängt ein Medienbeispiel, verarbeitet es und übermittelt ein Ausgabebeispiel an den Downstreamfilter. Virtuellen. |
InitializeOutputSample | Ruft ein neues Ausgabebeispiel ab und initialisiert es. |
EndOfStream | Benachrichtigt den Filter, dass vom Eingabenadel keine zusätzlichen Daten erwartet werden. Virtuellen. |
BeginFlush | Startet einen Löschvorgang. Virtuellen. |
EndFlush | Beendet einen Löschvorgang. Virtuellen. |
NewSegment | Benachrichtigt den Filter, dass Medienbeispiele, die nach diesem Aufruf empfangen wurden, als Segment gruppiert sind. Virtuellen. |
Reine 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. |
EntscheidenBufferSize | Legt die Pufferanforderungen des Ausgabepins fest. |
GetMediaType | Ruft einen bevorzugten Medientyp für den Ausgabenadel 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 |
|
Bibliothek |
|