Classe CBaseRenderer

hierarquia de classe CBaseRenderer

A CBaseRenderer classe é uma classe base para implementar filtros de renderizador. Ele dá suporte a um PIN de entrada, implementado pela classe CRendererInputPin . Para usar essa classe, declare uma classe derivada que herda CBaseRenderer . No mínimo, a classe derivada deve implementar os seguintes métodos, que são declarados como virtuais puros na classe base:

A classe base lida com alterações de estado e problemas de sincronização. Ele também Agenda amostras para renderização, embora não implemente nenhuma medida de controle de qualidade. A classe base também declara vários métodos "Handler". Esses são os métodos que o filtro chama em pontos específicos no processo de streaming. Eles não fazem nada na classe base, mas a classe derivada pode substituí-los. Na tabela a seguir, eles são listados sob o título métodos públicos: manipuladores.

O manipulador CBaseRenderer:: OnReceiveFirstSample merece menção especial. O filtro chamará esse método se receber uma amostra enquanto o filtro estiver em pausa. Isso pode ocorrer se o grafo mudar de parado para em pausa ou se o grafo for buscado enquanto estiver em pausa. Os renderizadores de vídeo normalmente usam o exemplo para exibir um quadro ainda. Quando o filtro alterna de em pausa para em execução, ele envia o mesmo exemplo para o método CBaseRenderer::D orendersample , como o primeiro exemplo no fluxo.

A CBaseRenderer classe expõe as interfaces IMediaSeeking e IMediaPosition por meio do objeto CRendererPosPassThru . Ele passa todas as solicitações de busca para o próximo filtro upstream.

Agendamento

Quando o filtro upstream chama o método IMemInputPin:: Receive do pino de entrada para entregar um exemplo, o PIN passa essa chamada para o método CBaseRenderer:: Receive do filtro. O filtro descarta o exemplo, o renderiza imediatamente ou o agenda para renderização.

Se o exemplo não tiver carimbos de data/hora ou se nenhum relógio de referência estiver disponível, o filtro renderizará o exemplo imediatamente. Caso contrário, o filtro chama o método CBaseRenderer:: ShouldDrawSampleNow para determinar o que fazer. Por padrão, o exemplo é agendado com base em seus carimbos de data/hora. A classe derivada pode substituir ShouldDrawSampleNow para dar suporte ao controle de qualidade.

Para agendar um exemplo, o filtro chama o método IReferenceClock:: aconselhetime , que cria uma solicitação de aviso. O método Receive então é bloqueado até a hora agendada ou até o estado do filtro ser alterado. O bloqueio impede que o filtro upstream entregue mais amostras até que a amostra atual seja renderizada.

Quando o filtro upstream chama o método IPin:: EndOfStream para sinalizar o final do fluxo, o filtro envia um evento EC _ Complete para o Gerenciador do grafo de filtro. O filtro aguarda o tempo de parada do exemplo atual antes de enviar o evento.

Variáveis de membro protegido Descrição
_bAbort m Sinalizador que indica se a renderização deve ser interrompida e rejeitada mais amostras.
_bEOS m Sinalizador que indica se o fim do fluxo foi atingido.
_bEOSDelivered m Sinalizador que indica se o filtro postou o evento de conclusão do EC _ .
_bInReceive m Sinalizador que indica se o filtro está processando uma chamada de recebimento .
_bRepaintStatus m Sinalizador que habilita ou desabilita os eventos redesenhados.
_bStreaming m Sinalizador que indica se o filtro está transmitindo dados.
_dwAdvise m Identificador do evento de temporizador que agenda a renderização.
_EndOfStreamTimer m Timer-identificador de evento, para agendar _ notificações completas do EC.
_evComplete m Evento sinalizado quando uma transição de estado é concluída.
_InterfaceLock m Bloqueio de estado de filtro.
_ObjectCreationLock m Bloquear para proteger a criação de objetos dentro do filtro.
_pInputPin m Ponteiro para o pino de entrada do filtro.
_pMediaSample m Ponteiro para o exemplo de mídia atual.
_pPosition m Objeto auxiliar para passar comandos de busca upstream.
_pQSink m Ponteiro para o objeto que recebe mensagens de controle de qualidade.
_RendererLock m Bloqueio de streaming.
_RenderEvent m Evento usado para agendar a renderização.
n º de _ sinalização m Hora de parada no exemplo atual.
_ThreadSignal m Evento usado para liberar o thread de streaming.
Métodos públicos Descrição
CancelNotification Cancela o evento de timer que agenda a renderização. VirtuaisLUNs.
CBaseRenderer Método de construtor.
~ CBaseRenderer Método destruidor.
GetMediaPositionInterface Recupera os ponteiros de interface IMediaPosition e IMediaSeeking do filtro. VirtuaisLUNs.
GetPin Recupera um PIN. VirtuaisLUNs.
GetPinCount Recupera o número de Pins. VirtuaisLUNs.
GetSampleTimes Recupera os carimbos de data/hora de um exemplo. VirtuaisLUNs.
OnDisplayChange Posta um evento de exibição de EC _ _ alterado no Gerenciador de gráfico de filtro.
PrepareReceive Prepara para renderizar um exemplo. VirtuaisLUNs.
Recebe Recebe o próximo exemplo de mídia no fluxo. VirtuaisLUNs.
Aplicar Renderiza um exemplo. VirtuaisLUNs.
ScheduleSample Agenda um exemplo para renderização. VirtuaisLUNs.
SendNotifyWindow Notifica o filtro upstream do identificador da janela de vídeo.
SendRepaint Envia um evento Repaint para o Gerenciador do grafo de filtro.
SetMediaType Chamado quando o tipo de mídia do PIN é definido. VirtuaisLUNs.
SignalTimerFired Limpa o identificador do temporizador usado para agendar a renderização.
SourceThreadCanWait Mantém ou libera o thread de streaming. VirtuaisLUNs.
WaitForReceiveToComplete Aguarda a conclusão do método CBaseRenderer:: Receive .
WaitForRenderTime Aguarda o tempo de apresentação do exemplo atual. VirtuaisLUNs.
Métodos públicos: métodos acessadores Descrição
ClearPendingSample Libera o exemplo atual. VirtuaisLUNs.
GetCurrentSample Recupera o exemplo atual. VirtuaisLUNs.
Getrealstate Recupera o estado do filtro.
GetRenderEvent Recupera o evento que agenda a renderização.
HaveCurrentSample Determina se o filtro tem um exemplo. VirtuaisLUNs.
IsEndOfStream Consulta se a notificação de fim de fluxo foi recebida.
IsEndOfStreamDelivered Consulta se o _ evento EC Complete foi entregue ao Gerenciador do grafo de filtro.
Isstreaminging Consulta se o filtro está transmitindo dados.
SetAbortSignal Define um sinalizador que indica se a renderização deve ser interrompida e rejeitada mais amostras.
SetRepaintStatus Habilita ou desabilita os eventos redesenhados.
Métodos públicos: métodos de State-Change Descrição
Ativo Chamado quando o estado é alternado para em pausa ou em execução. VirtuaisLUNs.
BeginFlush Inicia uma operação de liberação. VirtuaisLUNs.
BreakConnect Libera o pino de entrada de uma conexão. VirtuaisLUNs.
CheckReady Consulta se uma transição de estado foi concluída.
CompleteConnect Conclui a conexão do pino de entrada com outro PIN. VirtuaisLUNs.
CompleteStateChange Determina se uma transição para o estado em pausa está concluída. VirtuaisLUNs.
EndFlush Finaliza uma operação de liberação. VirtuaisLUNs.
Inativo Chamado quando o estado é alternado para parado. VirtuaisLUNs.
NotReady Sinaliza que uma transição de estado ainda não foi concluída.
Ready Sinaliza que uma transição de estado foi concluída.
StartStreaming Inicia o streaming quando o filtro alterna para um estado de execução. VirtuaisLUNs.
StopStreaming Interrompe o streaming quando o filtro sai do estado de execução. VirtuaisLUNs.
Métodos públicos: métodos de fim de fluxo Descrição
EndOfStream Notifica o filtro de que o PIN de entrada recebeu uma notificação de fim de fluxo. VirtuaisLUNs.
NotifyEndOfStream Posta um evento do EC _ Complete para o Gerenciador do grafo de filtro.
ResetEndOfStream Redefine os sinalizadores de fim de fluxo.
ResetEndOfStreamTimer Cancela o timer que agenda as _ notificações completas do EC. VirtuaisLUNs.
SendEndOfStream Se o fim do fluxo for atingido, o agendará um _ evento de conclusão do EC para o Gerenciador do grafo de filtro. VirtuaisLUNs.
TimerCallback Método de retorno de chamada para o evento de timer de fim de fluxo.
Métodos públicos: manipuladores Descrição
OnReceiveFirstSample Chamado quando o filtro recebe um exemplo enquanto está em pausa. VirtuaisLUNs.
OnRenderEnd Chamado depois que um exemplo é renderizado. VirtuaisLUNs.
OnRenderStart Chamado quando a renderização está prestes a ser iniciada. VirtuaisLUNs.
OnStartStreaming Chamado quando o filtro começa o streaming. VirtuaisLUNs.
OnStopStreaming Chamado quando o filtro para de streaming. VirtuaisLUNs.
OnWaitEnd Chamado quando o filtro é concluído aguardando o tempo de apresentação de um exemplo. VirtuaisLUNs.
OnWaitStart Chamado quando o filtro começa a aguardar o tempo de apresentação de um exemplo. VirtuaisLUNs.
PrepareRender Chamado antes de o filtro renderizar um exemplo. VirtuaisLUNs.
ShouldDrawSampleNow Determina como um exemplo é agendado para renderização. VirtuaisLUNs.
Métodos virtuais puros Descrição
CheckMediaType Determina se o filtro aceita um tipo de mídia específico.
DoRenderSample Renderiza um exemplo.
Métodos IMediaFilter Descrição
GetState Recupera o estado do filtro (em execução, parado ou pausado).
Pausar Pausa o filtro.
Executar Executa o filtro.
Stop Interrompe o filtro.
Métodos IBaseFilter Descrição
FindPin Recupera o PIN com o identificador especificado.

Requisitos

Requisito Valor
parâmetro
Renbase. h (incluir fluxos. h)
Biblioteca
Strmbase. lib (compilações de varejo);
Strmbasd. lib (compilações de depuração)