Freigeben über


CBaseRenderer.SourceThreadCanWait-Methode

[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 SourceThreadCanWait -Methode enthält oder gibt den Streamingthread frei.

Syntax

virtual HRESULT SourceThreadCanWait(
   BOOL bCanWait
);

Parameter

bCanWait

Boolescher Wert, der angibt, ob der Streamingthread gehalten werden soll. Bei TRUE wird der Streamingthread blockiert, während der Filter auf das Rendern der nächsten Beispiele wartet. Bei FALSE wird der Streamingthread freigegeben.

Rückgabewert

Gibt S_OK zurück.

Bemerkungen

Wenn Sie die SourceThreadCanWait -Methode mit dem Wert FALSE aufrufen, wird erzwungen, dass der Filter von einem blockierten IMemInputPin::Receive-Aufruf zurückgegeben wird. Wenn der Filter ausgeführt wird, blockiert er Empfangsaufrufe bis zur Präsentationszeit des aktuellen Beispiels. Wenn der Filter angehalten wird, wird der Empfang von Aufrufen auf unbestimmte Zeit blockiert. Dieses Verhalten reguliert den Datenfluss im Stream. Wenn der Filter jedoch beendet oder geleert wird, sollte er nicht blockiert werden.

Die Blockierung wird von der CBaseRenderer::WaitForRenderTime-Methode gesteuert, die auf zwei Ereignisse wartet: CBaseRenderer::m_RenderEvent und CBaseRenderer::m_ThreadSignal. Das m_RenderEvent-Ereignis wird signalisiert, wenn die Präsentationszeit erreicht ist. Das m_ThreadSignal-Ereignis wird signalisiert, wenn SourceThreadCanWait mit dem Wert FALSE aufgerufen wird. Wenn Sie SourceThreadCanWait mit dem Wert TRUE aufrufen, wird das Ereignis zurückgesetzt.

Die Methoden CBaseRenderer::Stop und CBaseRenderer::BeginFlush rufen SourceThreadCanWait mit dem Wert FALSE auf (Veröffentlichung des Streamingthreads). Die Methoden CBaseRenderer::P ause, CBaseRenderer::Run und CBaseRenderer::EndFlush rufen SourceThreadCanWait mit dem Wert TRUE auf.

Anforderungen

Anforderung Wert
Header
Renbase.h (streams.h einschließen)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)

Siehe auch

CBaseRenderer-Klasse