CBaseRenderer, classe

hiérarchie de la classe cbaserenderer

La CBaseRenderer classe est une classe de base pour l’implémentation de filtres de convertisseur. Il prend en charge une broche d’entrée, implémentée par la classe CRendererInputPin . Pour utiliser cette classe, déclarez une classe dérivée qui hérite de CBaseRenderer . Au minimum, la classe dérivée doit implémenter les méthodes suivantes, qui sont déclarées comme virtuelles pures dans la classe de base :

  • CBaseRenderer :: CheckMediaType: accepte ou rejette les types de média proposés. Le filtre appelle cette méthode pendant le processus de connexion du code confidentiel.
  • CBaseRenderer ::D orendersample: restitue un exemple. Le filtre appelle cette méthode pour chaque exemple qu’il reçoit en cours d’exécution.

La classe de base gère les changements d’État et les problèmes de synchronisation. Il planifie également des exemples de rendu, bien qu’il n’implémente aucune mesure de contrôle de qualité. La classe de base déclare également plusieurs méthodes « handler ». Il s’agit des méthodes que le filtre appelle à des points spécifiques dans le processus de diffusion en continu. Elles ne font rien dans la classe de base, mais la classe dérivée peut les substituer. Dans le tableau qui suit, elles sont répertoriées sous l’en-tête méthodes publiques : gestionnaires.

Le gestionnaire CBaseRenderer :: OnReceiveFirstSample mérite une mention spéciale. Le filtre appelle cette méthode s’il reçoit un exemple alors que le filtre est suspendu. Cela peut se produire si le graphique passe de arrêté à suspendu, ou si le graphique est cherché pendant la suspension. Les convertisseurs vidéo utilisent généralement l’exemple pour afficher une image continue. Lorsque le filtre passe de suspendu à en cours d’exécution, il envoie le même échantillon à la méthode CBaseRenderer ::D orendersample , comme premier échantillon dans le flux.

La CBaseRenderer classe expose les interfaces IMediaSeeking et IMediaPosition via l’objet CRendererPosPassThru . Elle transmet toutes les demandes de recherche au filtre suivant en amont.

Planification

Lorsque le filtre amont appelle la méthode IMemInputPin :: Receive du code confidentiel d’entrée pour remettre un exemple, le code PIN passe cet appel à la méthode CBaseRenderer :: Receive du filtre. Le filtre supprime l’exemple, le restitue immédiatement ou le planifie en vue d’un rendu.

Si l’exemple n’a pas de datage, ou si aucune horloge de référence n’est disponible, le filtre restitue l’exemple immédiatement. Dans le cas contraire, le filtre appelle la méthode CBaseRenderer :: ShouldDrawSampleNow pour déterminer la marche à suivre. Par défaut, l’exemple est planifié en fonction de ses horodatages. La classe dérivée peut substituer ShouldDrawSampleNow pour prendre en charge le contrôle de qualité.

Pour planifier un exemple, le filtre appelle la méthode IReferenceClock :: AdviseTime , qui crée une demande de notification. La méthode Receive est ensuite bloquée jusqu’à l’heure planifiée, ou jusqu’à ce que le filtre change d’État. Le blocage empêche le filtre en amont de générer plus d’échantillons jusqu’à ce que l’exemple actuel soit rendu.

Lorsque le filtre en amont appelle la méthode IPIN :: EndOfStream pour signaler la fin du flux, le filtre envoie un événement EC _ complet au gestionnaire du graphique de filtres. Le filtre attend l’heure d’arrêt de l’exemple actuel avant d’envoyer l’événement.

Variables membres protégées Description
m _ bAbort Indicateur qui spécifie s’il faut arrêter le rendu et rejeter d’autres exemples.
m _ bEOS Indicateur qui spécifie si la fin de flux a été atteinte.
m _ bEOSDelivered Indicateur qui spécifie si le filtre a publié l' _ événement EC Complete.
m _ bInReceive Indicateur qui spécifie si le filtre traite un appel de réception .
m _ bRepaintStatus Indicateur qui active ou désactive les événements de redessin.
m _ bStreaming Indicateur qui spécifie si le filtre diffuse des données.
m _ dwAdvise Identificateur de l’événement de minuterie qui planifie le rendu.
m _ EndOfStreamTimer Minuterie-identificateur d’événement, pour la planification _ des notifications complètes ec.
m _ evComplete Événement signalé lorsqu’une transition d’État est terminée.
m _ InterfaceLock Verrou d’état de filtre.
m _ ObjectCreationLock Verrou pour protéger la création d’objets à l’intérieur du filtre.
m _ pInputPin Pointeur vers la broche d’entrée du filtre.
m _ pMediaSample Pointeur vers l’exemple de média actuel.
m _ pPosition Objet d’assistance pour passer les commandes de recherche en amont.
m _ pQSink Pointeur vers l’objet qui reçoit les messages de contrôle de qualité.
m _ RendererLock Verrou de streaming.
m _ RenderEvent Événement utilisé pour planifier le rendu.
m _ SignalTime Arrête l’heure sur l’échantillon actuel.
m _ ThreadSignal Événement utilisé pour libérer le thread de streaming.
Méthodes publiques Description
CancelNotification Annule l’événement du minuteur qui planifie le rendu. Virtuels.
CBaseRenderer Méthode de constructeur.
~ CBaseRenderer Méthode de destructeur.
GetMediaPositionInterface Récupère les pointeurs d’interface IMediaPosition et IMediaSeeking du filtre. Virtuels.
GetPin Récupère un code confidentiel. Virtuels.
GetPinCount Récupère le nombre de broches. Virtuels.
GetSampleTimes Récupère les horodatages d’un exemple. Virtuels.
OnDisplayChange Publie un événement de _ _ modification d’affichage EC dans le gestionnaire de graphique de filtre.
PrepareReceive Prépare le rendu d’un exemple. Virtuels.
Çoive Reçoit l’échantillon de média suivant dans le flux. Virtuels.
Crée Restitue un exemple. Virtuels.
ScheduleSample Planifie un exemple de rendu. Virtuels.
SendNotifyWindow Notifie le filtre amont du handle de fenêtre vidéo.
SendRepaint Envoie un événement Repaint au gestionnaire de graphique de filtre.
SetMediaType Appelée lorsque le type de média du pin est défini. Virtuels.
SignalTimerFired Efface l’identificateur de minuterie utilisé pour planifier le rendu.
SourceThreadCanWait Contient ou libère le thread de streaming. Virtuels.
WaitForReceiveToComplete Attend la fin de la méthode CBaseRenderer :: Receive .
WaitForRenderTime Attend l’heure de présentation de l’exemple actuel. Virtuels.
Méthodes publiques : méthodes d’accesseur Description
ClearPendingSample Libère l’exemple actuel. Virtuels.
GetCurrentSample Récupère l’exemple actuel. Virtuels.
GetRealState Récupère l’état du filtre.
GetRenderEvent Récupère l’événement qui planifie le rendu.
HaveCurrentSample Détermine si le filtre a un exemple. Virtuels.
IsEndOfStream Interroge si la notification de fin de flux a été reçue.
IsEndOfStreamDelivered Interroge si l' _ événement de la totalité du fait a été remis au gestionnaire du graphique de filtres.
IsStreaming Interroge si le filtre diffuse des données.
SetAbortSignal Définit un indicateur qui spécifie s’il faut arrêter le rendu et rejeter d’autres exemples.
SetRepaintStatus Active ou désactive les événements de redessin.
Méthodes publiques : méthodes State-Change Description
Actif Appelé lorsque l’état passe à suspendu ou en cours d’exécution. Virtuels.
BeginFlush Commence une opération de vidage. Virtuels.
BreakConnect Libère la broche d’entrée d’une connexion. Virtuels.
CheckReady Interroge si une transition d’État est terminée.
CompleteConnect Termine la connexion de la broche d’entrée à une autre broche. Virtuels.
CompleteStateChange Détermine si une transition vers l’état suspendu est terminée. Virtuels.
EndFlush Termine une opération de vidage. Virtuels.
Inactive Appelé lorsque l’état passe à arrêté. Virtuels.
NotReady Signale qu’une transition d’État n’est pas encore terminée.
Ready Signale qu’une transition d’État est terminée.
StartStreaming Lance la diffusion en continu lorsque le filtre passe à l’État en cours d’exécution. Virtuels.
StopStreaming Arrête la diffusion en continu lorsque le filtre sort de l’État en cours d’exécution. Virtuels.
Méthodes publiques : méthodes de fin de flux Description
EndOfStream Notifie le filtre que la broche d’entrée a reçu une notification de fin de flux. Virtuels.
NotifyEndOfStream Publie un événement EC _ complet dans le gestionnaire du graphique de filtres.
ResetEndOfStream Réinitialise les indicateurs de fin de flux.
ResetEndOfStreamTimer Annule la minuterie qui planifie les _ notifications complètes ec. Virtuels.
SendEndOfStream Si la fin du flux a été atteinte, planifie un _ événement d’achèvement ce pour le gestionnaire de graphes de filtre. Virtuels.
TimerCallback Méthode de rappel pour l’événement de minuterie de fin de flux.
Méthodes publiques : gestionnaires Description
OnReceiveFirstSample Appelé lorsque le filtre reçoit un exemple en pause. Virtuels.
OnRenderEnd Appelé après le rendu d’un exemple. Virtuels.
OnRenderStart Appelé lorsque le rendu est sur le le début. Virtuels.
OnStartStreaming Appelé lorsque le filtre commence la diffusion en continu. Virtuels.
OnStopStreaming Appelé lorsque le filtre arrête la diffusion en continu. Virtuels.
OnWaitEnd Appelé lorsque le filtre est terminé en attendant l’heure de la présentation d’un exemple. Virtuels.
OnWaitStart Appelé lorsque le filtre commence à attendre l’heure de la présentation d’un exemple. Virtuels.
PrepareRender Appelé avant que le filtre ne restitue un exemple. Virtuels.
ShouldDrawSampleNow Détermine la façon dont un échantillon est planifié pour le rendu. Virtuels.
Méthodes virtuelles pures Description
CheckMediaType Détermine si le filtre accepte un type de média spécifique.
DoRenderSample Restitue un exemple.
Méthodes IMediaFilter Description
GetState Récupère l’état du filtre (en cours d’exécution, arrêté ou suspendu).
Suspendre Suspend le filtre.
Exécuter Permet d'exécuter le filtre.
Erreur Arrête le filtre.
Méthodes IBaseFilter Description
FindPin Récupère le code confidentiel avec l’identificateur spécifié.

Configuration requise

Condition requise Valeur
En-tête
Renbase. h (inclure Flux. h)
Bibliothèque
Strmbase. lib (versions commerciales);
Strmbasd. lib (versions Debug)