Partager via


Transports

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

Pour déplacer des données multimédias via le graphe de filtre, un filtre DirectShow doit prendre en charge l’un des protocoles possibles. Ces protocoles sont appelés transports. Lorsque deux filtres se connectent, ils doivent prendre en charge le même transport ; sinon, ils ne peuvent pas échanger de données multimédias. En règle générale, un transport nécessite que l’une des broches prend en charge une interface particulière. Lorsque les filtres se connectent, une broche interroge l’autre pour l’interface.

La plupart des filtres DirectShow contiennent des données multimédias dans main mémoire et les distribuent à d’autres filtres entre les connexions de broches. Ce type de transport est appelé transport de mémoire locale. Bien que le transport de la mémoire locale soit le transport le plus courant dans DirectShow, tous les filtres ne l’utilisent pas. Par exemple, certains filtres envoient des données multimédias le long d’un chemin d’accès matériel et utilisent des broches uniquement pour fournir des informations de contrôle. Par exemple, consultez l’interface IOverlay .

DirectShow définit deux mécanismes pour le transport de la mémoire locale, le modèle push et le modèle d’extraction. Dans le modèle push, un filtre source génère des données et les remet au filtre suivant en aval. Ce filtre reçoit passivement les données, les traite et les envoie plus loin en aval. Dans le modèle d’extraction, le filtre source est connecté à un filtre d’analyseur. Le filtre de l’analyseur demande des données à partir du filtre source. Le filtre source répond aux demandes en fournissant des données. Le modèle push utilise l’interface IMemInputPin et le modèle pull utilise l’interface IAsyncReader .

Le modèle push est plus courant que le modèle d’extraction. Par conséquent, les articles qui suivent supposent un modèle push. Le dernier article de cette section, Pull Model, décrit comment l’interface IAsyncReader diffère d’IMemInputPin.

Data Flow dans le graphe de filtre