Filtre du mixeur de superposition

[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 Overlay Mixer est un convertisseur vidéo conçu spécifiquement pour la lecture de DVD et la diffusion de flux vidéo avec sous-titrage à la ligne 21. Overlay Mixer prend également en charge les extensions de port vidéo (VPE), ce qui lui permet de fonctionner avec des décodeurs matériels MPEG-2 ou des tuners tv analogiques qui envoient de la vidéo directement aux carte graphiques, plutôt que sur le bus PCI.

Notes

Le convertisseur de mixage vidéo 9 est désormais préféré au filtre Overlay Mixer, sauf dans les scénarios VPE.

 

Le mélangeur de superposition utilise DirectDraw pour le rendu. Elle nécessite une surface de superposition sur le carte graphique. Le flux vidéo principal doit être connecté à l’épingle 0. Les flux secondaires (sous-images légende graphiques ou DVD fermés) sont connectés aux broches 1 et supérieures. Le mélangeur overlay blit les flux secondaires directement sur la suface primaire; il ne les mélange pas ou les mélange alpha.

Le mélangeur de superposition utilise le convertisseur vidéo pour la gestion des fenêtres. Le convertisseur vidéo se connecte à la broche de sortie du mélangeur de superposition.

Ce filtre est automatiquement ajouté au graphique de filtre lorsque les applications utilisent les interfaces IDvdGraphBuilder et ICaptureGraphBuilder2 pour créer le graphe. Le Gestionnaire de graphiques de filtres n’ajoute pas automatiquement le mélangeur de superposition au graphique.

Notes

Dans le tableau suivant, les sous-types de média acceptés sur la broche d’entrée 0 dépendent du matériel. Le mélangeur de superposition ne peut pas déterminer si un sous-type particulier est pris en charge tant qu’il n’a pas créé la surface DirectDraw. Par conséquent, la seule façon pour un filtre amont de déterminer si un sous-type est pris en charge consiste à tenter une connexion avec ce sous-type.

 

Étiquette Valeur
Interfaces de filtre IAMOverlayFX, IAMVideoDecimationProperties, IBaseFilter, IDDrawExclModeVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IMixerOCX, IQualProp, IVPNotify, IVPNotify, IVPNotify2
Types de supports de broche d’entrée Type principal : MEDIATYPE_Video
Sous-types:
  • MEDIASUBTYPE_Overlay (broche 0 uniquement)
  • Formats YUV DirectDraw (broche 0 uniquement)
  • Formats d’accélération vidéo DirectDraw (épingle 0 uniquement)
  • Formats RVB DirectDraw (toutes les broches d’entrée)
Types de format :
  • Format_VIDEOINFO
  • Format_VIDEOINFO2
Interfaces de broche d’entrée IAMVideoAccelerator, IKsPin, IKsPropertySet, IMemInputPin, IMixerPinConfig, IMixerPinConfig2, IOverlay (broche 0 uniquement), IPin, IPinConnection, IQualityControl, IVPNotify, IVPNotify, IVPNotify2
Types de supports de broche de sortie MEDIATYPE_Video, MEDIASUBTYPE_Overlay
Interfaces de broche de sortie IMediaPosition, IMediaSeeking, IPin, IQualityControl
Filtrer le CLSID CLSID_OverlayMixer
CLSID page de propriétés Aucune page de propriétés.
Exécutable qdvd.dll
Mérite MERIT_DO_NOT_USE
Catégorie de filtre CLSID_LegacyAmFilterCategory

 

Notes

Le mélangeur de superposition utilise la touche de couleur de destination pour mélanger des surfaces vidéo avec des superpositions. Il renvoie la clé de couleur et la vidéo secondaire à la surface primaire, puis envoie la vidéo primaire à la surface de superposition. Les graphiques carte ensuite composites les deux surfaces dans leur mémoire tampon de trame.

Pour tester si le pilote graphique prend en charge la superposition matérielle, appelez IDirectDraw7::GetCaps. Si le champ dwMaxVisibleOverlays dans la structure DDCAPS est supérieur à zéro, le pilote prend en charge la superposition matérielle.

Les applications peuvent contrôler certains comportements sur overlay Mixer via l’interface IMixerPinConfig2 . Les développeurs de jeux peuvent utiliser overlay Mixer pour afficher la vidéo en mode exclusif DirectDraw, comme décrit plus loin dans cette section. Le filtre de rendu de mixage vidéo 9 (VMR-9) offre désormais une meilleure prise en charge de la vidéo dans les jeux. Pour plus d’informations, consultez Utilisation du convertisseur de mixage vidéo.

Les informations suivantes sont fournies à l’avantage des développeurs de filtres et des développeurs de jeux qui souhaitent utiliser overlay Mixer en mode exclusif DirectDraw.

Superposer les opérations internes du mixer

Le mélangeur de superposition expose une broche d’entrée pour chaque flux entrant. En règle générale, il existe trois broches d’entrée : épingle 0 pour les données vidéo, et épingles 1 et 2 pour les données de sous-image de ligne 21 et DVD. En interne, overlay Mixer crée un objet DirectDraw avec une surface primaire comprenant l’ensemble du bureau, ainsi qu’une surface de superposition dont le rectangle est défini par la taille du flux vidéo sur l’épingle 0. Si le décodeur ne spécifie pas de clé de couleur, le mélangeur de superposition utilise des touches de couleur par défaut : gris foncé pour les cartes graphiques plus récentes et magenta pour les cartes de 256 couleurs plus anciennes.

Notes

Les résultats ne sont pas définis si le décodeur fournit deux flux vidéo secondaires simultanément au même endroit sur la surface de superposition. (Cela se produit parfois avec des DVD qui contiennent des flux de sous-image et de ligne 21.) La vidéo peut scintiller ou afficher un seul des flux.

 

Sur Windows Vista ou version ultérieure, le mélangeur de superposition désactive la composition du Gestionnaire de fenêtres de bureau (DWM) si le pilote d’affichage prend en charge la superposition matérielle. Les applications doivent éviter d’utiliser le filtre Overlay Mixer ; utilisez le VMR-9 ou le convertisseur vidéo amélioré (EVR) à la place.

Connexion en amont avec le décodeur vidéo

En règle générale, les broches d’entrée du mélangeur de superposition se connectent à un décodeur vidéo amont. Le flux vidéo principal doit se connecter à l’épingle 0. Les flux de ligne 21 ou de sous-image se connectent à la broche 1 ou supérieure. Si le décodeur est un décodeur logiciel qui utilise exclusivement le processeur hôte, la connexion entre le décodeur et le code pin 0 est une connexion IMemInputPin . Si le décodeur utilise l’accélération matérielle, la connexion à pin 0 doit utiliser l’inférence IAMVideoAccelerator . Ces deux types de connexions s’excluent mutuellement.

Si le décodeur dessine directement sur la surface de superposition, il doit utiliser l’interface IOverlay sur la broche 0 et implémenter l’interface IOverlayNotify .

Les filtres qui encapsulent un décodeur matériel et se connectent à Overlay Mixer via un port vidéo doivent implémenter l’interface IVPConfig . Overlay Mixer implémente l’interface IVPNotify . Ces deux interfaces permettent au décodeur de spécifier les surfaces de superposition dont il a besoin, et permettent au mélangeur de superposition d’informer le décodeur de l’emplacement de ces surfaces dans la mémoire vidéo.

Le mélangeur de superposition garantit également que le rectangle vidéo est correctement mis à l’échelle. La capture vidéo implique certains problèmes liés à la mise à l’échelle de l’image d’aperçu et à la capture de trames vidéo entrelacées. Si vous développez un filtre ou un pilote WDM pour un périphérique de capture vidéo matériel, reportez-vous aux pages de référence IVPConfig et IVPNotify pour plus d’informations sur ces sujets.

Le mélangeur de superposition n’est pas utilisé dans les scénarios de capture 1394 ou USB. Il est utilisé dans la capture vidéo sur le bus PCI.

Connexion en aval avec le convertisseur vidéo

Le mélangeur de superposition a une broche de sortie qui se connecte au filtre Video Renderer . Dans ce cas, le convertisseur vidéo ne rend pas la vidéo ; il gère simplement la fenêtre vidéo.

La connexion d’épingle utilise l’interface IOverlay plutôt que l’interface IMemInputPin . Le convertisseur vidéo transmet sa poignée de fenêtre via overlay Mixer à DirectDraw, qui gère le découpage du rectangle. Les applications peuvent contrôler le convertisseur vidéo via les interfaces IVideoWindow et IBasicVideo2 sur le Gestionnaire de graphe de filtres.

Mode exclusif DirectDraw

Le mode exclusif DirectDraw de Overlay Mixer permet aux jeux d’afficher des vidéos sur une partie de l’écran. Dans ce mode, le mélangeur de superposition restitue la vidéo directement sur une surface DirectDraw créée par l’application de jeu, plutôt que dans une fenêtre fournie par le convertisseur vidéo. Cela permet aux jeux de contrôler la touche de couleur. Le mélangeur overlay n’expose qu’une seule broche d’entrée en mode exclusif DirectDraw, ce qui signifie qu’aucun mixage de la sous-image line 21 ou DVD ne peut être effectué dans ce mode.

Pour utiliser le mélangeur de superposition en mode exclusif DirectDraw, créez un instance du mélangeur de superposition et interrogez-le pour l’interface IDDrawExclModeVideo avant de créer le graphe de filtre. Appelez ensuite IDDrawExclModeVideo::SetDDrawSurface pour spécifier la surface DirectDraw pour le rendu. Une limitation importante de ce mode est que le jeu n’a pas accès aux bits vidéo réels. Si vous utilisez IDDrawExclModeVideo, votre application crée la surface primaire et le mélangeur de superposition crée la surface de superposition.

Vous pouvez également utiliser le mode exclusif DirectDraw pour effectuer un rendu sans fenêtre (par exemple, dans une page web), mais cela n’est pas recommandé, car le mélangeur overlay n’effectue pas de mixage dans ce mode. Cela signifie qu’aucune donnée de ligne 21 ou de sous-image ne peut être affichée.

Filtres DirectShow