CPullPin-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.]

cpullpin-Klassenhierarchie

Die CPullPin -Klasse bietet Unterstützung für Eingabenadeln, die Daten über die IAsyncReader-Schnittstelle abrufen. Verwenden Sie diese Klasse, wenn Sie einen Filter implementieren, der das Pullmodell verwendet, um Daten aus dem Upstream-Filter anzufordern. Weitere Informationen finden Sie unter Datenfluss im Filterdiagramm und Pullmodell.

Diese Klasse wird nicht von CBasePin abgeleitet oder implementiert die IPin-Schnittstelle , und einige der Methodennamen kollidieren mit IPin, sodass sie am besten als Hilfsobjekt in Ihrer Pin verwendet wird. Gehen Sie wie folgt vor, um diese Klasse zu verwenden:

  1. Leiten Sie eine Hilfsklasse von ab CPullPin, und leiten Sie eine Eingabeheftklasse von CBasePin ab. Deklarieren Sie eine instance des CPullPin Objekts als Membervariable der Pinklasse.
  2. Überschreiben Sie die CBasePin::CheckConnect-Methode , um CPullPin::Connect aufzurufen. Diese Methode fragt den anderen Pin nach IAsyncReader ab.
  3. Überschreiben Sie die CBasePin::BreakConnect-Methode , um CPullPin::D isconnect aufzurufen.
  4. Überschreiben Sie die CBasePin::Active-Methode , um CPullPin::Active aufzurufen. Mit dieser Methode wird ein Workerthread gestartet, der Beispiele aus dem Upstream-Filter abruft. Wenn die Pins eine Verbindung herstellen, können Sie angeben, ob der Workerthread asynchrone oder synchrone Leseanforderungen stellen soll.
  5. Überschreiben Sie die CBasePin::Inactive-Methode , um CPullPin::Inactive aufzurufen. Mit dieser Methode wird der Workerthread heruntergefahren.
  6. Implementieren Sie die reine virtuelle CPullPin::Receive-Methode , um eingehende Beispiele zu verarbeiten und nacheinander zu übermitteln.
  7. Um die Stopp- und Startpositionen festzulegen oder den Stream zu suchen, rufen Sie die CPullPin::Seek-Methode auf. Diese Methode hält den Workerthread an und löscht das Filterdiagramm.
  8. Implementieren Sie die reinen virtuellen Methoden CPullPin::EndOfStream, CPullPin::BeginFlush und CPullPin::EndFlush , wie in den Anmerkungen zu diesen Methoden beschrieben.
  9. Implementieren Sie die reine virtuelle CPullPin::OnError-Methode , um Streamingfehler zu behandeln.
Öffentliche Membervariablen BESCHREIBUNG
m_pAlloc Zeiger auf die IMemAllocator-Schnittstelle des Speicherzuteilungselements.
Öffentliche Methoden BESCHREIBUNG
Aktiv Erstellt einen Workerthread, der Daten vom Ausgabepin abruft.
AlignDown Schneidet einen Wert auf eine angegebene Ausrichtungsgrenze ab.
Ausrichten Rundet einen Wert auf eine angegebene Ausrichtungsgrenze auf.
Verbinden Schließt eine Verbindung mit dem Ausgabenadel ab.
CPullPin Konstruktormethode.
~CPullPin Destruktormethode. Virtuellen.
DecideAllocator Handelt eine Zuweisung mit dem Ausgabenadel aus. Virtuellen.
Trennen Beaks die Verbindung mit dem Ausgabenadel.
Duration Ruft die Dauer des Datenstroms ab.
GetReader Gibt einen Zeiger auf die IAsyncReader-Schnittstelle des Ausgabenadels zurück.
Inaktiv Fährt den Workerthread herunter, der Daten vom Ausgabenadel abruft.
Seek Legt die Start- und Stopppositionen des Streams fest.
Reine virtuelle Methoden BESCHREIBUNG
BeginFlush Informiert den besitzereigenen Filter, die nachgeschalteten Filter zu leeren.
EndFlush Informiert den besitzereigenen Filter, um einen Löschvorgang zu beenden.
EndOfStream Wird aufgerufen, nachdem das Objekt das letzte Beispiel übermittelt hat.
OnError Wird aufgerufen, wenn während des Streamings ein Fehler auftritt.
Empfangen Wird aufgerufen, wenn das Objekt ein Medienbeispiel vom Ausgabenadel empfängt.

Anforderungen

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