Partager via


Synchronisation du VMR avec le taux d’actualisation du moniteur

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

Dans de rares scénarios, vous pouvez synchroniser précisément le rendu vidéo avec le taux d’actualisation du moniteur, de sorte qu’une nouvelle image exactement soit présentée chaque fois que le moniteur est actualisé. Le moyen le plus fiable pour ce faire consiste à créer un présentateur-allocator personnalisé qui utilise une opération de retournement au lieu d’une opération de fente pour écrire les bits vidéo dans la surface primaire. « Flip » est appelé chaque fois que le moniteur s’actualise. Par conséquent, si votre flux vidéo ne contient pas d’horodatages, le VMR s’affiche aussi rapidement que possible sur la surface primaire, mais la surface bloque le flux jusqu’à ce que l’opération Flip se termine. Cela signifie que, tant que le processeur n’est pas surchargé, l’image suivante est toujours en attente dans la surface primaire chaque fois que le moniteur s’actualise. Toutefois, si un autre processus gourmand en ressources processeur est en cours d’exécution, votre thread de streaming DirectShow risque d’affamer votre thread de streaming DirectShow de sorte qu’il ne peut pas fournir des images vidéo assez rapidement à la surface primaire.

Mode de lecture sans rendu VMR (Allocator-Présentateurs personnalisés)