Partilhar via


Sobre o Gerenciador de Grafo de Filtro

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O Gerenciador de Grafo de Filtro é um objeto COM que controla os filtros em um grafo de filtro. Ele executa muitas funções, incluindo as seguintes:

  • Coordenando alterações de estado entre os filtros.
  • Estabelecendo um relógio de referência.
  • Comunicando eventos de volta ao aplicativo.
  • Fornecendo métodos para aplicativos criarem o grafo de filtro.

Cada uma dessas funções é descrita brevemente aqui. Os detalhes podem ser encontrados em outro lugar na documentação.

Alterações de estado. As alterações de estado nos filtros devem ocorrer em uma ordem específica. Portanto, o aplicativo não emite comandos de alteração de estado diretamente para os filtros. Em vez disso, ele fornece um único comando para o Gerenciador de Grafo de Filtro, que distribui o comando para cada um dos filtros. Buscar funciona de maneira semelhante: o aplicativo fornece um comando seek para o Gerenciador de Grafo de Filtro, que o distribui para os filtros.

Relógio de referência. Todos os filtros no grafo usam o mesmo relógio, chamado de relógio de referência. O relógio de referência garante que todos os fluxos sejam sincronizados. A hora em que um quadro de vídeo ou amostra de áudio deve ser renderizado é chamado de hora da apresentação. O tempo de apresentação é medido em relação ao relógio de referência. O Gerenciador de Grafo de Filtro escolhe um relógio de referência, geralmente o relógio no cartão de som ou o relógio do sistema.

Eventos de grafo. O Gerenciador de Grafo de Filtro usa uma fila de eventos para informar a aplicação de eventos que ocorrem no grafo de filtro. Esse mecanismo é semelhante a um loop de mensagem do Windows.

Métodos de criação de grafo. O Gerenciador de Grafo de Filtro fornece métodos para o aplicativo adicionar filtros ao grafo, conectar filtros a outros filtros e desconectar filtros.

Uma função que o Gerenciador de Grafo de Filtro não manipula é mover dados de um filtro para o outro. Isso é feito pelos próprios filtros, por meio de suas conexões de pino. O processamento sempre acontece em um thread separado.

Observação

Os filtros são sempre de thread livre, residem no mesmo processo que o Gerenciador de Grafo de Filtro e são carregados de servidores em processo. Portanto, as chamadas de método não têm marshaling entre filtros ou entre filtros e o Gerenciador de Grafo de Filtro.

 

Fluxo de Dados no Grafo de Filtro

Notificação de eventos no DirectShow

Definindo o relógio do grafo

Hora e relógios no DirectShow