Utiliser le filtre EVR DirectShow

[Le composant décrit sur cette page, Convertisseur vidéo amélioré, est une fonctionnalité héritée. Il a été remplacé par le Convertisseur vidéo simple (SVR) exposé à travers les composants MediaPlayer et IMFMediaEngine. Pour lire du contenu vidéo, vous devez envoyer des données dans l’un de ces composants et les autoriser à instancier le nouveau convertisseur vidéo. Ces composants ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement, dans la mesure du possible, que le nouveau code utilise MediaPlayer ou les API de bas niveau IMFMediaEngine pour lire des médias vidéo dans Windows au lieu de l’EVR. Microsoft recommande, si possible, la réécriture du code existant qui utilise les API héritées pour être à jour avec les nouvelles API.]

Pour créer le filtre du convertisseur vidéo amélioré (EVR) amélioré, appelez CoCreateInstance. Le CLSID est CLSID_EnhancedVideoRenderer, défini dans uuids.h. Vous n’avez pas besoin d’appeler MFStartup ou MFShutdown pour utiliser le filtre EVR.

Pour plus d’informations sur l’utilisation du filtre EVR dans une application DirectShow, consultez l’article Lecture audio/vidéo dans DirectShow.

Le filtre EVR commence par un repère d’entrée, qui correspond au flux de référence. Pour ajouter des repères pour les sous-flux, interrogez le filtre pour l’interface IEVRFilterConfig et appelez IEVRFilterConfig::SetNumberOf Flux. Appelez cette méthode avant de connecter des repères d’entrée. Le repère 0 est toujours le flux de référence. Connecter ce repère avant tout autre repère, car le format du flux de référence peut limiter les formats de sous-flux disponibles.

Avant de démarrer le graphique, définissez la fenêtre de découpage vidéo et le rectangle de destination. Pour plus d’informations, consultez l’article Utilisation des contrôles d’affichage vidéo.

Contrairement au convertisseur de mixage vidéo (VMR), l’EVR ne propose pas de modes opérationnels (fenêtré, sans fenêtre, etc.). En particulier :

  • L’EVR ne prend pas en charge le mode fenêtré. L’application doit fournir la fenêtre de découpage.
  • L’EVR n’a pas de mode sans rendu. Pour remplacer le présentateur par défaut, appelez IMFVideoRenderer::InitializeRenderer.
  • L’EVR n’a pas de mode de mixage. L’EVR crée toujours le mélangeur. Si vous avez un flux d’entrée, il n’est pas nécessaire d’appeler SetNumberOfStreams pour forcer l’EVR à utiliser le mélangeur.

Interfaces de filtre

Le filtre EVR expose les interfaces suivantes. Certaines de ces interfaces sont documentées dans le Kit de développement logiciel (SDK) DirectShow. Utilisez QueryInterface pour récupérer les pointeurs vers ces interfaces :

Interfaces de repère d’entrée

Les repères d’entrée sur le filtre EVR exposent les interfaces suivantes. Utilisez QueryInterface pour récupérer les pointeurs vers ces interfaces :

En outre, vous pouvez utiliser l’interface IMFGetService pour récupérer l’interface suivante :

Lecture audio/vidéo dans DirectShow

Convertisseur vidéo amélioré