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.
[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 |
---|---|
|
El método se ha llevado a cabo de forma correcta. |
|
Solicitud no válida. |
|
El parámetro dwStreamIndex no es válido. |
|
Hay pendiente una operación de vaciado. Consulte IMFSourceReader::Flush. |
|
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.
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 |