Partager via


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
Renbase.h (include Streams.h)
Bibliothèque
Strmbase.lib (builds de vente au détail) ;
Strmbasd.lib (builds de débogage)

Voir aussi

CBaseRenderer, classe