Méthode CSourceStream.DoBufferProcessingLoop

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est 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.]

La DoBufferProcessingLoop méthode génère des données multimédias et les remet à la broche d’entrée en aval.

Syntaxe

virtual HRESULT DoBufferProcessingLoop();

Paramètres

Cette méthode n’a aucun paramètre.

Valeur retournée

Retourne une valeur HRESULT . Les valeurs possibles incluent celles indiquées dans le tableau suivant.

Code de retour Description
S_FALSE
Le thread a reçu une demande d’arrêt.
S_OK
Le flux a terminé ou le filtre en aval n’accepte pas d’exemples.

Notes

Cette méthode implémente la boucle main qui traite les données et les fournit en aval. Chaque fois dans la boucle, la méthode récupère un exemple de média vide à partir de l’allocateur. Il transmet l’exemple à la méthode CSourceStream::FillBuffer . La méthode FillBuffer , que la classe dérivée doit implémenter, génère des données multimédias et les place dans l’exemple de mémoire tampon.

La boucle se termine lorsque l’un des éléments suivants se produit :

  • La méthode IMemInputPin::Receive de la broche d’entrée rejette un exemple.
  • La méthode FillBuffer retourne S_FALSE, indiquant la fin du flux ou retourne un code d’erreur.
  • Le thread reçoit une requête CSourceStream::Stop .

La DoBufferProcessingLoop méthode gère la notification de fin de flux. Si une erreur se produit, elle envoie un événement EC_ERRORABORT au gestionnaire de graphe de filtre.

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

CSourceStream, classe