CSource, classe

[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 csource

La classe CSource est une classe de base permettant d’implémenter des filtres sources. Un filtre dérivé de CSource contient une ou plusieurs broches de sortie dérivées de la classe CSourceStream . Chaque broche de sortie crée un thread de travail qui envoie des exemples multimédias en aval.

Notes

La classe CSource est conçue pour prendre en charge le modèle Push pour le flux de données. Cette classe n’est pas recommandée pour la création de filtres de lecteur de fichiers. Les lecteurs de fichiers doivent prendre en charge le modèle d’extraction par le biais de l’interface IAsyncReader . Pour plus d’informations, consultez Data Flow pour les développeurs de filtres.

Variables de membre protégé Description
m_iPins Nombre d’épingles sur le filtre.
m_paStreams Tableau de broches.
m_cStateLock Objet de section critique qui protège l’état du filtre.
Méthodes publiques Description
CSource Méthode du constructeur.
~CSource Méthode de destructeur.
GetPinCount Récupère le nombre de broches sur le filtre.
GetPin Récupère une épingle.
pStateLock Récupère un pointeur vers l’objet de section critique du filtre.
AddPin Ajoute une nouvelle broche de sortie au filtre.
RemovePin Supprime une broche spécifiée du filtre.
FindPinNumber Récupère le numéro d’une broche spécifiée sur le filtre.
IBaseFilter, méthodes Description
FindPin Récupère l’épingle avec l’identificateur spécifié.

Notes

Pour implémenter une broche de sortie, procédez comme suit :

Pour implémenter le filtre, procédez comme suit :

  • Dérivez une classe de CSource.
  • Dans le constructeur, créez une ou plusieurs broches de sortie dérivées de CSourceStream. Les broches s’ajoutent automatiquement au filtre dans leurs méthodes de constructeur et se suppriment elles-mêmes dans leurs méthodes de destructeur.

Pour synchroniser l’état du filtre entre plusieurs threads, appelez la méthode CSource::p StateLock . Cette méthode retourne un pointeur vers la section critique de l’état de filtre. Utilisez la classe CAutoLock pour contenir la section critique. À partir d’un code confidentiel, vous pouvez accéder à pStateLock à partir de la variable membre CBasePin::m_pFilter de l’épingle, comme suit :

CAutoLock lock(m_pFilter->pStateLock());

Configuration requise

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

Voir aussi

Écriture de filtres sources