Partager via


Horloges AVStream

Les filtres AVStream prennent en charge les horloges sur les broches.

Pour indiquer qu’une broche AVStream expose une horloge, définissez KSPIN_FLAG_IMPLEMENT_CLOCK dans le membre Flags du premier KSPIN_DESCRIPTOR_EX dans le membre PinDescriptors de KSFILTER_DESCRIPTOR.

Fournissez également un pointeur vers une structure KSCLOCK_DISPATCH dans KSPIN_DISPATCH.

Pour effectuer des demandes d’horloge, utilisez les méthodes définies sur l’interface IKsReferenceClock . Vous pouvez acquérir une interface IKsReferenceClock en appelant KsPinGetReferenceClockInterface. Le minidriver AVStream est chargé de libérer l’interface une fois terminé.

Pour obtenir des valeurs du minuteur à placer dans le champ PresentationTime de KSSTREAM_HEADER, appelez IKsReferenceClock::GetCorrelatedTime.

Notez que l’horloge n’apparaît jamais dans GraphEdit, même si l’horloge a été sélectionnée.

Pour vérifier que l’horloge a été sélectionnée, vérifiez que les appels aux méthodes IKsReferenceClock génèrent des appels pour distribuer les routines spécifiées dans KSCLOCK_DISPATCH.

Le gestionnaire de graphe de filtre sélectionne une horloge lorsqu’un graphique passe à l’état de pause. Tout filtre qui est une source push, pour instance un filtre de capture, est privilégié en tant que fournisseur d’horloge.