Método CSourceStream.DoBufferProcessingLoop

[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 DoBufferProcessingLoop método gera dados de mídia e os entrega ao pino de entrada downstream.

Sintaxe

virtual HRESULT DoBufferProcessingLoop();

Parâmetros

Esse método não tem parâmetros.

Retornar valor

Retorna um valor HRESULT . Os valores possíveis incluem os mostrados na tabela a seguir.

Código de retorno Descrição
S_FALSE
O thread recebeu uma solicitação de parada.
S_OK
O fluxo terminou ou o filtro downstream não está aceitando exemplos.

Comentários

Esse método implementa o loop main que processa dados e os fornece downstream. Cada vez por meio do loop, o método recupera um exemplo de mídia vazio do alocador. Ele passa o exemplo para o método CSourceStream::FillBuffer . O método FillBuffer , que a classe derivada deve implementar, gera dados de mídia e os coloca no buffer de exemplo.

O loop termina quando qualquer um dos seguintes ocorre:

  • O método IMemInputPin::Receive do pin de entrada rejeita um exemplo.
  • O método FillBuffer retorna S_FALSE, indicando o final do fluxo ou retorna um código de erro.
  • O thread recebe uma solicitação CSourceStream::Stop .

O DoBufferProcessingLoop método manipula a notificação de fim do fluxo. Se ocorrer um erro, ele enviará um evento EC_ERRORABORT para o gerenciador de grafo de filtro.

Requisitos

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

Confira também

Classe CSourceStream