Compartilhar via


Método IMFMediaStream::RequestSample (mfidl.h)

Solicita um exemplo da fonte de mídia.

Sintaxe

HRESULT RequestSample(
  [in] IUnknown *pToken
);

Parâmetros

[in] pToken

Ponteiro para a interface IUnknown para um objeto que é usado como um token para a solicitação. O chamador deve implementar esse objeto. Este parâmetro pode ser NULL. Consulte Observações.

Valor retornado

O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.

Código de retorno Descrição
S_OK
O método foi bem-sucedido.
MF_E_END_OF_STREAM
O final do fluxo foi atingido.
MF_E_MEDIA_SOURCE_WRONGSTATE
A fonte de mídia é interrompida.
MF_E_SHUTDOWN
O método Shutdown da origem foi chamado.

Comentários

Se pToken não for NULL, o fluxo de mídia chamará AddRef no pToken e colocará o token em uma fila inicial e inicial.

Quando o próximo exemplo estiver disponível, o fluxo de fluxo de mídia fará o seguinte:

  1. Extrai o primeiro token da fila.
  2. Define o atributo MFSampleExtension_Token no exemplo de mídia. Os dados do atributo são um ponteiro para o objeto de token.
  3. Envia um evento MEMediaSample . Os dados do evento são um ponteiro para a interface IMFSample do exemplo de mídia.
  4. Chama a Versão no token.
Se o fluxo de mídia não puder atender à solicitação do chamador para um exemplo, ele simplesmente liberará o objeto de token e ignorará as etapas 2 e 3.

O chamador deve monitorar a contagem de referência no token de solicitação. Se o fluxo de mídia enviar um evento MEMediaSample , obtenha o atributo MFSampleExtension_Token do exemplo e corresponda ao valor do atributo com o token. Se a contagem de referência do token cair para zero e você não recebeu um evento MEMediaSample, isso significa que a solicitação foi descartada.

Como o pipeline do Media Foundation é multithreaded, o método RequestSample da origem pode ser chamado depois que a origem for interrompida. Se a origem da mídia for interrompida, o método deverá retornar MF_E_MEDIA_SOURCE_WRONGSTATE. O pipeline não trata esse código de retorno como uma condição de erro. Se a origem retornar qualquer outro código de erro, o pipeline o tratará como um erro fatal e interromperá a sessão.

Nota Versões anteriores da documentação listavam o código de erro errado para esse caso.

 

Se a fonte de mídia for pausada, o método será bem-sucedido, mas o fluxo não fornecerá o exemplo até que a origem seja iniciada novamente.

Se uma fonte de mídia encontrar um erro de forma assíncrona durante o processamento de dados, ela deverá sinalizar o erro de uma das seguintes maneiras (mas não ambas):

  • Retornar um código de erro da próxima chamada RequestSample .
  • Enviar um evento MEError .

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho mfidl.h
Biblioteca Mfuuid.lib

Confira também

IMFMediaStream

Fontes de mídia