CPullPin, classe

cpullpin class hierarchy

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

Cette classe ne dérive pas de CBasePin ou n’implémente pas l’interface IPin , et certains noms de méthode se heurtent à IPin. Il est donc préférable d’utiliser un objet d’assistance à l’intérieur de votre épingle. Pour utiliser cette classe, procédez comme suit :

  1. Dérivez une classe d’assistance à partir de CPullPin, et dérivez une classe d’épingle d’entrée 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::Connecter. 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 les échantillons du filtre en 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 exemples entrants et les remettre en aval.
  7. Pour définir les positions d’arrêt et de démarrage, ou pour rechercher le flux, appelez la méthode CPullPin::Seek . Cette méthode interrompt le thread de travail et vide le graphique de filtre.
  8. Implémentez les méthodes CPullPin::EndOfStream, CPullPin::BeginFlush et CPullPin::EndFlush , comme décrit dans les remarques de ces méthodes.
  9. Implémentez la méthode CPullPin::OnError virtuelle pure pour gérer les erreurs de diffusion en continu.
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 l’épingle 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 à l’épingle de sortie.
CPullPin Méthode constructeur.
~CPullPin Méthode de destructeur. Virtuel.
DecideAllocator Négocie un allocateur avec la broche de sortie. Virtuel.
Déconnecter Beaks la connexion avec la broche de sortie.
Duration Récupère la durée du flux.
GetReader Retourne un pointeur vers l’interface IAsyncReader de l’épingle de sortie.
Inactif Arrête le thread de travail qui extrait les données de l’épingle de sortie.
Seek Définit les positions de début et d’arrêt du flux.
Méthodes virtuelles pures Description
BeginFlush Informe le filtre propriétaire pour vider les filtres en aval.
EndFlush Informe le filtre propriétaire pour 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 à partir de l’épingle de sortie.

Configuration requise

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