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.
[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 |
---|---|
|
O método foi bem-sucedido. |
|
Solicitação inválida. |
|
O parâmetro dwStreamIndex é inválido. |
|
Uma operação de liberação está pendente. Consulte IMFSourceReader::Flush. |
|
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.
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 |