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.]
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 |
|
Bibliothèque |
|