Méthode CBaseRenderer.SourceThreadCanWait
[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.]
La SourceThreadCanWait
méthode conserve ou libère le thread de diffusion en continu.
Syntaxe
virtual HRESULT SourceThreadCanWait(
BOOL bCanWait
);
Paramètres
-
bCanWait
-
Valeur booléenne indiquant s’il faut contenir le thread de streaming. Si la valeur est TRUE, le thread de diffusion en continu est bloqué pendant que le filtre attend le rendu des exemples suivants. Si la valeur est FALSE, le thread de diffusion en continu est libéré.
Valeur renvoyée
Retourne S_OK.
Notes
L’appel de la SourceThreadCanWait
méthode avec la valeur FALSE force le filtre à retourner à partir d’un appel IMemInputPin::Receive bloqué. Lorsque le filtre est en cours d’exécution, il bloque recevoir les appels jusqu’à l’heure de présentation de l’exemple actuel. Lorsque le filtre est suspendu, il bloque les appels de réception indéfiniment. Ce comportement règle le flux de données dans le flux. Toutefois, lorsque le filtre est arrêté ou en cours de vidage, il ne doit pas se bloquer.
Le blocage est contrôlé par la méthode CBaseRenderer::WaitForRenderTime , qui attend deux événements : CBaseRenderer::m_RenderEvent et CBaseRenderer::m_ThreadSignal.
L’événement m_RenderEvent est signalé lorsque l’heure de présentation arrive.
L’événement m_ThreadSignal est signalé quand SourceThreadCanWait
est appelé avec la valeur FALSE. L’appel SourceThreadCanWait
avec la valeur TRUE réinitialise l’événement.
Les méthodes CBaseRenderer::Stop et CBaseRenderer::BeginFlush appellent SourceThreadCanWait
avec la valeur FALSE (libérant le thread de streaming). Les méthodes CBaseRenderer::P ause, CBaseRenderer::Run et CBaseRenderer::EndFlush appellent SourceThreadCanWait
avec la valeur TRUE.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête |
|
Bibliothèque |
|