Freigeben über


COutputQueue-Klasse

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

coutputqueue

Die COutputQueue -Klasse implementiert eine Warteschlange zum Übermitteln von Medienbeispielen.

Diese Klasse ermöglicht es einem Ausgabepin, Beispiele asynchron zu übermitteln. Beispiele werden in einer Warteschlange platziert, und ein Workerthread übermittelt sie an den Eingabenadel. Die Warteschlange kann auch Steuermeldungen enthalten, die auf ein neues Segment, eine Benachrichtigung zum Ende des Datenstroms 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 Eingabenadel an, der mit diesem Ausgabepin verbunden ist. Bei Verwendung dieser Klasse ruft der Ausgabepin Methoden nicht direkt am Eingabepin auf. Stattdessen werden die entsprechenden Methoden in COutputQueueaufgerufen, 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 COutputQueue Objekt so konfigurieren, dass Beispiele synchron ohne Einen Workerthread übermittelt werden. Das -Objekt kann auch zur Laufzeit entscheiden, ob ein Workerthread verwendet werden soll, basierend auf den Merkmalen des Eingabepins. 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 exakten Batches liefert.
m_lBatchSize Batchgröße.
m_List Medienbeispielwarteschlange.
m_hSem Handle für ein Semaphor, das vom Thread verwendet wird, um auf Beispiele zu warten.
m_evFlushComplete Ereignis, das angibt, wenn ein Leerungsvorgang abgeschlossen ist.
m_hThread Handle für den Workerthread.
m_ppSamples Array von Beispielen der Größe COutputQueue::m_lBatchSize.
m_nBatched Anzahl der Stichproben, die derzeit in Batchverarbeitung ausgeführt werden und noch verarbeitet werden.
m_lWaiting Flag, das einen Wert ungleich Null aufweist, wenn der Thread auf ein Beispiel wartet.
m_bFlushing Flag, das angibt, ob das Objekt einen Leerungsvorgang ausführt.
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 Beispiele akzeptiert.
m_hEventPop Ereignis, das immer dann 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 übermittelt sie an den Eingabenadel.
IsQueued Bestimmt, ob das Objekt einen Workerthread zum Übermitteln von Beispielen verwendet.
QueueSample Stellt ein Medienbeispiel oder eine Steuerelementnachricht in die Warteschlange.
IsSpecialSample Bestimmt, ob es sich bei Daten in der Warteschlange um eine Kontrollmeldung handelt.
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 Übermittelt einen End-of-Stream-Aufruf an den Eingabepin.
SendAnyway Liefert alle ausstehenden Beispiele.
NewSegment Stellt ein neues Segment an den Eingabenadel bereit.
Empfangen Übermittelt ein Medienbeispiel an den Eingabenadel.
ReceiveMultiple Übermittelt einen Batch von Medienbeispielen an den Eingabenadel.
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 (Streams.h einschließen)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)