Classe CBaseRenderer

cbaserenderer class hierarchy

La classe è una classe di base per l'implementazione CBaseRenderer dei filtri del renderer. Supporta un pin di input implementato dalla classe CRendererInputPin . Per usare questa classe, dichiarare una classe derivata che eredita CBaseRenderer. Almeno, la classe derivata deve implementare i metodi seguenti, dichiarati come virtuali pure nella classe base:

  • CBaseRenderer::CheckMediaType: accetta o rifiuta i tipi di supporti proposti. Il filtro chiama questo metodo durante il processo di connessione pin.
  • CBaseRenderer::D oRenderSample: esegue il rendering di un esempio. Il filtro chiama questo metodo per ogni esempio che riceve durante l'esecuzione.

La classe di base gestisce le modifiche dello stato e i problemi di sincronizzazione. Pianifica anche esempi per il rendering, anche se non implementa misure di controllo qualitativo. La classe base dichiara anche diversi metodi "gestore". Questi sono metodi che i filtri chiamano in punti specifici nel processo di streaming. Non fanno nulla nella classe di base, ma la classe derivata può eseguirne l'override. Nella tabella seguente sono elencate sotto l'intestazione Metodi pubblici: gestori.

Il gestore CBaseRenderer::OnReceiveFirstSample merita una menzione speciale. Il filtro chiama questo metodo se riceve un esempio mentre il filtro viene sospeso. Ciò può verificarsi se il grafico passa da arrestato a sospeso o se il grafico viene cercato durante la sospensione. I renderer video usano in genere l'esempio per visualizzare un fotogramma ancora. Quando il filtro passa da sospeso a in esecuzione, invia lo stesso esempio al metodo CBaseRenderer::D oRenderSample , come primo esempio nel flusso.

La CBaseRenderer classe espone le interfacce IMediaSeeking e IMediaPosition tramite l'oggetto CRendererPosPassThru . Passa tutte le richieste di ricerca al successivo filtro upstream.

Pianificazione

Quando il filtro upstream chiama il metodo IMemInputPin::Receive del pin di input per recapitare un esempio, il pin passa questa chiamata al metodo CBaseRenderer::Receive del filtro. Il filtro elimina l'esempio, lo esegue immediatamente o lo pianifica per il rendering.

Se l'esempio non dispone di timestamp o se non è disponibile alcun orologio di riferimento, il filtro esegue immediatamente il rendering dell'esempio. In caso contrario, il filtro chiama il metodo CBaseRenderer::ShouldDrawSampleNow per determinare cosa fare. Per impostazione predefinita, l'esempio viene pianificato in base ai relativi timestamp. La classe derivata può eseguire l'override di ShouldDrawSampleNow per supportare il controllo qualità.

Per pianificare un esempio, il filtro chiama il metodo IReferenceClock::AdviseTime, che crea una richiesta di consulenza. Il metodo Receive blocca quindi fino all'ora pianificata o fino a quando il filtro cambia stato. Il blocco impedisce al filtro upstream di distribuire più campioni fino a quando non viene eseguito il rendering dell'esempio corrente.

Quando il filtro upstream chiama il metodo IPin::EndOfStream per segnalare la fine del flusso, il filtro invia un evento EC_COMPLETE alla gestione del grafico del filtro. Il filtro attende il tempo di arresto dell'esempio corrente prima di inviare l'evento.

Variabili membro protette Descrizione
m_bAbort Flag che indica se arrestare il rendering e rifiutare altri esempi.
m_bEOS Flag che indica se è stata raggiunta la fine del flusso.
m_bEOSDelivered Flag che indica se il filtro ha pubblicato l'evento EC_COMPLETE.
m_bInReceive Flag che indica se il filtro sta elaborando una chiamata di ricezione .
m_bRepaintStatus Flag che abilita o disabilita gli eventi di ripaint.
m_bStreaming Flag che indica se il filtro è in streaming dei dati.
m_dwAdvise Identificatore dell'evento timer che pianifica il rendering.
m_EndOfStreamTimer Identificatore di evento timer per la pianificazione delle notifiche di EC_COMPLETE.
m_evComplete Evento segnalato quando viene completata una transizione dello stato.
m_InterfaceLock Blocco dello stato filtro.
m_ObjectCreationLock Blocca per proteggere la creazione di oggetti all'interno del filtro.
m_pInputPin Puntatore al pin di input del filtro.
m_pMediaSample Puntatore all'esempio di supporto corrente.
m_pPosition Oggetto Helper per passare i comandi upstream.
m_pQSink Puntatore all'oggetto che riceve messaggi di controllo qualità.
m_RendererLock Blocco di streaming.
m_RenderEvent Evento usato per pianificare rendering.
m_SignalTime Arrestare l'ora nell'esempio corrente.
m_ThreadSignal Evento usato per rilasciare il thread di streaming.
Metodi pubblici Descrizione
CancelNotification Annulla l'evento timer che pianifica il rendering. Virtuale.
CBaseRenderer Metodo costruttore.
~CBaseRenderer Metodo distruttore.
GetMediaPositionInterface Recupera i puntatori dell'interfaccia IMediaPosition e IMediaSeeking del filtro. Virtuale.
GetPin Recupera un pin. Virtuale.
GetPinCount Recupera il numero di pin. Virtuale.
GetSampleTimes Recupera i timestamp da un esempio. Virtuale.
OnDisplayChange Esegue il post di un evento EC_DISPLAY_CHANGED al gestore del grafico di filtro.
PrepareReceive Prepara il rendering di un esempio. Virtuale.
Ricevere Riceve l'esempio multimediale successivo nel flusso. Virtuale.
Rendere Esegue il rendering di un esempio. Virtuale.
ScheduleSample Pianifica un esempio per il rendering. Virtuale.
SendNotifyWindow Notifica al filtro upstream dell'handle della finestra video.
SendRepaint Invia un evento di ripaint alla gestione dei grafici di filtro.
SetMediaType Chiamato quando il tipo di supporto del pin è impostato. Virtuale.
SignalTimerFired Cancella l'identificatore timer usato per pianificare il rendering.
SourceThreadCanWait Contiene o rilascia il thread di streaming. Virtuale.
WaitForReceiveToComplete Attende il completamento del metodo CBaseRenderer::Receive .
WaitForRenderTime Attende l'ora di presentazione dell'esempio corrente. Virtuale.
Metodi pubblici: metodi di accesso Descrizione
ClearPendingSample Rilascia l'esempio corrente. Virtuale.
GetCurrentSample Recupera l'esempio corrente. Virtuale.
GetRealState Recupera lo stato del filtro.
GetRenderEvent Recupera l'evento che pianifica il rendering.
HaveCurrentSample Determina se il filtro ha un esempio. Virtuale.
IsEndOfStream Esegue query sul fatto che la notifica end-of-stream sia stata ricevuta.
IsEndOfStreamDelivered Esegue una query sul fatto che l'evento EC_COMPLETE sia stato recapitato alla gestione dei grafici di filtro.
IsStreaming Esegue query sul fatto che il filtro sia in streaming dei dati.
SetAbortSignal Imposta un flag che indica se arrestare il rendering e rifiutare altri esempi.
SetRepaintStatus Abilita o disabilita gli eventi di repaint.
Metodi pubblici: metodi State-Change Descrizione
Attivo Chiamato quando lo stato viene spostato in pausa o in esecuzione. Virtuale.
BeginFlush Avvia un'operazione di scaricamento. Virtuale.
BreakConnect Rilascia il pin di input da una connessione. Virtuale.
CheckReady Esegue query sul completamento di una transizione dello stato.
CompleteConnect Completa la connessione del pin di input a un altro pin. Virtuale.
CompleteStateChange Determina se è stata completata una transizione allo stato sospeso. Virtuale.
EndFlush Termina un'operazione di scaricamento. Virtuale.
Inattivo Chiamato quando lo stato viene arrestato. Virtuale.
NotReady Segnala che una transizione dello stato non è ancora stata completata.
Ready Segnala che è stata completata una transizione dello stato.
StartStreaming Avvia lo streaming quando il filtro passa a uno stato in esecuzione. Virtuale.
StopStreaming Arresta lo streaming quando il filtro esce dallo stato in esecuzione. Virtuale.
Metodi pubblici: metodi end-of-stream Descrizione
EndOfStream Notifica al filtro che il pin di input ha ricevuto una notifica end-of-stream. Virtuale.
NotifyEndOfStream Invia un evento EC_COMPLETE al gestore dei grafici di filtro.
ResetEndOfStream Reimposta i flag end-of-stream.
ResetEndOfStreamTimer Annulla il timer che pianifica le notifiche EC_COMPLETE. Virtuale.
SendEndOfStream Se è stata raggiunta la fine del flusso, pianifica un evento EC_COMPLETE per la gestione del grafo dei filtri. Virtuale.
Timercallback Metodo di callback per l'evento timer di fine flusso.
Metodi pubblici: gestori Descrizione
OnReceiveFirstSample Chiamato quando il filtro riceve un campione durante la sospensione. Virtuale.
OnRenderEnd Chiamato dopo il rendering di un esempio. Virtuale.
OnRenderStart Chiamato quando il rendering sta per iniziare. Virtuale.
OnStartStreaming Chiamato quando il filtro inizia lo streaming. Virtuale.
OnStopStreaming Chiamato quando il filtro interrompe lo streaming. Virtuale.
OnWaitEnd Viene chiamato quando il filtro viene completato in attesa dell'ora di presentazione di un campione. Virtuale.
OnWaitStart Chiamato quando il filtro inizia ad attendere l'ora di presentazione di un campione. Virtuale.
PrepareRender Chiamato prima che il filtro esegua il rendering di un esempio. Virtuale.
ShouldDrawSampleNow Determina come viene pianificato il rendering di un esempio. Virtuale.
Metodi virtuali pure Descrizione
CheckMediaType Determina se il filtro accetta un tipo di supporto specifico.
DoRenderSample Esegue il rendering di un esempio.
Metodi IMediaFilter Descrizione
GetState Recupera lo stato del filtro (in esecuzione, arrestato o sospeso).
Sospendi Sospende il filtro.
Esegui Esegue il filtro.
Stop Arresta il filtro.
Metodi IBaseFilter Descrizione
FindPin Recupera il pin con l'identificatore specificato.

Requisiti

Requisito Valore
Intestazione
Renbase.h (includere Flussi.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)