Partager via


Classe CPullPin

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est 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 classes cpullpin

La CPullPin classe prend en charge les broches d’entrée qui extrayent des données via l’interface IAsyncReader . Utilisez cette classe si vous implémentez un filtre qui utilise le modèle pull pour demander des données à partir du filtre amont. Pour plus d’informations, consultez Data Flow dans filtrer le graphique et le modèle d’extraction.

Cette classe ne dérive pas de CBasePin ou n’implémente pas l’interface IPin , et certains des noms de méthode sont en conflit avec IPin, il est donc préférable d’utiliser comme objet d’assistance à l’intérieur de votre broche. Pour utiliser cette classe, procédez comme suit :

  1. Dérivez une classe d’assistance de CPullPin, et dérivez une classe de broche d’entrée à partir de CBasePin. Déclarez une instance de l’objet CPullPin en tant que variable membre de la classe pin.
  2. Remplacez la méthode CBasePin::CheckConnect pour appeler CPullPin::Connect. Cette méthode interroge l’autre broche pour IAsyncReader.
  3. Remplacez la méthode CBasePin::BreakConnect pour appeler CPullPin::D isconnect.
  4. Remplacez la méthode CBasePin::Active pour appeler CPullPin::Active. Cette méthode démarre un thread de travail qui extrait des exemples du filtre amont. Lorsque les broches se connectent, vous pouvez spécifier si vous souhaitez que le thread de travail effectue des demandes de lecture asynchrones ou synchrones.
  5. Remplacez la méthode CBasePin::Inactive pour appeler CPullPin::Inactive. Cette méthode arrête le thread de travail.
  6. Implémentez la méthode CPullPin::Receive virtuelle pure pour traiter les échantillons entrants et les remettre en aval.
  7. Pour définir les positions d’arrêt et de début, ou pour rechercher le flux, appelez la méthode CPullPin::Seek . Cette méthode interrompt le thread de travail et vide le graphe de filtre.
  8. Implémentez les méthodes CPullPin::EndOfStream, CPullPin::BeginFlush et CPullPin::EndFlush virtuelles, comme décrit dans les remarques relatives à ces méthodes.
  9. Implémentez la méthode CPullPin::OnError virtuelle pure pour gérer les erreurs de streaming.
Variables membres publiques Description
m_pAlloc Pointeur vers l’interface IMemAllocator de l’allocateur de mémoire.
Méthodes publiques Description
Actif Crée un thread de travail qui extrait les données de la broche de sortie.
AlignDown Tronque une valeur à une limite d’alignement spécifiée.
AlignUp Arrondit une valeur à une limite d’alignement spécifiée.
Connecter Termine une connexion à la broche de sortie.
CPullPin Méthode du constructeur.
~CPullPin Méthode de destructeur. Virtuel.
DecideAllocator Négocie un allocateur avec la broche de sortie. Virtuel.
Déconnecter Bec la connexion avec la broche de sortie.
Durée Récupère la durée du flux.
GetReader Retourne un pointeur vers l’interface IAsyncReader de la broche de sortie.
Inactif Arrête le thread de travail qui extrait les données de la broche de sortie.
Seek Définit les positions de début et d’arrêt du flux.
Méthodes virtuelles pures Description
BeginFlush Indique au filtre propriétaire de vider les filtres en aval.
EndFlush Informe le filtre propriétaire de mettre fin à une opération de vidage.
EndOfStream Appelé après que l’objet a remis le dernier exemple.
OnError Appelé si une erreur se produit pendant la diffusion en continu.
Recevoir Appelé lorsque l’objet reçoit un exemple de média de la broche de sortie.

Configuration requise

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