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.

Value Meaning
0–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 da amostra 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.

Valor de retorno

O método retorna um HRESULT. Os valores possíveis incluem, mas não se limitam a, aqueles na tabela a seguir.

Código de retorno Description
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 os comentários.

Observações

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:
  • Todos os [out] 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 verifique também 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 bloqueia 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 for 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.

Requirements

Requirement Value
Cliente mínimo suportado Suplemento windows 7, Windows Vista e Platform Update para Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo compatível Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP]
da Plataforma de Destino Windows
Header mfreadwrite.h

Consulte também

IMFSourceReader

Leitor de origem