Поделиться через


Фильтр диспетчера графов

[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи аудио и видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer, IMFMediaEngine и аудио-видеозахват в Media Foundation вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Диспетчер фильтров создает и управляет графами фильтров. Этот объект является центральным компонентом в DirectShow. Приложения используют его для создания и управления графами фильтров. Диспетчер фильтров также обрабатывает синхронизацию, уведомление о событиях и другие аспекты управления графом фильтров. Создайте этот объект путем вызова CoCreateInstance.

CLSID

Существует два CLSID для создания диспетчера графов фильтров:

CLSID Описание
CLSID_FilterGraph Создает диспетчер графов фильтра в общем рабочем потоке.
CLSID_FilterGraphNoThread Создает диспетчер графов фильтра в потоке приложения.

 

Как правило, приложения должны использовать CLSID_FilterGraph. Оба CLSID создают один и тот же объект, но используют разные модели потоков:

  • CLSID_FilterGraph создает диспетчер графов фильтров в рабочем потоке, который совместно используется всеми CLSID_FilterGraph экземплярами в рамках одного процесса. Поток отправляет сообщения, отправленные фильтрами, и управляет временем существования всех окон, созданных фильтрами.
  • CLSID_FilterGraphNoThread создает диспетчер графов фильтра в потоке приложения. При использовании этого CLSID поток, вызывающий CoCreateInstance, должен иметь цикл сообщений, который отправляет сообщения; в противном случае могут возникать взаимоблокировки. Кроме того, перед выходом потока приложения необходимо освободить диспетчер графов фильтров и все объекты графа (например, фильтры, закрепления, эталонные часы и т. д.).

Интерфейсы

Диспетчер графов фильтров предоставляет следующие интерфейсы:

объекты DirectShow