Threads et sections critiques
[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.]
Cette section décrit le threading dans les filtres DirectShow et les étapes à suivre pour éviter les blocages ou les blocages dans un filtre personnalisé.
Les exemples de cette section utilisent un pseudo-code pour illustrer le code que vous devez écrire. Ils supposent qu’un filtre personnalisé utilise des classes dérivées des classes de base DirectShow, comme suit :
- CMyInputPin : dérivé de CBaseInputPin.
- CMyOutputPin : dérivé de CBaseOutputPin.
- CMyFilter : dérivé de CBaseFilter.
- CMyInputAllocator : allocator de la broche d’entrée, dérivé de CMemAllocator. Tous les filtres n’ont pas besoin d’un allocateur personnalisé. Pour de nombreux filtres, la classe CMemAllocator est suffisante.
Cette section contient les rubriques suivantes :
- Threads de streaming et d’application
- Suspension
- Réception et livraison d’échantillons
- Livraison de la fin du flux
- Vidage des données
- En cours d’arrêt
- Obtention de mémoires tampons
- Threads de diffusion en continu et gestionnaire de graphe de filtre
- Résumé du threading de filtre
Rubriques connexes