CSource, classe

hiérarchie de la classe CSource

La classe CSource est une classe de base pour l’implémentation de 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 pousse les exemples de média en aval.

Notes

La classe CSource est conçue pour prendre en charge le modèle push pour le workflow de données. Cette classe n’est pas recommandée pour créer des filtres de lecteur de fichier. 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 Flow de données pour les développeurs de filtres.

Variables membres protégées Description
m _ iPins Nombre de broches sur le filtre.
m _ paStreams Tableau de codes confidentiels.
m _ cStateLock Objet de section critique qui protège l’état du filtre.
Méthodes publiques Description
CSource Méthode de constructeur.
~ CSource Méthode de destructeur.
GetPinCount Récupère le nombre de broches sur le filtre.
GetPin Récupère un code confidentiel.
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 un pin spécifié du filtre.
FindPinNumber Récupère le numéro d’un pin spécifié sur le filtre.
Méthodes IBaseFilter Description
FindPin Récupère le code confidentiel 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 codes confidentiels s’ajoutent automatiquement au filtre dans leurs méthodes de constructeur et se suppriment dans leurs méthodes de destructeur.

Pour synchroniser l’état de 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 du pin, comme suit :

CAutoLock lock(m_pFilter->pStateLock());

Spécifications

Condition requise Valeur
En-tête
Source. h (inclure Flux. h)
Bibliothèque
Strmbase. lib (versions commerciales);
Strmbasd. lib (versions Debug)

Voir aussi

Écriture de filtres source