Compartir a través de


Método IMemInputPin::Receive (strmif.h)

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

El Receive método recibe el siguiente ejemplo multimedia en la secuencia.

Sintaxis

HRESULT Receive(
  [in] IMediaSample *pSample
);

Parámetros

[in] pSample

Puntero a la interfaz IMediaSample del ejemplo.

Valor devuelto

Devuelve un valor HRESULT . Entre los valores posibles se incluyen los que se muestran en la tabla siguiente.

Código devuelto Descripción
S_OK
Correcto.
S_FALSE
Se rechazó el ejemplo.
E_POINTER
Argumento de puntero NULL.
VFW_E_INVALIDMEDIATYPE
Tipo de medio no válido.
VFW_E_RUNTIME_ERROR
Error en tiempo de ejecución.
VFW_E_WRONG_STATE
El pin se detiene.

Comentarios

Este método es sincrónico y posiblemente bloquea. El pin realiza una de las siguientes acciones:

  • Rechaza el ejemplo.
  • Devuelve inmediatamente y procesa el ejemplo en un subproceso de trabajo.
  • Procesa el ejemplo antes de devolverlo.
En el último caso, el método podría bloquearse indefinidamente. Si esto puede ocurrir, el método IMemInputPin::ReceiveCanBlock devuelve S_OK.

Si el pin usa un subproceso de trabajo para procesar el ejemplo, contiene un recuento de referencias en el ejemplo. En cualquier caso, el pin de salida no puede volver a usar directamente este ejemplo. Debe llamar al método IMemAllocator::GetBuffer para obtener un nuevo ejemplo.

Si este método devuelve S_FALSE o un código de error, el filtro ascendente debe dejar de enviar muestras hasta que el gráfico se detenga o complete una operación de vaciado. Entre los motivos típicos de un valor devuelto de S_FALSE se incluyen:

  • El pin de bajada está vaciado; es decir, recibió una llamada a BeginFlush y aún no ha recibido una llamada a EndFlush .
  • El filtro de bajada detectó el final de la secuencia. (Consulte Notificaciones de fin de Stream).

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado strmif.h (incluya Dshow.h)
Library Strmiids.lib

Consulte también

Códigos de error y éxito

IMemInputPin (interfaz)