Classe CBaseStreamControl
[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.]
Cette classe implémente l’interface IAMStreamControl pour les broches d’entrée et de sortie. Il permet de contrôler le démarrage et l’arrêt d’une broche individuelle sur le filtre. Une broche qui prend en charge IAMStreamControl doit hériter de cette classe de base. Voici une déclaration classique pour une broche d’entrée :
class CMyInputPin : public CBaseInputPin, public CBaseStreamControl
Veillez à remplacer NonDelegatingQueryInteface pour exposer IAMStreamControl. Pour plus d’informations, consultez Comment implémenter IUnknown.
Méthodes publiques | Description |
---|---|
CBaseStreamControl | Méthode du constructeur. |
~CBaseStreamControl | Méthode de destructeur. |
CheckStreamState | Détermine si un exemple de média doit être remis ou ignoré. |
Rinçage | Avertit la classe de base que la broche a démarré ou a cessé de vider. |
NotifyFilterState | Avertit l’épingle lorsque l’état du filtre change. |
SetFilterGraph | Spécifie le récepteur d’événements pour les événements de contrôle de flux. |
SetSyncSource | Notifie la classe de base de l’horloge de référence actuelle. |
IamStreamControl, méthodes | Description |
GetInfo | Récupère des informations sur les paramètres actuels de contrôle de flux, y compris les heures de démarrage et d’arrêt. |
StartAt | Indique à l’épingle quand commencer à remettre des données. |
StopAt | Indique à l’épingle quand arrêter la remise des données. |
Notes
Cette classe nécessite que l’épingle et le filtre propriétaire notifient la classe lorsque différents événements se produisent, tels que le filtre joint au graphe ou la réception d’une nouvelle horloge de référence. Vous devez appeler les méthodes de classe suivantes :
- Dans la méthode IMediaFilter::SetSyncSource du filtre, appelez la méthode CBaseStreamControl::SetSyncSource . Cette méthode notifie la classe de l’horloge de référence actuelle.
- Dans la méthode CBaseFilter::JoinFilterGraph du filtre, appelez la méthode CBaseStreamControl::SetFilterGraph . Cette méthode donne à la classe un pointeur vers le Gestionnaire de graphe de filtres, afin que la classe puisse envoyer les événements de contrôle de flux appropriés.
- Chaque fois que le filtre change d’état (en cours d’exécution, en pause ou arrêté), appelez la méthode CBaseStreamControl::NotifyFilterState .
- Dans les méthodes IPin::BeginFlush et IPin::EndFlush de l’épingle, appelez la méthode CBaseStreamControl::Flushing .
La CBaseStreamControl
classe utilise l’horloge de référence du graphe de filtre pour déterminer les exemples que le filtre doit remettre et ceux qu’il doit ignorer. Dans la méthode IMemInputPin::Receive de votre épingle, appelez la méthode CBaseStreamControl::CheckStreamState avec un pointeur vers l’exemple de média entrant. Si la méthode retourne la valeur STREAM_FLOWING, livrez l’exemple en aval. Sinon, ignorez-le.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête |
|
Bibliothèque |
|
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour