Compartir a través de


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

Lee el ejemplo siguiente del origen multimedia.

Sintaxis

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

Parámetros

[in] dwStreamIndex

Secuencia de la que se van a extraer datos. El valor puede ser cualquiera de los siguientes.

Valor Significado
0 a 0xFFFFFFFB
Índice de base cero de una secuencia.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
Primera secuencia de vídeo.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
Primera secuencia de audio.
MF_SOURCE_READER_ANY_STREAM
0xFFFFFFFE
Obtenga el siguiente ejemplo disponible, independientemente de la secuencia.

[in] dwControlFlags

OR bit a bit de cero o más marcas de la enumeración MF_SOURCE_READER_CONTROL_FLAG.

[out] pdwActualStreamIndex

Recibe el índice de base cero de la secuencia.

[out] pdwStreamFlags

Recibe un OR bit a bit de cero o más marcas de la enumeración MF_SOURCE_READER_FLAG .

[out] pllTimestamp

Recibe la marca de tiempo del ejemplo o la hora del evento de secuencia indicado en pdwStreamFlags. El tiempo se da en unidades de 100 nanosegundos.

[out] ppSample

Recibe un puntero a la interfaz IMFSample o el valor NULL (véase comentarios). Si este parámetro recibe un puntero distinto de NULL , el autor de la llamada debe liberar la interfaz.

Valor devuelto

El método devuelve un valor HRESULT. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros.

Código devuelto Descripción
S_OK
El método se ha llevado a cabo de forma correcta.
MF_E_INVALIDREQUEST
Solicitud no válida.
MF_E_INVALIDSTREAMNUMBER
El parámetro dwStreamIndex no es válido.
MF_E_NOTACCEPTING
Hay pendiente una operación de vaciado. Consulte IMFSourceReader::Flush.
E_INVALIDARG
Argumento no válido. Vea la sección Comentarios.

Comentarios

Si la secuencia solicitada no está seleccionada, el código de retorno se MF_E_INVALIDREQUEST. Consulte IMFSourceReader::SetStreamSelection.

Este método puede completarse de forma sincrónica o asincrónica. Si proporciona un puntero de devolución de llamada al crear el lector de origen, el método es asincrónico. De lo contrario, el método es sincrónico. Para obtener más información sobre cómo establecer el puntero de devolución de llamada, consulte MF_SOURCE_READER_ASYNC_CALLBACK.

Modo asincrónico

En modo asincrónico:
  • Todos los [out] parámetros deben ser NULL. De lo contrario, el método devuelve E_INVALIDARG.
  • El método devuelve inmediatamente.
  • Cuando se completa la operación, se llama al método IMFSourceReaderCallback::OnReadSample de la aplicación.
  • Si se produce un error, el método puede producir un error de forma sincrónica o asincrónica. Compruebe el valor devuelto de ReadSample y compruebe también el parámetro hrStatus de IMFSourceReaderCallback::OnReadSample.

Modo sincrónico

En modo sincrónico:
  • Los parámetros pdwStreamFlags y ppSample no pueden ser NULL. De lo contrario, el método devuelve E_POINTER.
  • Los parámetros pdwActualStreamIndex y pllTimestamp pueden ser NULL.
  • El método se bloquea hasta que el ejemplo siguiente esté disponible.
En el modo sincrónico, si el parámetro dwStreamIndex es MF_SOURCE_READER_ANY_STREAM, debe pasar un valor distinto de NULL para pdwActualStreamIndex, de modo que sepa qué secuencia entregó el ejemplo.

Este método puede devolver marcas en el parámetro pdwStreamFlags sin devolver un ejemplo multimedia en ppSample. Por lo tanto, el parámetro ppSample puede recibir un puntero NULL incluso cuando el método se realiza correctamente. Por ejemplo, cuando el lector de origen llega al final de la secuencia, devuelve la marca MF_SOURCE_READERF_ENDOFSTREAM en pdwStreamFlags y establece ppSample en NULL.

Si hay un hueco en la secuencia, pdwStreamFlags recibe la marca de MF_SOURCE_READERF_STREAMTICK, ppSample es NULL y pllTimestamp indica la hora en que se produjo la brecha.

Esta interfaz está disponible en Windows Vista si está instalado Platform Update Supplement para Windows Vista.

Requisitos

Requisito Value
Cliente mínimo compatible Complemento de actualización de Windows 7, Windows Vista y plataforma para Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 R2 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado mfreadwrite.h

Consulte también

IMFSourceReader

Lector de origen