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


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

[Функция, связанная с этой страницей 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 создает диспетчер graph filter в потоке приложения. При использовании этого идентификатора CLSID поток, вызывающий CoCreateInstance , должен иметь цикл сообщений, который отправляет сообщения; в противном случае могут возникать взаимоблокировки. Кроме того, перед выходом потока приложения он должен освободить диспетчер graph filter и все объекты графа (например, фильтры, контакты, эталонные часы и т. д.).

Интерфейсы

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

Объекты DirectShow