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.