Filtre du convertisseur vidéo

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

Le filtre Convertisseur vidéo est un convertisseur vidéo robuste et polyvalent.

Notes

Sur Windows XP et versions ultérieures, le convertisseur vidéo par défaut est le filtre de rendu de mixage vidéo 7 (VMR-7). VMR-7 et Video Renderer portent tous deux le nom convivial « Video Renderer ». Sur les plateformes antérieures, video renderer est le convertisseur par défaut. Consultez Choisir le convertisseur approprié.

 

Le convertisseur vidéo utilise DirectDraw et les surfaces de superposition, si la vidéo carte les prend en charge. Le Gestionnaire de graphe de filtres expose l’interface IVideoWindow , qui permet aux applications de définir et de récupérer des propriétés sur le convertisseur vidéo. Avec les cartes vidéo plus récentes, le convertisseur vidéo prend en charge le rendu en plein écran. Sinon, le Gestionnaire de graphe de filtre bascule automatiquement vers le filtre Renderer plein écran pour le mode plein écran. Pour plus d’informations, consultez IVideoWindow::p ut_FullScreenMode .

  • ![Important]

    Normalement, la fenêtre vidéo de ce filtre traite les messages sur un thread de travail créé par le Gestionnaire de graphe de filtre. Howerver, si une application crée directement le filtre à l’aide de CoCreateInstance, la fenêtre vidéo traite les messages sur le thread d’application. Dans ce cas, le thread d’application doit avoir une boucle de message pour distribuer des messages à la fenêtre vidéo. En outre, le thread ne doit pas se quitter avant l’appel final release au convertisseur vidéo, qui se produit lorsque le Gestionnaire de graphe de filtres s’arrête. Sinon, l’application risque d’être bloquée.

     

Étiquette Valeur
Interfaces de filtre IBaseFilter, IBasicVideo, IBasicVideo2, IDirectDrawVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IQualityControl, IQualProp, IVideoWindow
Types de supports de broche d’entrée Formats vidéo non compressés.
Interfaces de broche d’entrée IMemInputPin, IOverlay, IPin, IPinConnection, IQualityControl
Types de supports de broche de sortie Non applicable.
Interfaces de broche de sortie Non applicable.
Filtrer le CLSID CLSID_VideoRenderer
CLSID page de propriétés Aucune page de propriétés.
Exécutable quartz.dll
Mérite Windows XP et versions ultérieures : MERIT_UNLIKELY
Catégorie de filtre CLSID_LegacyAmFilterCategory

 

Notes

Dans la version de débogage de Quartz.dll, si le niveau de débogage LOG_TRACE est défini sur 5 ou supérieur, le convertisseur vidéo affiche les horodatages de chaque image dans la fenêtre vidéo. Ces numéros n’apparaissent pas dans la version commerciale de la DLL. Pour plus d’informations, consultez Déboguer des fonctions de sortie.

Les remarques suivantes sont destinées aux développeurs de filtres :

Le convertisseur vidéo accepte les formats YUV si le graphique vidéo carte prend en charge les surfaces de superposition YUV. Toutefois, lorsqu’il se connecte pour la première fois au filtre amont, le convertisseur vidéo nécessite un format RVB qui correspond à la profondeur de couleur des paramètres du moniteur actuel. Par exemple, si le paramètre d’affichage actuel est de couleur 24 bits, le filtre amont doit être en mesure de fournir une vidéo RVB 24 bits. Lorsque le graphique de filtre passe à un état d’exécution, le convertisseur vidéo négocie un changement de format dynamique vers l’espace de couleurs YUV approprié.

En se connectant avec un type RVB, le convertisseur vidéo garantit qu’il peut utiliser GDI au cas où DirectDraw n’est pas disponible. Il bascule vers GDI si une autre application utilise la mémoire vidéo, si le rectangle vidéo chevauche deux moniteurs sur un système à plusieurs moniteurs, ou si le rectangle vidéo est complètement masqué par une autre fenêtre.

Remarque

Le convertisseur de mixage vidéo n’effectue pas ce type de modification de format dynamique et ne nécessite pas de type de média RVB, car il n’utilise jamais GDI pour le rendu.

 

Pour négocier une modification de format, le convertisseur vidéo appelle IPin::QueryAccept avec le nouveau type de média. Si le filtre amont retourne S_OK, le convertisseur vidéo attache le nouveau média à l’exemple suivant. Le filtre amont doit appeler IMediaSample::GetMediaType sur chaque exemple. Si GetMediaType renvoie une valeur non NULL, il indique un changement de format et le filtre amont doit répondre en changeant de type de sortie. (Ne changez pas de type dans la méthode QueryAccept.) Le filtre amont doit accepter au moins les principaux types RVB et, dans l’idéal, doit prendre en charge les types YUV courants. Pendant la diffusion en continu, le convertisseur vidéo peut basculer entre les types YUV et RVB à tout moment. Le convertisseur vidéo n’accepte pas les modifications de format dynamique initiées par le filtre amont.

Lorsque le convertisseur vidéo dessine sur une surface de superposition DirectDraw, il alloue une seule mémoire tampon pour sa broche d’entrée. Si le filtre amont tente de forcer une connexion à l’aide de plusieurs mémoires tampons, le convertisseur vidéo ne peut pas utiliser la surface de superposition.

Filtres DirectShow