Partager via


Classe COutputQueue

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

coutputqueue

La COutputQueue classe implémente une file d’attente pour fournir des exemples multimédias.

Cette classe permet à une broche de sortie de fournir des exemples de manière asynchrone. Les exemples sont placés sur une file d’attente et un thread de travail les remet à l’épingle d’entrée. La file d’attente peut également contenir des messages de contrôle qui indiquent un nouveau segment, une notification de fin de flux ou une opération de vidage.

Pour utiliser cette classe, créez un objet COutputQueue pour chaque broche de sortie sur le filtre. Dans la méthode du constructeur, spécifiez la broche d’entrée connectée à cette broche de sortie. À l’aide de cette classe, la broche de sortie n’appelle pas de méthodes directement sur la broche d’entrée. Au lieu de cela, il appelle les méthodes correspondantes dans COutputQueue, comme indiqué dans le tableau suivant.

Pin, méthode COutputQueue, méthode
IPin::BeginFlush BeginFlush
IPin::EndFlush EndFlush
IPin::EndOfStream EOS
IPin::NewSegment NewSegment
IMemInputPin::Receive Recevoir
IMemInputPin::ReceiveMultiple ReceiveMultiple

Si vous le souhaitez, vous pouvez configurer l’objet COutputQueue pour qu’il fournisse des exemples de manière synchrone, sans thread de travail. L’objet peut également décider au moment de l’exécution s’il faut utiliser un thread de travail, en fonction des caractéristiques de la broche d’entrée. Pour plus d’informations, consultez COutputQueue::COutputQueue.

Variables membres protégées Description
m_pPin Pointeur vers l’interface IPin de la broche d’entrée.
m_pInputPin Pointeur vers l’interface IMemInputPin de la broche d’entrée.
m_bBatchExact Indicateur qui spécifie si l’objet fournit des exemples dans des lots exacts.
m_lBatchSize Taille du lot.
m_List Exemple de file d’attente multimédia.
m_hSem Gérez vers un sémaphore, utilisé par le thread pour attendre des exemples.
m_evFlushComplete Événement signalant la fin d’une opération de vidage.
m_hThread Gérez le thread de travail.
m_ppSamples Tableau d’exemples de taille COutputQueue::m_lBatchSize.
m_nBatched Nombre d’échantillons actuellement traités par lots et en attente de traitement.
m_lWaiting Indicateur qui a une valeur différente de zéro lorsque le thread attend un exemple.
m_bFlushing Indicateur qui spécifie si l’objet effectue une opération de vidage.
m_bTerminate Indicateur qui spécifie si le thread doit se terminer.
m_bSendAnyway Indicateur pour remplacer le traitement par lots.
m_hr Valeur HRESULT qui indique si l’objet accepte des exemples.
m_hEventPop Événement signalé chaque fois que l’objet supprime un exemple de la file d’attente.
Méthodes protégées Description
InitialThreadProc Appelle la méthode COutputQueue::ThreadProc lors de la création du thread.
ThreadProc Récupère des exemples de la file d’attente et les remet à la broche d’entrée.
IsQueued Détermine si l’objet utilise un thread de travail pour fournir des exemples.
QueueSample Met en file d’attente un exemple multimédia ou un message de contrôle.
IsSpecialSample Détermine si les données mises en file d’attente sont un message de contrôle.
FreeSamples Libère tous les exemples en attente.
NotifyThread Avertit le thread que la file d’attente contient des données.
Méthodes publiques Description
COutputQueue Méthode du constructeur.
~COutputQueue Méthode de destructeur.
BeginFlush Commence une opération de vidage.
EndFlush Met fin à une opération de vidage.
EOS Remet un appel de fin de flux à la broche d’entrée.
SendAnyway Fournit tous les exemples en attente.
NewSegment Fournit un nouveau segment à la broche d’entrée.
Recevoir Fournit un exemple de média à la broche d’entrée.
ReceiveMultiple Fournit un lot d’exemples multimédias à la broche d’entrée.
Réinitialiser Réinitialise l’objet afin qu’il puisse recevoir plus de données.
IsIdle Détermine si l’objet attend des données.
SetPopEvent Spécifie un événement signalé chaque fois que l’objet supprime un exemple de la file d’attente.

Configuration requise

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