Modifications de format dynamique

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

Lorsque deux filtres se connectent, ils s’accordent sur un type de média, qui décrit le format des données que le filtre amont fournira. Dans la plupart des cas, le type de média est fixe pendant la durée de la connexion. Toutefois, DirectShow offre une prise en charge limitée des filtres pour modifier le type de média. Lorsqu’un filtre change de type multimédia, il s’agit d’un changement de format dynamique. Si vous écrivez un filtre DirectShow, vous devez connaître les mécanismes de modification de format dynamique. Même si votre filtre ne prend pas en charge de telles modifications, il doit répondre correctement si un autre filtre demande un nouveau format.

DirectShow définit plusieurs mécanismes distincts pour les modifications de format dynamique, en fonction de l’état du graphe de filtre et du type de modification requis.

  • Si le graphique est arrêté, les broches peuvent se reconnecter et renégocier le type de média. Pour plus d’informations, consultez Reconnecting Pins.
  • Certains filtres peuvent reconnecter des broches même si le graphique est actif (en cours d’exécution ou en pause). Pour plus d’informations sur ce mécanisme, consultez Reconnexion dynamique.

Sinon, si le graphe est actif, mais que les filtres en question ne prennent pas en charge les reconnexions d’épingles dynamiques, il existe trois mécanismes possibles pour modifier le format :

  • QueryAccept (en aval) est utilisé lorsque si une broche de sortie propose un changement de format à son homologue en aval, mais uniquement si le nouveau format ne nécessite pas de mémoire tampon plus grande.
  • QueryAccept (amont) est utilisé lorsqu’une broche d’entrée propose une modification de format à son homologue amont. Le nouveau format peut avoir la même taille, ou il peut être plus grand.
  • ReceiveConnection est utilisé lorsqu’une broche de sortie propose un changement de format à son homologue en aval et que le nouveau format nécessite une mémoire tampon plus grande.

Gestion des modifications de format à partir du convertisseur vidéo