Compartilhar via


Gerenciador de Grafo de Filtro

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture na 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 no 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 Grafos de Filtro cria e controla grafos de filtro. Esse objeto é o componente central no DirectShow. Os aplicativos o usam para criar e controlar grafos de filtro. O Gerenciador do Grafo de Filtro também manipula a sincronização, a notificação de eventos e outros aspectos do controle do grafo de filtro. Crie esse objeto chamando CoCreateInstance.

CLSID

Há dois CLSIDs para criar o Gerenciador de Grafo de Filtro:

CLSID Descrição
CLSID_FilterGraph Cria o Gerenciador de Grafo de Filtro em um thread de trabalho compartilhado.
CLSID_FilterGraphNoThread Cria o Gerenciador de Grafo de Filtro no thread do aplicativo.

 

Em geral, os aplicativos devem usar CLSID_FilterGraph. Ambos os CLSIDs criam o mesmo objeto, mas usam modelos de threading diferentes:

  • CLSID_FilterGraph cria o Gerenciador de Grafo de Filtro em um thread de trabalho, que é compartilhado por todas as instâncias CLSID_FilterGraph dentro do mesmo processo. O thread despacha mensagens enviadas por filtros e controla o tempo de vida de todas as janelas criadas por filtros.
  • CLSID_FilterGraphNoThread cria o Gerenciador de Grafo de Filtro no thread do aplicativo. Se você usar esse CLSID, o thread que chama CoCreateInstance deverá ter um loop de mensagem que expedi mensagens; caso contrário, deadlocks podem ocorrer. Além disso, antes que o thread do aplicativo saia, ele deve liberar o Gerenciador de Grafo de Filtro e todos os objetos de grafo (como filtros, pinos, relógios de referência e assim por diante).

Interfaces

O Gerenciador de Grafos de Filtro expõe as seguintes interfaces:

  • IAMGraphStreams
  • IAMStats
  • IBasicAudio
  • IBasicVideo
  • IBasicVideo2
  • IFilterChain
  • do IFilterGraph
  • IFilterGraph2
  • IFilterGraph3
  • IFilterMapper2
  • IGraphBuilder
  • IGraphConfig
  • IGraphVersion
  • IMediaControl
  • IMediaEvent
  • IMediaEventEx
  • IMediaEventSink
  • IMediaFilter
  • IMediaPosition
  • IMediaSeeking
  • IQueueCommand
  • IRegisterServiceProvider
  • IResourceManager
  • IServiceProvider
  • IVideoFrameStep
  • IVideoWindow

objetos DirectShow