Partager via


Avantages des DMO

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

Les DMO offrent les avantages suivants :

  • Ils sont généralement plus petits et plus simples que les filtres DirectShow, car ils prennent en charge moins de fonctionnalités.
  • Ils sont plus flexibles que les filtres DirectShow, car ils ne nécessitent pas de graphique de filtre. Vous pouvez les utiliser avec DirectShow lorsque vous avez besoin des services que DirectShow fournit, tels que la synchronisation, la connexion intelligente, la gestion automatique du flux de données et la gestion des threads. Les clients qui n’ont pas besoin de ces services peuvent accéder directement aux DMO.
  • Les DMO effectuent toujours un traitement synchrone des données, ce qui élimine la plupart des problèmes de thread que vous devez prendre en compte si vous écrivez un filtre.
  • Contrairement aux codecs ACM et VCM traditionnels, les DMO sont basés sur le modèle COM (Component Object Model), de sorte qu’ils peuvent être étendus via QueryInterface.
  • Les DMO prennent en charge un modèle de diffusion en continu plus généralisé que les codecs ACM ou VCM. Comme les filtres DirectShow, les DMO peuvent prendre en charge plusieurs entrées et plusieurs sorties.

Pour ces raisons, les DMO sont désormais recommandés comme solution pour écrire des encodeurs, des décodeurs et des effets audio. De nombreux autres scénarios sont également possibles, en fonction des besoins de l’application.

Différences entre les DMO et les filtres DirectShow

Les filtres DirectShow ne peuvent pas fonctionner en dehors d’un graphique de filtre DirectShow. Dans DirectShow, le Gestionnaire de graphe de filtre est intermédiaire entre l’application et les filtres. Les filtres DirectShow effectuent la majeure partie du travail requis pour diffuser des données, notamment :

  • Allocation de mémoires tampons.
  • Négociation des types de médias et des connexions à d’autres filtres.
  • Envoi de données via le graphique de filtre.
  • Envoi d’événements au Gestionnaire de graphe de filtres.
  • Synchronisation de plusieurs threads.

En revanche, un DMO ne fait rien de tout cela. Au lieu de cela, ces types de tâches sont de la responsabilité du client qui utilise le DMO. Le client alloue des mémoires tampons, les remplit de données et les remet au DMO. Le DMO traite les données et le client récupère les mémoires tampons de sortie résultantes.

À propos des DMO