COutputQueue-Klasse

coutputqueue

Die COutputQueue -Klasse implementiert eine Warteschlange zum Senden von Medienbeispielen.

Diese Klasse ermöglicht es einem Ausgabepin, Stichproben asynchron zu liefern. Beispiele werden in einer Warteschlange platziert, und ein Arbeitsthread übergibt sie an den Eingabepin. Die Warteschlange kann auch Steuermeldungen enthalten, die auf ein neues Segment, eine Benachrichtigung am Ende des Streams oder einen Leerungsvorgang hinweisen.

Um diese Klasse zu verwenden, erstellen Sie ein COutputQueue-Objekt für jeden Ausgabepin im Filter. Geben Sie in der Konstruktormethode den Eingabepin an, der mit diesem Ausgabepin verbunden ist. Bei Verwendung dieser Klasse werden methoden vom Ausgabepin nicht direkt auf dem Eingabepin aufruft. Stattdessen ruft sie die entsprechenden Methoden in COutputQueue auf, wie in der folgenden Tabelle gezeigt.

Pin-Methode COutputQueue-Methode
IPin::BeginFlush BeginFlush
IPin::EndFlush EndFlush
IPin::EndOfStream EOS
IPin::NewSegment NewSegment
IMemInputPin::Receive Empfangen
IMemInputPin::ReceiveMultiple ReceiveMultiple

Optional können Sie das -Objekt so konfigurieren, COutputQueue dass Beispiele synchron ohne Arbeitsthread zugestellt werden. Das -Objekt kann auch zur Laufzeit basierend auf den Merkmalen des Eingabepins entscheiden, ob ein Arbeitsthread verwendet werden soll. Weitere Informationen finden Sie unter COutputQueue::COutputQueue.

Geschützte Membervariablen Beschreibung
m _ pPin Zeiger auf die IPin-Schnittstelle des Eingabepins.
m _ pInputPin Zeiger auf die IMemInputPin-Schnittstelle des Eingabepins.
m _ bBatchExact Flag, das angibt, ob das Objekt Stichproben in genauen Batches liefert.
m _ lBatchSize Batchgröße.
_m-Liste Medienbeispielwarteschlange.
m _ hSem Handle für ein Semaphor, das vom Thread verwendet wird, um auf Stichproben zu warten.
m _ evFlushComplete Ereignis, das signalisiert, wenn ein Leerungsvorgang abgeschlossen wurde.
m _ hThread Handle für den Arbeitsthread.
m _ ppSamples Array von Beispielen der Größe COutputQueue::m _ lBatchSize.
m _ nBatched Anzahl von Stichproben, die derzeit als Batch verarbeitet werden und auf die Verarbeitung wartet.
m _ lWaiting Flag mit einem Wert ungleich 0 (null), wenn der Thread auf ein Beispiel wartet.
m _ bFlushing Flag, das angibt, ob das Objekt einen Leerungsvorgang vorgibt.
m _ bTerminate Flag, das angibt, ob der Thread beendet werden soll.
m _ bSendAnyway Flag zum Überschreiben der Batchverarbeitung.
m _ hr HRESULT-Wert, der angibt, ob das Objekt Stichproben akzeptiert.
m _ hEventPop Ereignis, das signalisiert wird, wenn das Objekt ein Beispiel aus der Warteschlange entfernt.
Geschützte Methoden Beschreibung
InitialThreadProc Ruft die COutputQueue::ThreadProc-Methode auf, wenn der Thread erstellt wird.
ThreadProc Ruft Beispiele aus der Warteschlange ab und übergibt sie an den Eingabepin.
IsQueued Bestimmt, ob das -Objekt einen Arbeitsthread verwendet, um Beispiele zu liefern.
QueueSample Reiht ein Medienbeispiel oder eine Steuernachricht in die Warteschlange ein.
IsSpecialSample Bestimmt, ob Daten in der Warteschlange eine Steuermeldung sind.
FreeSamples Gibt alle ausstehenden Beispiele frei.
NotifyThread Benachrichtigt den Thread, dass die Warteschlange Daten enthält.
Öffentliche Methoden Beschreibung
COutputQueue Konstruktormethode.
~COutputQueue Destruktormethode.
BeginFlush Startet einen Leerungsvorgang.
EndFlush Beendet einen Leerungsvorgang.
EOS Übergibt einen End-of-Stream-Aufruf an den Eingabepin.
SendAnyway Stellt alle ausstehenden Beispiele zur Verfügung.
NewSegment Übergibt ein neues Segment an den Eingabepin.
Empfangen Übergibt ein Medienbeispiel an den Eingabepin.
ReceiveMultiple Stellt einen Batch von Medienbeispielen an den Eingabepin zur Verfügung.
Zurücksetzen Setzt das -Objekt zurück, damit es mehr Daten empfangen kann.
IsIdle Bestimmt, ob das Objekt auf Daten wartet.
SetPopEvent Gibt ein Ereignis an, das signalisiert wird, wenn das Objekt ein Beispiel aus der Warteschlange entfernt.

Anforderungen

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