Compartir a través de


Método IMFMediaStream::RequestSample (mfidl.h)

Solicita un ejemplo del origen multimedia.

Sintaxis

HRESULT RequestSample(
  [in] IUnknown *pToken
);

Parámetros

[in] pToken

Puntero a la interfaz IUnknown a un objeto que se usa como token para la solicitud. El autor de la llamada debe implementar este objeto. Este parámetro puede ser NULL. Vea la sección Comentarios.

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_END_OF_STREAM
Se alcanzó el final de la secuencia.
MF_E_MEDIA_SOURCE_WRONGSTATE
El origen multimedia se detiene.
MF_E_SHUTDOWN
Se ha llamado al método Shutdown del origen.

Comentarios

Si pToken no es NULL, la secuencia multimedia llama a AddRef en pToken y coloca el token en una cola primero en salir.

Cuando el ejemplo siguiente esté disponible, la secuencia de flujo multimedia hace lo siguiente:

  1. Extrae el primer token de la cola.
  2. Establece el atributo MFSampleExtension_Token en el ejemplo multimedia. Los datos del atributo son un puntero al objeto de token.
  3. Envía un evento MEMediaSample . Los datos del evento son un puntero a la interfaz IMFSample del ejemplo multimedia.
  4. Llama a Release en el token.
Si la secuencia multimedia no puede satisfacer la solicitud del autor de la llamada para un ejemplo, simplemente libera el objeto de token y omite los pasos 2 y 3.

El autor de la llamada debe supervisar el recuento de referencias en el token de solicitud. Si la secuencia multimedia envía un evento MEMediaSample , obtenga el atributo MFSampleExtension_Token del ejemplo y coincida con el valor del atributo con el token. Si el recuento de referencias del token cae en cero y no recibió un evento MEMediaSample, significa que se quitó la solicitud.

Dado que la canalización de Media Foundation es multiproceso, el método RequestSample del origen podría llamarse después de que el origen se haya detenido. Si se detiene el origen multimedia, el método debe devolver MF_E_MEDIA_SOURCE_WRONGSTATE. La canalización no trata este código de retorno como una condición de error. Si el origen devuelve cualquier otro código de error, la canalización la trata como un error irrecuperable y detiene la sesión.

Nota Las versiones anteriores de la documentación enumeraron el código de error incorrecto para este caso.

 

Si el origen multimedia está en pausa, el método se realiza correctamente, pero la secuencia no entrega el ejemplo hasta que se vuelva a iniciar el origen.

Si un origen multimedia encuentra un error de forma asincrónica durante el procesamiento de datos, debe indicar el error de una de las maneras siguientes (pero no ambas):

  • Devuelve un código de error de la siguiente llamada a RequestSample .
  • Enviar un evento MEError .

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado mfidl.h
Library Mfuuid.lib

Consulte también

IMFMediaStream

Orígenes multimedia