Método CBaseRenderer.SourceThreadCanWait

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O SourceThreadCanWait método mantém ou libera o thread de streaming.

Sintaxe

virtual HRESULT SourceThreadCanWait(
   BOOL bCanWait
);

Parâmetros

bCanWait

Valor booliano que indica se o thread de streaming deve ser armazenado. Se TRUE, o thread de streaming será bloqueado enquanto o filtro aguarda para renderizar os próximos exemplos. Se FALSE, o thread de streaming será liberado.

Retornar valor

Returns S_OK.

Comentários

Chamar o SourceThreadCanWait método com o valor FALSE força o filtro a retornar de uma chamada IMemInputPin::Receive bloqueada. Quando o filtro estiver em execução, ele bloqueará Receber chamadas até o horário de apresentação do exemplo atual. Quando o filtro é pausado, ele bloqueia Receber chamadas indefinidamente. Esse comportamento regula o fluxo de dados no fluxo. No entanto, quando o filtro é interrompido ou liberado, ele não deve ser bloqueado.

O bloqueio é controlado pelo método CBaseRenderer::WaitForRenderTime , que aguarda dois eventos: CBaseRenderer::m_RenderEvent e CBaseRenderer::m_ThreadSignal. O evento m_RenderEvent é sinalizado quando a hora da apresentação chega. O evento m_ThreadSignal é sinalizado quando SourceThreadCanWait é chamado com o valor FALSE. Chamar SourceThreadCanWait com o valor TRUE redefine o evento.

Os métodos CBaseRenderer::Stop e CBaseRenderer::BeginFlush chamam SourceThreadCanWait com o valor FALSE (liberando o thread de streaming). Os métodos CBaseRenderer::P ause, CBaseRenderer::Run e CBaseRenderer::EndFlush chamam SourceThreadCanWait com o valor TRUE.

Requisitos

Requisito Valor
parâmetro
Renbase.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)

Confira também

Classe CBaseRenderer