CBaseRenderer, classe

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 |
|
| Bibliothèque |
|