COutputQueue-Klasse

coutputqueue

Die COutputQueue Klasse implementiert eine Warteschlange zum Bereitstellen von Medienbeispielen.

Diese Klasse ermöglicht eine Ausgabehefte zum asynchronen Bereitstellen von Beispielen. Beispiele werden in einer Warteschlange platziert, und ein Arbeitsthread liefert sie an die Eingabehefte. Die Warteschlange kann auch Steuerelementnachrichten enthalten, die ein neues Segment, eine End-of-Stream-Benachrichtigung oder einen Spülvorgang angeben.

Um diese Klasse zu verwenden, erstellen Sie ein COutputQueue-Objekt für jede Ausgabehefte auf dem Filter. Geben Sie in der Konstruktormethode den Eingabeheften an, der mit dieser Ausgabehefte verbunden ist. Mit dieser Klasse ruft die Ausgabehefte keine Methoden direkt auf der Eingabehefte auf. Stattdessen ruft sie entsprechende Methoden in , wie in COutputQueueder folgenden Tabelle dargestellt.

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

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

Geschützte Membervariablen BESCHREIBUNG
m_pPin Zeiger auf die IPin-Schnittstelle des Eingabehefts.
m_pInputPin Zeiger auf die IMemInputPin-Schnittstelle des Eingabehefts.
m_bBatchExact Flag, das angibt, ob das Objekt Beispiele in genauen Batches liefert.
m_lBatchSize Batchgröße.
m_List Medienbeispielwarteschlange.
m_hSem Behandeln Sie einen Semaphor, der vom Thread verwendet wird, um auf Beispiele zu warten.
m_evFlushComplete Ereignis, das signalisiert, wenn ein Spülvorgang abgeschlossen ist.
m_hThread Behandeln Sie den Arbeitsthread.
m_ppSamples Array von Beispielen der Größe COutputQueue::m_lBatchSize.
m_nBatched Anzahl der derzeit batchierten Beispiele und warten auf die Verarbeitung.
m_lWaiting Flag, das einen nichtzero-Wert aufweist, wenn der Thread auf ein Beispiel wartet.
m_bFlushing Kennzeichnen, das angibt, ob das Objekt einen Spülvorgang ausführt.
m_bTerminate Kennzeichnen, das angibt, ob der Thread beendet werden soll.
m_bSendAnyway Kennzeichnen, um die Batchverarbeitung außer Kraft zu setzen.
m_hr HRESULT-Wert , der angibt, ob das Objekt Beispiele 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 liefert sie an die Eingabehefte.
IsQueued Bestimmt, ob das Objekt einen Arbeitsthread zum Bereitstellen von Beispielen verwendet.
QueueSample Warteschlangen eines Medienbeispiels oder einer Steuerelementnachricht.
IsSpecialSample Bestimmt, ob Warteschlangendaten eine Steuerelementnachricht sind.
FreeSamples Alle ausstehenden Beispiele werden freigestellt.
NotifyThread Benachrichtigt den Thread, dass die Warteschlange Daten enthält.
Öffentliche Methoden BESCHREIBUNG
COutputQueue Konstruktormethode.
~COutputQueue Destructor-Methode.
BeginFlush Beginnt einen Spülvorgang.
EndFlush Beendet einen Spülvorgang.
EOS Stellt einen End-of-Stream-Aufruf an den Eingabeheften bereit.
SendAnyway Stellt alle ausstehenden Beispiele bereit.
NewSegment Stellt ein neues Segment an die Eingabehefte bereit.
Erhalten Stellt ein Medienbeispiel an die Eingabehefte bereit.
EmpfangenMultiple Stellt einen Batch von Medienbeispielen an die Eingabehefte bereit.
Zurücksetzen Setzt das Objekt zurück, damit mehr Daten empfangen werden können.
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.

Requirements (Anforderungen)

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