Partager via


Classe CBaseOutputPin

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Hiérarchie de la classe cbaseoutputpin

La CBaseOutputPin classe est une classe de base abstraite qui implémente une broche de sortie.

Cette classe dérive de CBasePin. Il diffère de CBasePin sur les points suivants :

  • Il se connecte uniquement aux broches d’entrée qui prennent en charge l’interface IMemInputPin .
  • Il prend en charge le transport de la mémoire locale via l’interface IMemAllocator .
  • Il rejette les notifications de fin de flux, de vidage et de nouveau segment. (Celles-ci ne doivent pas être envoyées à une broche de sortie.)
  • Il fournit des méthodes pour la livraison d’échantillons en aval.

Lorsque la broche se connecte, elle demande un allocateur de mémoire à partir de la broche d’entrée. À défaut, il crée un objet d’allocateur. La broche de sortie est chargée de définir les propriétés de l’allocateur. Il le fait par le biais de la méthode virtuelle pure CBaseOutputPin::D ecideBufferSize. Remplacez cette méthode dans votre classe dérivée. Si la broche d’entrée a des exigences de mémoire tampon, elles sont passées à la méthode DecideBufferSize .

Appelez la méthode CBaseOutputPin::GetDeliveryBuffer pour obtenir un exemple de média vide. Appelez la méthode CBaseOutputPin::D eliver pour remettre des exemples en aval.

Votre classe dérivée doit remplacer la méthode CBasePin::CheckMediaType virtuelle pure pour valider le type de média pendant les connexions d’épingle.

Variables de membre protégé Description
m_pAllocator Pointeur vers l’allocateur de mémoire.
m_pInputPin Pointeur vers la broche d’entrée connectée à cette broche.
Méthodes publiques Description
CBaseOutputPin Méthode du constructeur.
CompleteConnect Termine une connexion à une broche d’entrée. Virtuel.
DecideAllocator Sélectionne un allocateur de mémoire. Virtuel.
GetDeliveryBuffer Récupère un exemple de média qui contient une mémoire tampon vide. Virtuel.
Remettre Remet un exemple de média à la broche d’entrée connectée. Virtuel.
InitAllocator Crée un allocateur de mémoire. Virtuel.
CheckConnect Détermine si une connexion d’épingle est appropriée.
BreakConnect Libère l’épingle d’une connexion.
Actif Avertit l’épingle que le filtre est maintenant actif.
Inactif Avertit l’épingle que le filtre n’est plus actif.
DeliverEndOfStream Remet une notification de fin de flux à la broche d’entrée connectée. Virtuel.
DeliverBeginFlush Demande à la broche d’entrée connectée de commencer une opération de vidage. Virtuel.
DeliverEndFlush Demande à la broche d’entrée connectée de mettre fin à une opération de vidage. Virtuel.
DeliverNewSegment Remet une notification de nouveau segment à la broche d’entrée connectée. Virtuel.
Méthodes virtuelles pures Description
DecideBufferSize Définit les exigences de mémoire tampon.
IPin, méthodes Description
BeginFlush Commence une opération de vidage.
EndFlush Met fin à une opération de vidage.
EndOfStream Avertit l’épingle qu’aucune donnée supplémentaire n’est attendue.

Configuration requise

Condition requise Valeur
En-tête
Amfilter.h (include Streams.h)
Bibliothèque
Strmbase.lib (builds de vente au détail) ;
Strmbasd.lib (builds de débogage)