CBaseRenderer (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.
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 hereda CBaseRenderer
. Como mínimo, la clase derivada debe implementar los métodos siguientes, que se declaran como virtuales puros en la clase base:
- CBaseRenderer::CheckMediaType: acepta o rechaza los tipos de medios propuestos. El filtro llama a este método durante el proceso de conexión de patillas.
- CBaseRenderer::D oRenderSample: representa un ejemplo. El filtro llama a este método para cada ejemplo que recibe mientras se ejecuta.
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". Estos son 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, se muestran 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 se busca el gráfico mientras está en pausa. Normalmente, los representadores de vídeo usan el ejemplo para mostrar un fotograma todavía. Cuando el filtro cambia de pausa a en ejecución, envía el mismo ejemplo al método CBaseRenderer::D oRenderSample , como 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 el ejemplo 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 el filtro cambie de estado. 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 el tiempo de detención del ejemplo actual antes de enviar el evento.
Variables miembro protegidas | Descripción |
---|---|
m_bAbort | Marca que indica si se detiene la representación y se rechazan más ejemplos. |
m_bEOS | Marca que indica si se alcanzó el final del flujo. |
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 reintentos. |
m_bStreaming | Marca que indica si el filtro es datos de streaming. |
m_dwAdvise | Identificador del evento del temporizador que programa la representación. |
m_EndOfStreamTimer | Identificador de evento del temporizador para programar EC_COMPLETE notificaciones. |
m_evComplete | Evento que se señala cuando se completa una transición de estado. |
m_InterfaceLock | Bloqueo de estado de filtro. |
m_ObjectCreationLock | Bloquear para proteger la creación de objetos dentro del filtro. |
m_pInputPin | Puntero al pin de entrada del filtro. |
m_pMediaSample | Puntero al ejemplo de medio 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 usado para programar la representación. |
m_SignalTime | Hora de detención en el ejemplo actual. |
m_ThreadSignal | Evento usado para liberar el subproceso de streaming. |
Métodos públicos | Descripción |
CancelNotification | Cancela el evento del temporizador que programa la representación. Virtual. |
CBaseRenderer | Método constructor. |
~CBaseRenderer | Método de destructor. |
GetMediaPositionInterface | Recupera los punteros de interfaz IMediaPosition e IMediaSeeking del filtro. Virtual. |
GetPin | Recupera un pin. Virtual. |
GetPinCount | Recupera el número de patillas. Virtual. |
GetSampleTimes | Recupera las marcas de tiempo de un ejemplo. Virtual. |
OnDisplayChange | Publica un evento de EC_DISPLAY_CHANGED en el administrador de gráficos de filtros. |
PrepareReceive | Se prepara para representar un ejemplo. Virtual. |
Recepción | Recibe el siguiente ejemplo multimedia en la secuencia. Virtual. |
Representación | Representa un ejemplo. Virtual. |
ScheduleSample | Programa un ejemplo para la representación. Virtual. |
SendNotifyWindow | Notifica al filtro ascendente del identificador de ventana de vídeo. |
SendRepaint | Envía un evento repaint al administrador de gráficos de filtros. |
SetMediaType | Se llama cuando se establece el tipo de medio del pin. Virtual. |
SignalTimerFired | Borra el identificador del temporizador usado 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 descriptor de acceso | 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 secuencia. |
IsEndOfStreamDelivered | Consulta si el evento EC_COMPLETE se ha entregado al administrador de gráficos de filtros. |
IsStreaming | Consulta si el filtro es datos de streaming. |
SetAbortSignal | Establece una marca que indica si se va a detener la representación y rechazar más ejemplos. |
SetRepaintStatus | Habilita o deshabilita los eventos de reintentos. |
Métodos públicos: métodos de State-Change | Descripción |
Activo | Se llama cuando el estado se cambia a en pausa o en ejecución. Virtual. |
BeginFlush | Inicia 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 se cambia a detenido. Virtual. |
NotReady | Indica que aún no se ha completado una transición de estado. |
Listo | Indica que se ha completado una transición de estado. |
StartStreaming | Inicia el streaming cuando el filtro cambia a un estado en 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 secuencia | Descripción |
EndOfStream | Notifica al filtro que el pin de entrada recibió una notificación de fin de secuencia. Virtual. |
NotifyEndOfStream | Publica un evento EC_COMPLETE en el administrador de gráficos de filtros. |
ResetEndOfStream | Restablece las marcas de fin de secuencia. |
ResetEndOfStreamTimer | Cancela el temporizador que programa EC_COMPLETE notificaciones. Virtual. |
SendEndOfStream | Si se alcanzó el final del flujo, programa un evento de EC_COMPLETE para el administrador de gráficos de filtros. 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 un ejemplo 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 a transmitirse. Virtual. |
OnStopStreaming | Se llama cuando el filtro detiene el streaming. Virtual. |
OnWaitEnd | Se llama cuando el filtro se realiza esperando el tiempo de presentación de un ejemplo. Virtual. |
OnWaitStart | Se llama cuando el filtro comienza a esperar el tiempo de presentación de un ejemplo. Virtual. |
PrepareRender | Se llama antes de que el filtro represente un ejemplo. Virtual. |
ShouldDrawSampleNow | Determina cómo se programa un ejemplo para la 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). |
Pausa | 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 |
|
Biblioteca |
|