Método CBaseOutputPin.Deliver

[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 Deliver método entrega un ejemplo multimedia al pin de entrada conectado.

Sintaxis

virtual HRESULT Deliver(
   IMediaSample *pSample
);

Parámetros

pSample

Puntero a la interfaz IMediaSample del ejemplo.

Valor devuelto

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

Código devuelto Descripción
S_OK
Correcto.
VFW_E_NOT_CONNECTED
El pin no está conectado.

Observaciones

Este método llama al método IMemInputPin::Receive en el pin de entrada. Receive puede bloquear si el método IMemInputPin::ReceiveCanBlock devuelve S_OK.

Libere el ejemplo después de llamar a este método. El pin de entrada puede contener un recuento de referencias en el ejemplo, por lo que no vuelva a usar el ejemplo. Llame siempre al método CBaseOutputPin::GetDeliveryBuffer para obtener un nuevo ejemplo.

Mantenga presionada la sección crítica del filtro antes de llamar a este método. De lo contrario, es posible que el pin se desconecte durante la llamada al método . Si el filtro usa un subproceso de trabajo para entregar muestras, mantenga la sección crítica cuando el filtro esté listo para entregar un ejemplo. De lo contrario, puede contener la sección crítica en el método IMemInputPin::Receive del filtro, donde el filtro procesa los ejemplos.

Los subprocesos de trabajo pueden crear un posible interbloqueo. Cuando el subproceso contiene la sección crítica, puede esperar un cambio de estado en el filtro. Al mismo tiempo, el cambio de estado podría estar esperando a que se complete el subproceso. Para evitar esto, el código de cambio de estado debe indicar un evento que finalice el subproceso y, a continuación, esperar a que el subproceso señale la finalización.

Requisitos

Requisito Value
Encabezado
Amfilter.h (include Streams.h)
Biblioteca
Strmbase.lib (compilaciones comerciales);
Strmbasd.lib (compilaciones de depuración)

Consulte también

CBaseOutputPin (clase)