Relógios AVStream
Os filtros AVStream dão suporte a relógios em pinos.
Para indicar que um pino AVStream expõe um relógio, defina KSPIN_FLAG_IMPLEMENT_CLOCK no membro Flags do primeiro KSPIN_DESCRIPTOR_EX no membro PinDescriptors de KSFILTER_DESCRIPTOR.
Forneça também um ponteiro para uma estrutura de KSCLOCK_DISPATCH em KSPIN_DISPATCH.
Para fazer solicitações de relógio, use os métodos definidos na interface IKsReferenceClock . Você pode adquirir uma interface IKsReferenceClock chamando KsPinGetReferenceClockInterface. O minidriver AVStream é responsável por liberar a interface quando terminar.
Para obter valores de temporizador a serem colocados no campo PresentationTime de KSSTREAM_HEADER, chame IKsReferenceClock::GetCorrelatedTime.
Observe que o relógio nunca aparece no GraphEdit, mesmo que o relógio tenha sido selecionado.
Para verificar se o relógio foi selecionado, verifique se as chamadas para métodos IKsReferenceClock geram chamadas para rotinas de expedição especificadas em KSCLOCK_DISPATCH.
O gerenciador de grafo de filtro seleciona um relógio quando um grafo faz a transição para o estado de pausa. Qualquer filtro que seja uma fonte de push, por exemplo, um filtro de captura, recebe preferência como um provedor de relógio.