Compartilhar via


Método IMFSourceReader::ReadSample (mfreadwrite.h)

Lê o próximo exemplo da fonte de mídia.

Sintaxe

HRESULT ReadSample(
  [in]  DWORD     dwStreamIndex,
  [in]  DWORD     dwControlFlags,
  [out] DWORD     *pdwActualStreamIndex,
  [out] DWORD     *pdwStreamFlags,
  [out] LONGLONG  *pllTimestamp,
  [out] IMFSample **ppSample
);

Parâmetros

[in] dwStreamIndex

O fluxo do qual extrair dados. O valor pode ser qualquer um dos seguintes.

Valor Significado
0 a 0xFFFFFFFB
O índice baseado em zero de um fluxo.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
O primeiro fluxo de vídeo.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
O primeiro fluxo de áudio.
MF_SOURCE_READER_ANY_STREAM
0xFFFFFFFE
Obtenha o próximo exemplo disponível, independentemente de qual fluxo.

[in] dwControlFlags

Um OR bit a bit de zero ou mais sinalizadores da enumeração MF_SOURCE_READER_CONTROL_FLAG .

[out] pdwActualStreamIndex

Recebe o índice baseado em zero do fluxo.

[out] pdwStreamFlags

Recebe um OR bit a bit de zero ou mais sinalizadores da enumeração MF_SOURCE_READER_FLAG .

[out] pllTimestamp

Recebe o carimbo de data/hora do exemplo ou a hora do evento de fluxo indicado em pdwStreamFlags. O tempo é dado em unidades de 100 nanossegundos.

[out] ppSample

Recebe um ponteiro para a interface IMFSample ou o valor NULL (consulte Comentários). Se esse parâmetro receber um ponteiro não NULL , o chamador deverá liberar a interface .

Retornar valor

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_INVALIDREQUEST
Solicitação inválida.
MF_E_INVALIDSTREAMNUMBER
O parâmetro dwStreamIndex é inválido.
MF_E_NOTACCEPTING
Uma operação de liberação está pendente. Consulte IMFSourceReader::Flush.
E_INVALIDARG
Argumento inválido. Consulte Observações.

Comentários

Se o fluxo solicitado não estiver selecionado, o código de retorno será MF_E_INVALIDREQUEST. Consulte IMFSourceReader::SetStreamSelection.

Esse método pode ser concluído de forma síncrona ou assíncrona. Se você fornecer um ponteiro de retorno de chamada ao criar o leitor de origem, o método será assíncrono. Caso contrário, o método será síncrono. Para obter mais informações sobre como definir o ponteiro de retorno de chamada, consulte MF_SOURCE_READER_ASYNC_CALLBACK.

Modo assíncrono

No modo assíncrono:
  • [out] Todos os parâmetros devem ser NULL. Caso contrário, o método retornará E_INVALIDARG.
  • O método retorna imediatamente.
  • Quando a operação for concluída, o método IMFSourceReaderCallback::OnReadSample do aplicativo será chamado.
  • Se ocorrer um erro, o método poderá falhar de forma síncrona ou assíncrona. Verifique o valor retornado de ReadSample e também marcar o parâmetro hrStatus de IMFSourceReaderCallback::OnReadSample.

Modo síncrono

No modo síncrono:
  • Os parâmetros pdwStreamFlags e ppSample não podem ser NULL. Caso contrário, o método retornará E_POINTER.
  • Os parâmetros pdwActualStreamIndex e pllTimestamp podem ser NULL.
  • O método é bloqueado até que o próximo exemplo esteja disponível.
No modo síncrono, se o parâmetro dwStreamIndex for MF_SOURCE_READER_ANY_STREAM, você deverá passar um valor não NULL para pdwActualStreamIndex, para que você saiba qual fluxo entregou o exemplo.

Esse método pode retornar sinalizadores no parâmetro pdwStreamFlags sem retornar um exemplo de mídia em ppSample. Portanto, o parâmetro ppSample pode receber um ponteiro NULL mesmo quando o método é bem-sucedido. Por exemplo, quando o leitor de origem atinge o final do fluxo, ele retorna o sinalizador MF_SOURCE_READERF_ENDOFSTREAM em pdwStreamFlags e define ppSample como NULL.

Se houver uma lacuna no fluxo, pdwStreamFlags receberá o sinalizador MF_SOURCE_READERF_STREAMTICK, ppSample será NULL e pllTimestamp indicará a hora em que a lacuna ocorreu.

Essa interface estará disponível no Windows Vista se o Suplemento de Atualização de Plataforma para Windows Vista estiver instalado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Suplemento Windows 7, Windows Vista e Platform Update para Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho mfreadwrite.h

Confira também

IMFSourceReader

Leitor de Origem