Partager via


Modifications de format dynamique

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngineet audio/vidéo capture dans 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 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 conviennent d’un type de média, qui décrit le format des données que le filtre en 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 bascule les types de supports, il est appelé 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 ces 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 graphique 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 épingles même si le graphique est actif (en cours d’exécution ou suspendu). Pour plus d’informations sur ce mécanisme, consultez de reconnexion dynamique.

Sinon, si le graphique est actif, mais que les filtres en question ne prennent pas en charge les reconnexions de broche dynamique, il existe trois mécanismes possibles pour modifier le format :

  • queryAccept (en aval) est utilisé lorsqu’une broche de sortie propose une modification de format de 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 en amont. Le nouveau format peut être de la même taille, ou il peut être plus grand.
  • ReceiveConnection est utilisé lorsqu’une broche de sortie propose une modification de format à son homologue en aval, et le nouveau format nécessite une mémoire tampon plus grande.

gestion des modifications de format de l' video Renderer