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.]
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 COutputQueue
aufgerufen, 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 |
|
Bibliothek |
|