Compartilhar via


Método IMemInputPin::Receive (strmif.h)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in 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 Audio/Video Capture in 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 Receive método recebe o próximo exemplo de mídia no fluxo.

Sintaxe

HRESULT Receive(
  [in] IMediaSample *pSample
);

Parâmetros

[in] pSample

Ponteiro para a interface IMediaSample do exemplo.

Retornar valor

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

Código de retorno Descrição
S_OK
Êxito.
S_FALSE
A amostra foi rejeitada.
E_POINTER
Argumento de ponteiro NULL.
VFW_E_INVALIDMEDIATYPE
Tipo de mídia inválido.
VFW_E_RUNTIME_ERROR
Ocorreu um erro em tempo de execução.
VFW_E_WRONG_STATE
O pino está parado.

Comentários

Esse método é síncrono e possivelmente bloqueado. O pino faz um dos seguintes procedimentos:

  • Rejeita o exemplo.
  • Retorna imediatamente e processa o exemplo em um thread de trabalho.
  • Processa o exemplo antes de retornar.
No último caso, o método pode ser bloqueado indefinidamente. Se isso acontecer, o método IMemInputPin::ReceiveCanBlock retornará S_OK.

Se o pino usar um thread de trabalho para processar o exemplo, ele conterá uma contagem de referência no exemplo. De qualquer forma, o pino de saída não pode reutilização direta deste exemplo. Ele deve chamar o método IMemAllocator::GetBuffer para obter uma nova amostra.

Se esse método retornar S_FALSE ou um código de erro, o filtro de upstream deverá parar de enviar amostras até que o grafo pare ou conclua uma operação de liberação. Os motivos típicos para um valor retornado S_FALSE incluem:

  • O pino downstream está sendo liberado; ou seja, recebeu uma chamada beginflush e ainda não recebeu uma chamada endflush .
  • O filtro downstream detectou o final do fluxo. (Consulte Notificações de fim de Stream.)

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho strmif.h (inclua Dshow.h)
Biblioteca Strmiids.lib

Confira também

Códigos de erro e êxito

IMemInputPin Interface