CBaseRenderer (clase)

Jerarquía de clases de cbaserenderer

La CBaseRenderer clase es una clase base para implementar filtros de representador. Admite un pin de entrada, implementado por la clase CRendererInputPin. Para usar esta clase, declare una clase derivada que herede CBaseRenderer . Como mínimo, la clase derivada debe implementar los métodos siguientes, que se declaran como virtuales puros en la clase base:

La clase base controla los cambios de estado y los problemas de sincronización. También programa ejemplos para la representación, aunque no implementa ninguna medida de control de calidad. La clase base también declara varios métodos de "controlador". Se trata de métodos a los que el filtro llama en puntos específicos del proceso de streaming. No hacen nada en la clase base, pero la clase derivada puede invalidarlos. En la tabla siguiente, aparecen bajo el encabezado Métodos públicos: Controladores.

El controlador CBaseRenderer::OnReceiveFirstSample merece una mención especial. El filtro llama a este método si recibe un ejemplo mientras el filtro está en pausa. Esto puede ocurrir si el gráfico cambia de detenido a en pausa, o si el gráfico se busca mientras está en pausa. Los representadores de vídeo suelen usar el ejemplo para mostrar un fotograma todavía. Cuando el filtro cambia de en pausa a en ejecución, envía el mismo ejemplo al método CBaseRenderer::D oRenderSample, como el primer ejemplo de la secuencia.

La CBaseRenderer clase expone las interfaces IMediaSeeking e IMediaPosition a través del objeto CRendererPosPassThru. Pasa todas las solicitudes de búsqueda al siguiente filtro ascendente.

Scheduling

Cuando el filtro ascendente llama al método IMemInputPin::Receive del pin de entrada para entregar un ejemplo, el pin pasa esta llamada al método CBaseRenderer::Receive del filtro. El filtro quita el ejemplo, lo representa inmediatamente o lo programa para su representación.

Si el ejemplo no tiene marcas de tiempo o si no hay ningún reloj de referencia disponible, el filtro representa la muestra inmediatamente. De lo contrario, el filtro llama al método CBaseRenderer::ShouldDrawSampleNow para determinar qué hacer. De forma predeterminada, el ejemplo se programa en función de sus marcas de tiempo. La clase derivada puede invalidar ShouldDrawSampleNow para admitir el control de calidad.

Para programar un ejemplo, el filtro llama al método IReferenceClock::AdviseTime, que crea una solicitud de aviso. A continuación, el método Receive se bloquea hasta la hora programada o hasta que cambia el estado del filtro. El bloqueo impide que el filtro ascendente entregue más muestras hasta que se represente la muestra actual.

Cuando el filtro ascendente llama al método IPin::EndOfStream para indicar el final de la secuencia, el filtro envía un evento EC _ COMPLETE al administrador de gráficos de filtros. El filtro espera la hora de detenerse del ejemplo actual antes de enviar el evento.

Variables de miembro protegido Descripción
m _ bAbort Marca que indica si se debe detener la representación y rechazar más ejemplos.
m _ bEOS Marca que indica si se alcanzó el final de la secuencia.
m _ bEOSDelivered Marca que indica si el filtro ha publicado el evento EC _ COMPLETE.
m _ bInReceive Marca que indica si el filtro está procesando una llamada receive.
m _ bRepaintStatus Marca que habilita o deshabilita los eventos de repintado.
m _ bStreaming Marca que indica si el filtro está transmitiendo datos.
m _ dwAdvise Identificador del evento de temporizador que programa la representación.
m _ EndOfStreamTimer Identificador de evento de temporizador, para programar notificaciones EC _ COMPLETE.
m _ evComplete Evento que se señala cuando se completa una transición de estado.
m _ InterfaceLock Bloqueo de estado de filtro.
m _ ObjectCreationLock Bloqueo para proteger la creación de objetos dentro del filtro.
m _ pInputPin Puntero al pin de entrada del filtro.
m _ pMediaSample Puntero al ejemplo multimedia actual.
m _ pPosition Objeto auxiliar para pasar comandos seek ascendentes.
m _ pQSink Puntero al objeto que recibe mensajes de control de calidad.
m _ RendererLock Bloqueo de streaming.
m _ RenderEvent Evento utilizado para programar la representación.
m _ SignalTime Tiempo de detenerse en el ejemplo actual.
m _ ThreadSignal Evento que se usa para liberar el subproceso de streaming.
Métodos públicos Descripción
CancelNotification Cancela el evento de temporizador que programa la representación. Virtual.
CBaseRenderer Método constructor.
~CBaseRenderer Método destructor.
GetMediaPositionInterface Recupera los punteros de interfaz IMediaPosition e IMediaSeeking del filtro. Virtual.
GetPin Recupera un pin. Virtual.
GetPinCount Recupera el número de pines. Virtual.
GetSampleTimes Recupera las marcas de tiempo de un ejemplo. Virtual.
OnDisplayChange Publica un evento EC _ DISPLAY _ CHANGED en el administrador de gráficos de filtros.
PrepareReceive Se prepara para representar un ejemplo. Virtual.
Recibir Recibe el siguiente ejemplo multimedia de la secuencia. Virtual.
Render Representa un ejemplo. Virtual.
ScheduleSample Programa un ejemplo para su representación. Virtual.
SendNotifyWindow Notifica al filtro ascendente del identificador de la ventana de vídeo.
SendRepaint Envía un evento de repintado al administrador de gráficos de filtro.
SetMediaType Se llama cuando se establece el tipo de medio del pin. Virtual.
SignalTimerFired Borra el identificador de temporizador utilizado para programar la representación.
SourceThreadCanWait Contiene o libera el subproceso de streaming. Virtual.
WaitForReceiveToComplete Espera a que se complete el método CBaseRenderer::Receive.
WaitForRenderTime Espera el tiempo de presentación del ejemplo actual. Virtual.
Métodos públicos: métodos de accessor Descripción
ClearPendingSample Libera el ejemplo actual. Virtual.
GetCurrentSample Recupera el ejemplo actual. Virtual.
GetRealState Recupera el estado del filtro.
GetRenderEvent Recupera el evento que programa la representación.
HaveCurrentSample Determina si el filtro tiene un ejemplo. Virtual.
IsEndOfStream Consulta si se recibió la notificación de fin de flujo.
IsEndOfStreamDelivered Consulta si el evento EC _ COMPLETE se ha entregado al administrador de gráficos de filtros.
IsStreaming Consulta si el filtro está transmitiendo datos.
SetAbortSignal Establece una marca que indica si se debe detener la representación y rechazar más ejemplos.
SetRepaintStatus Habilita o deshabilita los eventos de repintado.
Métodos públicos: State-Change métodos Descripción
Activo Se llama cuando el estado cambia a en pausa o en ejecución. Virtual.
BeginFlush Comienza una operación de vaciado. Virtual.
BreakConnect Libera el pin de entrada de una conexión. Virtual.
CheckReady Consulta si se ha completado una transición de estado.
CompleteConnect Completa la conexión del pin de entrada a otro pin. Virtual.
CompleteStateChange Determina si se ha completado una transición al estado en pausa. Virtual.
EndFlush Finaliza una operación de vaciado. Virtual.
Inactivo Se llama cuando el estado cambia a detenido. Virtual.
NotReady Indica que aún no se ha completado una transición de estado.
Ready Indica que se ha completado una transición de estado.
StartStreaming Inicia el streaming cuando el filtro cambia a un estado de ejecución. Virtual.
StopStreaming Detiene el streaming cuando el filtro sale del estado en ejecución. Virtual.
Métodos públicos: métodos de fin de flujo Descripción
EndOfStream Notifica al filtro que el pin de entrada recibió una notificación de fin de flujo. Virtual.
NotifyEndOfStream Publica un evento EC _ COMPLETE en el administrador de gráficos de filtros.
ResetEndOfStream Restablece las marcas de fin de flujo.
ResetEndOfStreamTimer Cancela el temporizador que programa las notificaciones EC _ COMPLETE. Virtual.
SendEndOfStream Si se alcanzó el final del flujo, programa un evento EC _ COMPLETE para el administrador de gráficos de filtro. Virtual.
TimerCallback Método de devolución de llamada para el evento de temporizador de fin de secuencia.
Métodos públicos: controladores Descripción
OnReceiveFirstSample Se llama cuando el filtro recibe una muestra mientras está en pausa. Virtual.
OnRenderEnd Se llama después de representar un ejemplo. Virtual.
OnRenderStart Se llama cuando la representación está a punto de iniciarse. Virtual.
OnStartStreaming Se llama cuando el filtro comienza la transmisión por secuencias. Virtual.
OnStopStreaming Se llama cuando el filtro detiene el streaming. Virtual.
OnWaitEnd Se llama cuando se realiza el filtro esperando el tiempo de presentación de una muestra. Virtual.
OnWaitStart Se llama cuando el filtro comienza a esperar el tiempo de presentación de una muestra. Virtual.
PrepareRender Se llama antes de que el filtro represente un ejemplo. Virtual.
ShouldDrawSampleNow Determina cómo se programa un ejemplo para su representación. Virtual.
Métodos virtuales puros Descripción
CheckMediaType Determina si el filtro acepta un tipo de medio específico.
DoRenderSample Representa un ejemplo.
Métodos IMediaFilter Descripción
GetState Recupera el estado del filtro (en ejecución, detenido o en pausa).
Pausar Pausa el filtro.
Ejecutar Ejecuta el filtro.
Stop Detiene el filtro.
Métodos IBaseFilter Descripción
FindPin Recupera el pin con el identificador especificado.

Requisitos

Requisito Value
Encabezado
Renbase.h (incluir Secuencias.h)
Biblioteca
Strmbase.lib (compilaciones comerciales);
Strmbasd.lib (compilaciones de depuración)