Compartilhar via


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.