Partager via


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.]

Hiérarchie de la classe cbasestreamcontrol

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 :

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
Strmctl.h (include Streams.h)
Bibliothèque
Strmbase.lib (builds de vente au détail) ;
Strmbasd.lib (builds de débogage)