Share via


VMR avec plusieurs flux (mode mixage)

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

Le VMR peut restituer plusieurs flux d’entrée. Dans cette configuration, appelée mode mixage, le vmR charge son mélangeur et son compositeur pour effectuer le mélangeur et le mélangeur avant le rendu. Le mode mixage peut être utilisé tant que le vmR est en mode fenêtré ou en mode sans fenêtre.

Le mode mixage nécessite que le pilote graphique prenne en charge les indicateurs de capacité DDCAPS_BLTFOURCC et DDCAPS_BLTSTRETCH (respectivement la conversion de l’espace de couleur et le blitting étiré). Presque tous les nouveaux pilotes graphiques ont ces fonctionnalités. En outre, le pilote doit prendre en charge la création de cibles de rendu Direct3D pour la profondeur de pixels d’affichage actuelle. Certains appareils ne prennent pas en charge les opérations Direct3D lorsque l’affichage est défini sur 24 bits par pixel. Pour plus d’informations, consultez la documentation du Kit de développement logiciel (SDK) Graphiques DirectX.

Notes

Lorsque le VMR mélange plusieurs flux vidéo, le graphe de filtre ne recherche pas correctement. Si vous devez rechercher plusieurs flux vidéo, vous devez créer des graphiques de filtre distincts qui partagent le même objet d’allocator-présentateur personnalisé.

 

Configuration de VMR-7 pour plusieurs flux

Pour afficher plusieurs flux d’entrée avec VMR-7, procédez comme suit :

  1. Avant de connecter l’une des broches d’entrée de VMR, appelez la méthode IVMRFilterConfig::SetNumberOfStreams avec le nombre de flux. Cela oblige le vmR à charger le mélangeur et le compositeur et à créer le nombre spécifié de broches d’entrée.
  2. Appelez IVMRFilterConfig::SetRenderingPrefs pour spécifier différentes préférences de rendu.
  3. Connectez les broches aux filtres amont. Le moyen le plus simple d’effectuer cette opération consiste à appeler IGraphBuilder::RenderFile pour chaque flux d’entrée. Si la broche de sortie sur le filtre de amont (généralement un décodeur) et si la broche d’entrée sur la machine virtuelle ne peut pas convenir d’une connexion, une nouvelle instance du vmR avec les paramètres par défaut est créée. Cela entraîne une nouvelle fenêtre avec « ActiveMovie » dans la barre de titre. Pour éviter que cela ne se produise, l’application doit toujours vérifier que le bon instance du VMR est utilisé en appelant une méthode telle que IPin::ConnectedTo. Une autre option consiste à ajouter le filtre source, puis à connecter les broches à l’aide de IGraphBuilder::Connect.
  4. Utilisez l’interface IVMRMixerControl sur le VMR pour contrôler les paramètres de chaque flux, tels que la valeur alpha, l’ordre Z et le rectangle de sortie.
  5. Exécutez le graphique de filtre.

Configuration de VMR-9 pour plusieurs flux

Par défaut, vmR-9 crée quatre broches d’entrée. Si vous souhaitez mélanger plus de quatre flux vidéo, appelez IVMRFilterConfig9::SetNumberOfStreams avant de connecter des broches d’entrée. Utilisez l’interface IVMRMixerControl9 pour définir les paramètres de flux, tels que l’alpha, l’ordre Z et la position.

Utilisation du mode de mixage VMR