Metodo CBaseRenderer.SourceThreadCanWait

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il SourceThreadCanWait metodo contiene o rilascia il thread di streaming.

Sintassi

virtual HRESULT SourceThreadCanWait(
   BOOL bCanWait
);

Parametri

bCanWait

Valore booleano che indica se contenere il thread di streaming. Se TRUE, il thread di streaming viene bloccato mentre il filtro attende il rendering degli esempi successivi. Se FALSE, il thread di streaming viene rilasciato.

Valore restituito

Restituisce S_OK.

Commenti

La chiamata al metodo con il SourceThreadCanWait valore FALSE forza la restituzione del filtro da una chiamata IMemInputPin::Receive bloccata. Quando il filtro è in esecuzione, blocca le chiamate Receive fino all'ora di presentazione dell'esempio corrente. Quando il filtro viene sospeso, blocca le chiamate Receive per un periodo illimitato. Questo comportamento regola il flusso di dati nel flusso. Quando il filtro viene arrestato o scaricato, tuttavia, non deve bloccarsi.

Il blocco è controllato dal metodo CBaseRenderer::WaitForRenderTime , che attende due eventi: CBaseRenderer::m_RenderEvent e CBaseRenderer::m_ThreadSignal. L'evento m_RenderEvent viene segnalato quando arriva l'ora di presentazione. L'evento m_ThreadSignal viene segnalato quando SourceThreadCanWait viene chiamato con il valore FALSE. La chiamata SourceThreadCanWait con il valore TRUE reimposta l'evento.

I metodi CBaseRenderer::Stop e CBaseRenderer::BeginFlush chiamano SourceThreadCanWait con il valore FALSE (rilasciando il thread di streaming). I metodi CBaseRenderer::P ause, CBaseRenderer::Run e CBaseRenderer::EndFlush chiamano SourceThreadCanWait con il valore TRUE.

Requisiti

Requisito Valore
Intestazione
Renbase.h (include Streams.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)

Vedi anche

Classe CBaseRenderer