CBaseStreamControl (clase)
[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.
Esta clase implementa la interfaz IAMStreamControl para las patillas de entrada y salida. Proporciona control sobre el inicio y detención de un pin individual en el filtro. Un pin que admita IAMStreamControl debe heredar de esta clase base. A continuación se muestra una declaración típica para un pin de entrada:
class CMyInputPin : public CBaseInputPin, public CBaseStreamControl
Asegúrese de invalidar NonDelegatingQueryInteface para exponer IAMStreamControl. Para obtener más información, vea Cómo implementar IUnknown.
Métodos públicos | Descripción |
---|---|
CBaseStreamControl | Método constructor. |
~CBaseStreamControl | Método de destructor. |
CheckStreamState | Determina si se debe entregar o descartar un ejemplo multimedia. |
Lavado | Notifica a la clase base que el pin ha iniciado o detenido el vaciado. |
NotifyFilterState | Notifica al pin cuando cambia el estado del filtro. |
SetFilterGraph | Especifica el receptor de eventos para los eventos de control de flujo. |
SetSyncSource | Notifica a la clase base del reloj de referencia actual. |
Métodos IAMStreamControl | Descripción |
GetInfo | Recupera información sobre la configuración actual del control de secuencias, incluidas las horas de inicio y detención. |
StartAt | Informa al pin cuándo empezar a entregar datos. |
StopAt | Informa al pin cuando se detiene la entrega de datos. |
Observaciones
Esta clase requiere el pin y el filtro propietario para notificar a la clase cuándo se producen varios eventos, como el filtro que une el gráfico o reciba un nuevo reloj de referencia. Debe llamar a los métodos de clase siguientes:
- En el método IMediaFilter::SetSyncSource del filtro, llame al método CBaseStreamControl::SetSyncSource . Este método notifica a la clase del reloj de referencia actual.
- En el método CBaseFilter::JoinFilterGraph del filtro, llame al método CBaseStreamControl::SetFilterGraph . Este método proporciona a la clase un puntero al Administrador de gráficos de filtros, para que la clase pueda enviar los eventos de control de secuencias correctos.
- Siempre que el filtro cambie el estado (en ejecución, en pausa o detenido), llame al método CBaseStreamControl::NotifyFilterState .
- En los métodos IPin::BeginFlush e IPin::EndFlush del pin, llame al método CBaseStreamControl::Flushing .
La CBaseStreamControl
clase usa el reloj de referencia del gráfico de filtros para determinar qué muestras debe entregar el filtro y cuál debe descartarse. En el método IMemInputPin::Receive del pin, llame al método CBaseStreamControl::CheckStreamState con un puntero al ejemplo multimedia entrante. Si el método devuelve el valor STREAM_FLOWING, entregue la muestra de bajada. De lo contrario, deséchalo.
Requisitos
Requisito | Value |
---|---|
Encabezado |
|
Biblioteca |
|