Partager via


Messages de qualité

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

Les messages de qualité sont définis avec la structure Quality. Cette structure contient les membres suivants :

  • Type : défini par l’énumérationQualityMessageType ; soit famine, indiquant que le filtre reçoit trop peu de données, ou Flood, indiquant que le filtre reçoit trop de données.
  • Proportion : L’ajustement demandé dans le taux de données, à partir d’une base de référence de 1 000. Par exemple, 750 indique 75% et 1500 indique 150%.
  • en retard : heure de référence indiquant la retard de l’échantillon le plus récent arrivé. La valeur est négative si l’échantillon est arrivé tôt.
  • TimeStamp : l’horodatage sur l’exemple le plus récent.

Par exemple, supposons qu’un échantillon avec un horodatage de 240 millisecondes (ms) atteint le renderer à 280 ms, heure du flux. Le convertisseur crée un message de qualité de type Famine. L’échantillon est arrivé à 40 ms de retard, de sorte que le membre late est de 4 00000. (Toutes les heures de référence sont en unités de 100 nanosecondes.) Le membre TimeStamp est 2400000.

Pour le membre Proportion, le renderer peut utiliser une moyenne en cours d’exécution pour calculer la valeur. Peut-être que des échantillons arrivent à l’heure, et cet échantillon est une anomalie. Dans ce cas, le renderer ne peut demander qu’une petite correction. En revanche, si des échantillons sont constamment en retard, le renderer peut demander une correction plus importante.

Le contrôle de qualité est géré via l’interface IQualityControl. Il contient deux méthodes.

  • Notifier: envoie un message de qualité.
  • SetSink: spécifie un gestionnaire de qualité personnalisé.

Objet qui implémente IQualityControl reçoit des messages de qualité via sa méthode Notify. Il peut gérer le message ou transmettre le message à un autre objet. Si l’application appelle la méthode SetSink de l’objet, l’objet doit déléguer le contrôle de qualité au gestionnaire de qualité spécifié.