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.
Tópicos relacionados