Partager via


Nouveaux segments

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

Un segment est un groupe d’exemples multimédias qui partagent une heure de début, une heure d’arrêt et un taux de lecture communs. La méthode IPin ::NewSegment signale le début d’un nouveau segment. Il permet à un filtre source d’informer les filtres en aval que les informations de temps et de débit ont changé. Par exemple, si le filtre source recherche un nouveau point dans le flux, il appelle NewSegment avec l’heure de début.

Certains filtres en aval utilisent les informations de segment lorsqu’ils traitent des exemples. Par exemple, dans un format qui utilise la compression interframe, si le temps d’arrêt tombe sur une trame delta, le filtre source peut avoir besoin d’envoyer des exemples supplémentaires après l’heure d’arrêt. Cela permet au décodeur de décoder le cadre delta final. Pour déterminer la trame finale correcte, le décodeur fait référence au temps d’arrêt du segment. Comme autre exemple, les convertisseurs audio utilisent le taux de segment ainsi que le taux d’échantillonnage audio pour générer la sortie audio correcte.

Dans le modèle push, le filtre source lance l’appel NewSegment. Dans le modèle d’extraction, cela est effectué par le filtre d’analyseur. Dans les deux cas, les appels de filtre NewSegment sur la broche d’entrée en aval, qui propage l’appel au filtre suivant, jusqu’à ce que l’appel atteigne le renderer. Les filtres doivent sérialiser nouveaux appels avec d’autres appels de streaming, tels que IMemInputPin ::Receive.

Le temps de flux est réinitialisé à zéro après chaque nouveau segment. Horodatages sur les échantillons remis après le début du segment à partir de zéro.